tizen_2.3.1 53/48953/1 tizen_2.3.1
authorjh0219.han <jh0219.han@samsung.com>
Fri, 2 Oct 2015 06:02:53 +0000 (15:02 +0900)
committerjh0219.han <jh0219.han@samsung.com>
Fri, 2 Oct 2015 06:02:53 +0000 (15:02 +0900)
Change-Id: Iac95c4bd14da818e627acc0e355be50f718015b0

332 files changed:
mobile/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf
mobile/config.xml
mobile/configure.ac
mobile/packaging/behavior.spec
mobile/res/html/wrtgeolocation.html [new file with mode: 0755]
mobile/res/html/wrtwebnotify.html [new file with mode: 0755]
mobile/tct-behavior-tests.spec
mobile/tests/CSP/index.html
mobile/tests/CSP/js/main.js
mobile/tests/CSP/res/script-src-eval-allow.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-allow.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-constructor-allow.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-constructor-allow.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-constructor-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-constructor-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-interval-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-interval-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-timeout-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-eval-timeout-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-allow.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-allow.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-with-uri-constructor.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-with-uri-constructor.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-with-uri.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-with-uri.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-without-uri.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-inline-without-uri.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-self-config-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-self-config-block.wgt [new file with mode: 0755]
mobile/tests/CSP/res/script-src-self-http-config-block.html [new file with mode: 0755]
mobile/tests/CSP/res/script-src-self-http-config-block.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/index.html
mobile/tests/DynamicBox/js/main.js
mobile/tests/DynamicBox/res/WebDynamicBox_1.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_10.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_106.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_114.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_13.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_17.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_18.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_19_3.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_2.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_20.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_21.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_22.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_25.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_27.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_28.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_30.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_37.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_39.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_41.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_44.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_45.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_45_1.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_55_4.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_55_5.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_65.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_66.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_7.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_75.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_8.wgt [new file with mode: 0755]
mobile/tests/DynamicBox/res/WebDynamicBox_9.wgt [new file with mode: 0755]
mobile/tests/PackageManagement/index.html
mobile/tests/Stability/res/test-half-memory.wgt
mobile/tests/WRTSupport/index.html
mobile/tests/WRTSupport/js/main.js
mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html [new file with mode: 0755]
mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt [new file with mode: 0755]
wearable/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf
wearable/circle.js [new file with mode: 0755]
wearable/config.xml
wearable/configure.ac
wearable/css/jquery.mobile.css
wearable/css/jquery.mobile2.css [new file with mode: 0755]
wearable/index.html
wearable/jquery-1.10.2.min.js [new file with mode: 0755]
wearable/js/main.js
wearable/js/tests.js
wearable/js/thirdparty/jquery.mobile.css [new file with mode: 0755]
wearable/packaging/behavior.spec
wearable/res/html/wrtgeolocation.html [new file with mode: 0755]
wearable/res/html/wrtwebnotify.html [new file with mode: 0755]
wearable/tct-behavior-tests.spec
wearable/tests/2D3DAnimation/index.html
wearable/tests/Accelerometer/index.html
wearable/tests/Alarm/index.html
wearable/tests/AppControl/index.html
wearable/tests/AppControl/res/app-control-complex-wgt.html
wearable/tests/AppControl/res/appcontrol-operation-wgt.html
wearable/tests/AppControlExtending/index.html
wearable/tests/AppControlExtending/res/app_control_custom.wgt
wearable/tests/AppControlExtending/res/app_control_regular.wgt
wearable/tests/ApplicationInvisible/index.html
wearable/tests/ApplicationLifecycle/index.html
wearable/tests/ApplicationLifecycle/res/lifecycle-background-foreground-nosevice.html
wearable/tests/ApplicationLifecycle/res/lifecycle-background-foreground-service.html
wearable/tests/ApplicationLifecycle/res/lifecycle-page-visibility-visibilitychange.html
wearable/tests/ApplicationLifecycle/res/lifecycle-powerfailure-reinstall.html
wearable/tests/CSP/index.html
wearable/tests/CSP/js/main.js
wearable/tests/CSP/res/csp-asterisk.html
wearable/tests/CSP/res/csp-asterisk.wgt
wearable/tests/CSP/res/csp-cross-origin.html
wearable/tests/CSP/res/csp-cross-origin.wgt
wearable/tests/CSP/res/csp-none.html
wearable/tests/CSP/res/csp-none.wgt
wearable/tests/CSP/res/csp-self.html
wearable/tests/CSP/res/csp-self.wgt
wearable/tests/CSP/res/default-policy-by-directives-csp.html
wearable/tests/CSP/res/default-policy-by-directives-csp.wgt
wearable/tests/CSP/res/default-policy-by-directives-report-only.html
wearable/tests/CSP/res/default-policy-by-directives-report-only.wgt
wearable/tests/CSP/res/default-src_asterisk.html
wearable/tests/CSP/res/default-src_asterisk.wgt
wearable/tests/CSP/res/default-src_cross_origin.html
wearable/tests/CSP/res/default-src_cross_origin.wgt
wearable/tests/CSP/res/default-src_none.html
wearable/tests/CSP/res/default-src_none.wgt
wearable/tests/CSP/res/default-src_self.html
wearable/tests/CSP/res/default-src_self.wgt
wearable/tests/CSP/res/sandbox-empty-ext.html
wearable/tests/CSP/res/sandbox-empty-ext.wgt
wearable/tests/CSP/res/sandbox-empty-inline.html
wearable/tests/CSP/res/sandbox-empty-inline.wgt
wearable/tests/CSP/res/sandbox-empty-int.html
wearable/tests/CSP/res/sandbox-empty-int.wgt
wearable/tests/CSP/res/sandbox-same-origin-allow-scripts.html
wearable/tests/CSP/res/sandbox-same-origin-allow-scripts.wgt
wearable/tests/CSP/res/script-src-eval-allow.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-allow.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-block.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-constructor-allow.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-constructor-allow.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-constructor-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-constructor-block.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-interval-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-interval-block.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-timeout-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-eval-timeout-block.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-allow.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-allow.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-block.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-with-uri-constructor.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-with-uri-constructor.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-with-uri.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-with-uri.wgt [new file with mode: 0644]
wearable/tests/CSP/res/script-src-inline-without-uri.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-inline-without-uri.wgt [new file with mode: 0755]
wearable/tests/CSP/res/script-src-self-config-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-self-config-block.wgt [new file with mode: 0644]
wearable/tests/CSP/res/script-src-self-http-config-block.html [new file with mode: 0755]
wearable/tests/CSP/res/script-src-self-http-config-block.wgt [new file with mode: 0644]
wearable/tests/CSP/res/script-src_inline_eval.html
wearable/tests/CSP/res/script-src_inline_eval.wgt
wearable/tests/CSP/res/script-src_none.html
wearable/tests/CSP/res/script-src_none.wgt
wearable/tests/CSP/res/style-src_self.html
wearable/tests/CSP/res/style-src_self.wgt
wearable/tests/CSS-AnimTransfBackgBordFont/index.html
wearable/tests/CSSAnimation/index.html
wearable/tests/CSSStyle/index.html
wearable/tests/Camera/index.html
wearable/tests/CameraViaUserMedia/index.html
wearable/tests/Canvas-PicRotaScaleTransfVampix/index.html
wearable/tests/ConfigurationExtension/index.html
wearable/tests/ConfigurationExtension/res/application-content.html
wearable/tests/ConfigurationExtension/res/setting-an-more.html
wearable/tests/ConfigurationExtension/res/setting-an-one.html
wearable/tests/ConfigurationExtension/res/setting-an-zero.html
wearable/tests/ConfigurationExtension/res/setting-ar-true.html
wearable/tests/ConfigurationExtension/res/setting-bs-disable.html
wearable/tests/ConfigurationExtension/res/setting-cm-disable.html
wearable/tests/ConfigurationExtension/res/setting-cm-enable.html
wearable/tests/ConfigurationExtension/res/setting-encrypt-disable.html
wearable/tests/ConfigurationExtension/res/setting-encrypt-enable.html
wearable/tests/ConfigurationExtension/res/setting-hwkey-default.html
wearable/tests/ConfigurationExtension/res/setting-hwkey-disable.html
wearable/tests/ConfigurationExtension/res/setting-hwkey-enable.html
wearable/tests/ConfigurationExtension/res/setting-install-location-internal-only-with-card.html
wearable/tests/ConfigurationExtension/res/setting-install-location-prefer-external-no-card.html
wearable/tests/ConfigurationExtension/res/setting-install-location-prefer-external-with-card.html
wearable/tests/DeviceAPISecurity/index.html
wearable/tests/DeviceAPISecurity/res/deviceapi-access-by-external.html
wearable/tests/DynamicBox/js/main.js
wearable/tests/DynamicBox/res/WebDynamicBox_1.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_10.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_106.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_114.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_13.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_17.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_18.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_19_3.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_2.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_20.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_21.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_22.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_25.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_27.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_28.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_30.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_37.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_39.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_41.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_44.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_45.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_45_1.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_55_4.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_55_5.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_65.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_66.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_7.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_75.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_8.wgt [new file with mode: 0755]
wearable/tests/DynamicBox/res/WebDynamicBox_9.wgt [new file with mode: 0755]
wearable/tests/FileReader/index.html
wearable/tests/FullScreen/index.html
wearable/tests/MediaPlayback/index.html
wearable/tests/Package/index.html
wearable/tests/Package/res/TestPackage1.wgt [changed mode: 0755->0644]
wearable/tests/Package/res/TestPackage2.wgt [changed mode: 0755->0644]
wearable/tests/PackageManagement/index.html
wearable/tests/PackageManagement/res/Sample-widget1.html
wearable/tests/PackageManagement/res/Sample-widget2.html
wearable/tests/PackageManagement/res/Sample-widget3.html
wearable/tests/PackageManagement/res/Sample-widget4.html
wearable/tests/PackageManagement/res/widget-version-1.html
wearable/tests/PageVisibility/index.html
wearable/tests/Power/index.html
wearable/tests/SVGTransformation/index.html
wearable/tests/Security/index.html
wearable/tests/Stability/index.html
wearable/tests/Stability/res/test-half-memory.html
wearable/tests/Stability/res/test-half-memory.wgt
wearable/tests/Stability/res/test-hd-image.html
wearable/tests/SystemInfo/index.html
wearable/tests/Template/index.html
wearable/tests/Touch/index.html
wearable/tests/UserAgentString/index.html
wearable/tests/Vibration/index.html
wearable/tests/Viewport/index.html
wearable/tests/Viewport/test/device.html
wearable/tests/Viewport/test/scale.html
wearable/tests/Viewport/test/user-scalable.html
wearable/tests/WRTSupport/index.html
wearable/tests/WRTSupport/js/main.js
wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html [new file with mode: 0755]
wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt [new file with mode: 0755]
wearable/tests/WRTSupport/res/debug-web-inspector-ubuntu.html
wearable/tests/WRTSupport/res/debug-web-inspector-windows7.html
wearable/tests/WRTSupport/res/lifecycle-unload-event.html
wearable/tests/WRTSupport/res/other-localization.html
wearable/tests/WRTSupport/res/other-uri-schemes-mailto-groups.html
wearable/tests/WRTSupport/res/other-uri-schemes-mailto-tel.html
wearable/tests/WRTSupport/res/protection-encryption-check.html
wearable/tests/WRTSupport/res/security-permission.html
wearable/tests/WRTSupport/res/security-policy.html
wearable/tests/WRTSupport/res/url-access-multi-all-ports.html
wearable/tests/WRTSupport/res/url-access-multi-https-all.html
wearable/tests/WRTSupport/res/url-access-multi-https-subdomains.html
wearable/tests/WRTSupport/res/url-access-multi-https.html
wearable/tests/WRTUI/index.html
wearable/tests/WRTUI/res/application-rotation-sensor-enable.html
wearable/tests/WRTUI/res/csp-mode-allow-navigation-access.html
wearable/tests/WRTUI/res/csp-mode-not-navigation-access.html
wearable/tests/WRTUI/res/multiple-browsing-context.html
wearable/tests/WRTUI/res/not-csp-allow-navigation-access.html
wearable/tests/WRTUI/res/not-csp-not-allow-navigation-access.html
wearable/tests/WRTUI/res/view-mode-fullscreen-rotation.html
wearable/tests/WRTUI/res/view-mode-maximized-rotation.html
wearable/tests/circle.js [new file with mode: 0755]
wearable/tests/jquery-1.10.2.min.js [new file with mode: 0755]
wearable/tests/jquery.mobile-1.4.5.css [new file with mode: 0755]
wearable/tests/jquery.mobile-1.4.5.js [new file with mode: 0755]

index c1637838f47be73806c88e9be4cf287bd9acc5dc..64b5e41e940438695e6724777024e1cd576f61e8 100755 (executable)
Binary files a/mobile/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf and b/mobile/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf differ
index b77bc3a9f6a09cc661748528c2618ad203ef3e8a..afc80551dba36a3d6fddb3d82c8fe65a7c5a5f37 100755 (executable)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://tizen.org/test/tct-behavior-tests" version="2.3b" viewmodes="">
-    <tizen:privilege name="http://tizen.org/privilege/internet"/><access origin="*"/>
-    <tizen:application id="tctbhtests.TCTBehaviorTests" package="tctbhtests" required_version="2.3"/>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://tizen.org/test/tct-behavior-tests" version="2.3.1" viewmodes="">
+    <access origin="*"/>
+    <tizen:application id="tctbhtests.TCTBehaviorTests" package="tctbhtests" required_version="2.3.1"/>
     <icon src="icon.png" height="117" width="117"/>
     <name>tct-behavior-tests</name>
     <tizen:privilege name="http://tizen.org/privilege/location"/>
@@ -39,6 +39,7 @@
     <tizen:privilege name="http://tizen.org/privilege/setting"/>
     <tizen:privilege name="http://tizen.org/privilege/bluetoothmanager"/>
     <tizen:privilege name="http://tizen.org/privilege/push"/>
-    <tizen:privilege name="http://tizen.org/privilege/systemmanager"/>
+    <tizen:privilege name="http://tizen.org/privilege/telephony"/>
+    <tizen:privilege name="http://tizen.org/privilege/internet"/>
     <tizen:setting context-menu="disable" background-support="disable" encryption="disable" install-location="auto"/>
 </widget>
index 3bfaf74ac7501a5d9b78c8de24956b779eec85dd..da87adcb5020453ff802a202d136bd07808f989b 100755 (executable)
@@ -28,7 +28,7 @@
 #               Fan, Yugang <yugang.fan@intel.com>
 #
 
-AC_INIT([tct-behavior-tests], [2.3b], [yugang.fan@intel.com])
+AC_INIT([tct-behavior-tests], [2.3.1], [yugang.fan@intel.com])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
index 67d187f97af04ac599f3137bf825f0d7b97bdd64..7c726a631fddf80d3ef1500df563f1f725cd8408 100755 (executable)
@@ -2,7 +2,7 @@
 
 Summary: TCT Behavior Tests
 Name: tct-behavior-tests
-Version: 2.3b
+Version: 2.3.1
 Release: 1
 License: BSD
 Group: test/tct/behavior
diff --git a/mobile/res/html/wrtgeolocation.html b/mobile/res/html/wrtgeolocation.html
new file mode 100755 (executable)
index 0000000..4f2ee43
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<p id="demo">Please Wait While Your Location Loads....</p>
+<script>
+var x = document.getElementById("demo");
+
+function getLocation() {
+    if (navigator.geolocation) {
+        navigator.geolocation.getCurrentPosition(showPosition);
+    } else {
+        x.innerHTML = "Geolocation is not supported by this browser.";
+    }
+}
+
+function showPosition(position) {
+    x.innerHTML="Latitude: " + position.coords.latitude +
+    "<br>Longitude: " + position.coords.longitude;
+}
+
+</script>
+<body>
+<Input type="button" onclick="getLocation()" value="get location">
+</body>
+</html>
\ No newline at end of file
diff --git a/mobile/res/html/wrtwebnotify.html b/mobile/res/html/wrtwebnotify.html
new file mode 100755 (executable)
index 0000000..811b508
--- /dev/null
@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html>
+   <head>
+      <meta charset="UTF-8">
+      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+      <meta name="author" content="Aurelio De Rosa">
+      <title>Web Notifications API Demo by Aurelio De Rosa</title>
+      <style>
+       #div1{
+       position:absolute;
+       left:0px;
+       top:0px;
+        }
+        *
+         {
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+         }
+
+         body
+         {
+            max-width: 500px;
+            margin: 2em auto;
+            padding: 0 0.5em;
+            font-size: 20px;
+         }
+
+         h1
+         {
+            text-align: center;
+         }
+
+         .api-support
+         {
+            display: block;
+         }
+
+         .hidden
+         {
+            display: none;
+         }
+
+         #custom-notification
+         {
+            margin-top: 1em;
+         }
+
+         label
+         {
+            display: block;
+         }
+
+         input[name="title"],
+         textarea
+         {
+            width: 100%;
+         }
+
+         input[name="title"]
+         {
+            height: 2em;
+         }
+
+         textarea
+         {
+            height: 5em;
+         }
+
+         .buttons-wrapper
+         {
+            text-align: center;
+         }
+
+         .button-demo
+         {
+            padding: 0.5em;
+            margin: 1em;
+         }
+
+         #log
+         {
+            height: 200px;
+            width: 100%;
+            overflow-y: scroll;
+            border: 1px solid #333333;
+            line-height: 1.3em;
+         }
+
+         .author
+         {
+            display: block;
+            margin-top: 1em;
+         }
+      </style>
+   </head>
+   <body>
+    <!--  <a href="http://www.sitepoint.com/introduction-web-notifications-api/">Go back to the article</a>
+
+      <h1>Web Notifications API</h1>
+
+      <span id="wn-unsupported" class="api-support hidden">API not supported</span>
+
+      <form id="custom-notification" action="">
+         <label for="title">Title:</label>
+         <input type="text" id="title" name="title" />
+
+         <label for="body">Body:</label>
+         <textarea id="body" name="body"></textarea>-->
+        <div id="div1">
+         <div class="buttons-wrapper">
+            <button id="button-wn-show-preset" class="button-demo">Show Notification</button>
+           <!-- <input type="submit" id="button-wn-show-custom" class="button-demo" value="Show Custom Notification" />-->
+         </div>
+       </div>
+      </form>
+
+      <!--<h3>Log</h3>
+      <div id="log"></div>
+      <button id="clear-log" class="button-demo">Clear log</button>
+
+      <small class="author">
+         Demo created by <a href="http://www.audero.it">Aurelio De Rosa</a>
+         (<a href="https://twitter.com/AurelioDeRosa">@AurelioDeRosa</a>).<br />
+         This demo is part of the <a href="https://github.com/AurelioDeRosa/HTML5-API-demos">HTML5 API demos repository</a>.
+      </small>-->
+
+      <script>
+         if (!('Notification' in window)) {
+            document.getElementById('wn-unsupported').classList.remove('hidden');
+            document.getElementById('button-wn-show-preset').setAttribute('disabled', 'disabled');
+            document.getElementById('button-wn-show-custom').setAttribute('disabled', 'disabled');
+         } else {
+            var log = document.getElementById('log');
+            var notificationEvents = ['onclick', 'onshow', 'onerror', 'onclose'];
+
+            function notifyUser(event) {
+               var title;
+               var options;
+
+               event.preventDefault();
+
+               if (event.target.id === 'button-wn-show-preset') {
+                  title = 'Email received';
+                  options = {
+                     body: 'You have a total of 3 unread emails',
+                     tag: 'preset',
+                     icon: 'http://www.audero.it/favicon.ico'
+                  };
+               } else {
+                  title = document.getElementById('title').value;
+                  options = {
+                     body: document.getElementById('body').value,
+                     tag: "custom"
+                  };
+               }
+
+               Notification.requestPermission(function() {
+                  var notification = new Notification(title, options);
+
+                  notificationEvents.forEach(function(eventName) {
+                     notification[eventName] = function(event) {
+                        log.innerHTML = 'Event "' + event.type + '" triggered for notification "' + notification.tag +
+                                '"<br />' + log.innerHTML;
+                     };
+                  });
+               });
+            }
+
+            document.getElementById('button-wn-show-preset').addEventListener('click', notifyUser);
+            document.getElementById('button-wn-show-custom').addEventListener('click', notifyUser);
+
+            document.getElementById('clear-log').addEventListener('click', function() {
+               log.innerHTML = '';
+            });
+         }
+      </script>
+   </body>
+</html>
\ No newline at end of file
index 6df3febaa346e84e5ce8b2a43b1ee52c16ee1f57..b78b0224165a78d7e1b4d5f82be4e7bbad4f8156 100755 (executable)
@@ -1,7 +1,7 @@
 name="tct-behavior-tests"
-main_version="2.3"
-release="1"
-version="$main_version-$release"
+main_version="2.3.1"
+release=""
+version="$main_version"
 appname=$(echo $name|sed 's/-/_/g')
 
 # set value "1" if this suite need to sign,otherwise set "0" #
index 5abed365512174792baf554d4f2d88d5a4a8d725..b5e59c813ffc98708c0f14afa2e320b8dd503726 100755 (executable)
@@ -131,6 +131,71 @@ Authors:
                         <h2>script-src-inline-eval</h2>
                     </a>
                 </li>
+                <li id="script-src-inline-allow">
+                    <a href="javascript:goToApp('res/script-src-inline-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-block">
+                    <a href="javascript:goToApp('res/script-src-inline-block.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-allow">
+                    <a href="javascript:goToApp('res/script-src-eval-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-block">
+                    <a href="javascript:goToApp('res/script-src-eval-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-constructor-block">
+                    <a href="javascript:goToApp('res/script-src-eval-constructor-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-constructor-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-constructor-allow">
+                    <a href="javascript:goToApp('res/script-src-eval-constructor-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-constructor-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-timeout-block">
+                    <a href="javascript:goToApp('res/script-src-eval-timeout-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-timeout-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-interval-block">
+                    <a href="javascript:goToApp('res/script-src-eval-interval-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-interval-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-without-uri">
+                    <a href="javascript:goToApp('res/script-src-inline-without-uri.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-without-uri</h2>
+                    </a>
+                </li>
+                 <li id="script-src-inline-with-uri">
+                    <a href="javascript:goToApp('res/script-src-inline-with-uri.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-with-uri</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-with-uri-constructor">
+                    <a href="javascript:goToApp('res/script-src-inline-with-uri-constructor.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-with-uri-constructor</h2>
+                    </a>
+                </li>
+                <li id="script-src-self-config-block">
+                    <a href="javascript:goToApp('res/script-src-self-config-block.html')" data-transition="slide" style="">
+                        <h2>script-src-self-config-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-self-http-config-block">
+                    <a href="javascript:goToApp('res/script-src-self-http-config-block.html')" data-transition="slide" style="">
+                        <h2>script-src-self-http-config-block</h2>
+                    </a>
+                </li>
                 <li data-role="list-divider" role="heading">Test style-src directive</li>
                 <li id="style-src_self">
                     <a href="javascript:goToApp('res/style-src_self.html')" data-transition="slide" style="">
index dec3af322393a5ffa4f52016ebbb6ae09979c878..8d387335175f93e6771a083023a2180d1788d83a 100755 (executable)
@@ -44,7 +44,20 @@ var allId=new Array('beh1csp001',
                     'beh1csp014',
                     'beh1csp015',
                     'beh1csp016',
-                    'beh1csp017');
+                    'beh1csp017',
+                    'WRTCSP0002',
+                    'WRTCSP0003',
+                    'WRTCSP0004',
+                    'WRTCSP0005',
+                    'WRTCSP0006',
+                    'WRTCSP0007',
+                    'WRTCSP0008',
+                    'WRTCSP0010',
+                    'WRTCSP0012',
+                    'WRTCSP0013',
+                    'WRTCSP0014',
+                    'WRTCSP0018',
+                    'WRTCSP0019');
 
 var installedId = new Array();
 var resultXML, tests;
diff --git a/mobile/tests/CSP/res/script-src-eval-allow.html b/mobile/tests/CSP/res/script-src-eval-allow.html
new file mode 100755 (executable)
index 0000000..3d73b31
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-only-allow">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0005.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0005"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-allow.wgt b/mobile/tests/CSP/res/script-src-eval-allow.wgt
new file mode 100755 (executable)
index 0000000..9028f6f
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-allow.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-eval-block.html b/mobile/tests/CSP/res/script-src-eval-block.html
new file mode 100755 (executable)
index 0000000..38b3884
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0004.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0004"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-block.wgt b/mobile/tests/CSP/res/script-src-eval-block.wgt
new file mode 100755 (executable)
index 0000000..da7c5cf
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-eval-constructor-allow.html b/mobile/tests/CSP/res/script-src-eval-constructor-allow.html
new file mode 100755 (executable)
index 0000000..82e4e67
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-constructor_only-allow">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-constructor-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0007.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0007"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-constructor-allow.wgt b/mobile/tests/CSP/res/script-src-eval-constructor-allow.wgt
new file mode 100755 (executable)
index 0000000..b14abe1
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-constructor-allow.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-eval-constructor-block.html b/mobile/tests/CSP/res/script-src-eval-constructor-block.html
new file mode 100755 (executable)
index 0000000..1a41fd1
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-constructor_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-constructor-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0006.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0006"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-constructor-block.wgt b/mobile/tests/CSP/res/script-src-eval-constructor-block.wgt
new file mode 100755 (executable)
index 0000000..b37c060
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-constructor-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-eval-interval-block.html b/mobile/tests/CSP/res/script-src-eval-interval-block.html
new file mode 100755 (executable)
index 0000000..5254a26
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-interval_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-interval-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0010.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0010"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-interval-block.wgt b/mobile/tests/CSP/res/script-src-eval-interval-block.wgt
new file mode 100755 (executable)
index 0000000..24d8243
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-interval-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-eval-timeout-block.html b/mobile/tests/CSP/res/script-src-eval-timeout-block.html
new file mode 100755 (executable)
index 0000000..7ba4c5c
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-timeout_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-timeout-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0008.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0008"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-eval-timeout-block.wgt b/mobile/tests/CSP/res/script-src-eval-timeout-block.wgt
new file mode 100755 (executable)
index 0000000..93bd674
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-eval-timeout-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-inline-allow.html b/mobile/tests/CSP/res/script-src-inline-allow.html
new file mode 100755 (executable)
index 0000000..19a799f
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="CSP_02">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0002.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0002"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-inline-allow.wgt b/mobile/tests/CSP/res/script-src-inline-allow.wgt
new file mode 100755 (executable)
index 0000000..309ce09
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-inline-allow.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-inline-block.html b/mobile/tests/CSP/res/script-src-inline-block.html
new file mode 100755 (executable)
index 0000000..61dfd96
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="CSP_02">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0003.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0003"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-inline-block.wgt b/mobile/tests/CSP/res/script-src-inline-block.wgt
new file mode 100755 (executable)
index 0000000..d80e3e7
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-inline-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-inline-with-uri-constructor.html b/mobile/tests/CSP/res/script-src-inline-with-uri-constructor.html
new file mode 100755 (executable)
index 0000000..b8e90b1
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-with-uri-constructor">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-with-uri-constructor"/>
+                <input type="hidden" id="app_id" value="WRTCSP0014.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0014"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-inline-with-uri-constructor.wgt b/mobile/tests/CSP/res/script-src-inline-with-uri-constructor.wgt
new file mode 100755 (executable)
index 0000000..37d6ef8
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-inline-with-uri-constructor.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-inline-with-uri.html b/mobile/tests/CSP/res/script-src-inline-with-uri.html
new file mode 100755 (executable)
index 0000000..924bf4b
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-with-uri">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-with-uri"/>
+                <input type="hidden" id="app_id" value="WRTCSP0013.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0013"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-inline-with-uri.wgt b/mobile/tests/CSP/res/script-src-inline-with-uri.wgt
new file mode 100755 (executable)
index 0000000..61c0c8c
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-inline-with-uri.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-inline-without-uri.html b/mobile/tests/CSP/res/script-src-inline-without-uri.html
new file mode 100755 (executable)
index 0000000..8fee5c5
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-without-uri">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-without-uri"/>
+                <input type="hidden" id="app_id" value="WRTCSP0012.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0012"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-inline-without-uri.wgt b/mobile/tests/CSP/res/script-src-inline-without-uri.wgt
new file mode 100755 (executable)
index 0000000..93bb826
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-inline-without-uri.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-self-config-block.html b/mobile/tests/CSP/res/script-src-self-config-block.html
new file mode 100755 (executable)
index 0000000..7a07405
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-self-config-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-self-config-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0019.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0019"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-self-config-block.wgt b/mobile/tests/CSP/res/script-src-self-config-block.wgt
new file mode 100755 (executable)
index 0000000..cb82f13
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-self-config-block.wgt differ
diff --git a/mobile/tests/CSP/res/script-src-self-http-config-block.html b/mobile/tests/CSP/res/script-src-self-http-config-block.html
new file mode 100755 (executable)
index 0000000..78d5437
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-self-http-config-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-self-http-config-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0018.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0018"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/mobile/tests/CSP/res/script-src-self-http-config-block.wgt b/mobile/tests/CSP/res/script-src-self-http-config-block.wgt
new file mode 100755 (executable)
index 0000000..035277f
Binary files /dev/null and b/mobile/tests/CSP/res/script-src-self-http-config-block.wgt differ
index 0e8dd4c5fc26da83f2b47a45384ec35fb1bc7471..c24d960880d780f0f833400ca9a342b6d5d5af85 100755 (executable)
@@ -85,6 +85,36 @@ Authors:
                 <li>Click the "Dynamicbox reload foregorund"; press test button(it will open another screen); then press Home key to back home screen and entry behavior tool/launch again; test step passes if the number which show in the screen will recount after a few seconds</li>
                 <li>Click the "AppWidget Unload event",  test step passes if there is a green 'Pass' text;</li>
                 <li>Click the "AppWidget alive time after load event fired", test step passes if there is a green 'Pass' text.</li>
+                <li>Click the "Install Web DynamicBox when DynamicBox's resources are not packaged in the web application.", test step passes if It should not be listed as dynamic box.</li>
+                <li>Click the "The deletion of Dynamic box in home screen does not uninstall the app.", test step passes if The Dynamic box present in the home screen should be removed. But the Widget installed should be still available within the app tray with name 'WDB_WGT_2'.</li>
+                <li>Click the "Installation missing mandatory attribute ID.", test step passes if it should display Unable to install this file.</li>
+                <li>Click the "Installation missing primary attribute.", test step passes if it should install this file.</li>
+                <li>Click the "Installation without TIZEN_APPLICATION_ID.", test step passes if it should display Unable to install this file.</li>
+                <li>Click the "Installation with having ID same as TIZEN_APPLICATION_ID.", test step passes if it should display Unable to install this file.</li>
+                <li>Click the "Reloading of dynamic box.", test step passes if the time difference should be exactly 30 min.</li>
+                <li>Click the "Behaviour with auto-launch attribute setting to true.", test step passes if the web application should be launched and should display a page with message 'APP Index Page'.</li>
+                <li>Click the "Behaviour with auto-launch attribute setting to false.", test step passes if the web application should be launched and should display a page with message 'APP Index Page'.</li>
+                <li>Click the "Behaviour without auto-launch attribute.", test step passes if the web application should not be launched.</li>
+                <li>Click the "Installation without app-widget child elements.", test step passes if Error pop up should appear stating "unable to install this file.The format is invalid.".</li>
+                <li>Click the "Installation without box-label elements.", test step passes if Error pop up should appear stating "unable to install this file.The format is invalid.".</li>
+                <li>Click the "Behaviour with box-label having valid value.", test step passes if Dynamic box should be available wihin the dynamic box selection list and should be added to Home Screen.".</li>
+                <li>Click the "Behaviour with multiple box-label element present.", test step passes if widget installation should be successful.".</li>
+                <li>Click the "Localization with lang support for box-label.", test step passes if the Dynamic Box selection list should have a dynamic box with name "WDB_EN_DName_27"and "WDB_FR_DName_27.".</li>
+                <li>Click the "Installation without box-icon.", test step passes if The widget should get installed and pass icon with size 1*1,2*1 and 2*2 should be displayed.".</li>
+                <li>Click the "Behavior with box-icon having path relative to Web Application directory.", test step passes if "PASS" Icon should be displayed with Size 1*1,2*1 and 2*2.".</li>
+                <li>Click the "Behavior with box-icon missing src attribute.", test step passes if Error pop up should appear stating "unable to install this file.".</li>
+                <li>Click the "Installation missing box-content attributes.", test step passes if Error pop up should appear stating "unable to install this file.".</li>
+                <li>Click the "Behavior with box-content src attribute valid path relative to Web Application directory.", test step passes if A index page with message "Web Dynamics Box Index Page." should be loaded within the dynamic box.".</li>
+                <li>Click the "Behavior with box-content missing src attribute.", test step passes if Error pop up should appear stating "unable to install this file.".</li>
+                <li>Click the "Behavior with box-content src pointing to an existing remote http URL with allow-navigation element.", test step passes if It should load the 'w3.org' site within the dynamic box, load the 'w3.org' site within the drop view and The ' w3.org'  should be rendered within the APP view.".</li>
+                <li>Click the "Behavior with box-content src pointing to an existing remote http URL without allow-navigation element.", test step passes if It should block loading of 'w3c.org' within dynamic box, drop view,launch the APP and should load the link with Browser and browser should move to background.".</li>
+                <li>Click the "Behavior with box-content  src  pointing to an existing remote https URL with allow-navigation and access.", test step passes if load linkedin site within the dynamic box.".</li>
+                <li>Click the "Behavior with box-content  src  pointing to an existing remote https URL with allow-navigation and access different.", test step passes if It should block loading linkedin site within the dynamic box, drop view.".</li>
+                <li>Click the "Behavior with touch-event true.", test step passes if The special UI effect should be displayed for the dynamic box.".</li>
+                <li>Click the "Behavior with touch-event false.", test step passes if The special UI effect should not be displayed for the dynamic box.".</li>
+                <li>Click the "Behavior without box-size child element.", test step passes if Error pop up should appear stating "unable to install this file.".</li>
+                <li>Click the "Verify sending messages between the Box and the Drop View.", test step passes if message 'Hello, Dynamic Box should be displayed within the dynamic box and message "Hello, Drop View" should be displayed within the drop view.".</li>
+                <li>Click the "Verify web dynamic box runtime should keep the content of the Dynamic Box Drop View alive until the Drop View is closed.", test step passes if  The counter within the drop view should get updated in each 5 sec interval till the drop view is opened.".</li>
               </ol>
               <li>Click the "Uninstall" button, test step passes if all app widgets uninstalled successfully.</li>
             </ol>
index 7cf03c413899b12dd5fb199d58e69b51af91106f..0d81c34fdde0cf0830231ca0a8be37b728df0def 100755 (executable)
@@ -61,7 +61,37 @@ var wgt_names = new Array('app-widget-mouse-event-false.wgt',
                           'dynamicbox-reload-background.wgt',
                           'dynamicbox-reload-foreground.wgt',
                           'app-widget-unload-event.wgt',
-                          'app-widget-load-event-alive-time.wgt');
+                          'app-widget-load-event-alive-time.wgt',
+                          'WebDynamicBox_1.wgt',
+                          'WebDynamicBox_2.wgt',
+                          'WebDynamicBox_7.wgt',
+                          'WebDynamicBox_8.wgt',
+                          'WebDynamicBox_9.wgt',
+                          'WebDynamicBox_10.wgt',
+                          'WebDynamicBox_13.wgt',
+                          'WebDynamicBox_17.wgt',
+                          'WebDynamicBox_18.wgt',
+                          'WebDynamicBox_19_3.wgt',
+                          'WebDynamicBox_20.wgt',
+                          'WebDynamicBox_21.wgt',
+                          'WebDynamicBox_22.wgt',
+                          'WebDynamicBox_25.wgt',
+                          'WebDynamicBox_27.wgt',
+                          'WebDynamicBox_28.wgt',
+                          'WebDynamicBox_30.wgt',
+                          'WebDynamicBox_37.wgt',
+                          'WebDynamicBox_39.wgt',
+                          'WebDynamicBox_41.wgt',
+                          'WebDynamicBox_44.wgt',
+                          'WebDynamicBox_45.wgt',
+                          'WebDynamicBox_45_1.wgt',
+                          'WebDynamicBox_55_4.wgt',
+                          'WebDynamicBox_55_5.wgt',
+                          'WebDynamicBox_65.wgt',
+                          'WebDynamicBox_66.wgt',
+                          'WebDynamicBox_75.wgt',
+                          'WebDynamicBox_106.wgt',
+                          'WebDynamicBox_114.wgt');
 
 var package_ids = new Array('wrt6awi014',
                             'wrt6app001',
@@ -91,7 +121,37 @@ var package_ids = new Array('wrt6awi014',
                             'tctdyna009',
                             'tctdyna010',
                             'wrt6aws020',
-                            'wrt6aws021');
+                            'wrt6aws021',
+                            'GOlxQoIL8p',
+                            'YJj0WRVaJL',
+                            'Zyj5WRVa07',
+                            'Zyj5W00008',
+                            'Zyj5WRVa09',
+                            'Zyj5WRVa10',
+                            'Zyj5WRVa13',
+                            'Zyj5WRVa17',
+                            'Zyj5WRVa18',
+                            'Zyj5WRV319',
+                            'Zyjn7RVa20',
+                            'Zyj5WRVa21',
+                            'Zyj5WRVa22',
+                            'Zyj5WRVa25',
+                            'Zyj5WRVa27',
+                            'Zyj5gRVa28',
+                            'Zyj5WRVa30',
+                            'Zyj5WRVa37',
+                            'ol75WRVa39',
+                            'Zyj5WRVa41',
+                            'Zyj5WRVa44',
+                            'Zyj5WRaa45',
+                            'Zyj5WR1045',
+                            'Zyj5WR4055',
+                            'Zyj5WR5055',
+                            'Zyj5WRVa65',
+                            'Zyj5WRVa66',
+                            'Zyj5WRVa75',
+                            'Zyj5WRV106',
+                            'Zyj5WR0114');
 
 var id_maps = {'rMLtTXzQr2-2.0.0-arm.tpk':                           'rMLtTXzQr2',
                'SD2nFxbyeA-2.0.0-i386.tpk':                          'SD2nFxbyeA',
@@ -123,7 +183,37 @@ var id_maps = {'rMLtTXzQr2-2.0.0-arm.tpk':                           'rMLtTXzQr2
                'dynamicbox-reload-background.wgt':                   'tctdyna009',
                'dynamicbox-reload-foreground.wgt':                   'tctdyna010',
                'app-widget-unload-event.wgt':                        'wrt6aws020',
-               'app-widget-load-event-alive-time.wgt':               'wrt6aws021'};
+               'app-widget-load-event-alive-time.wgt':               'wrt6aws021',
+               'WebDynamicBox_1.wgt':                                'GOlxQoIL8p',
+               'WebDynamicBox_2.wgt':                                'YJj0WRVaJL',
+               'WebDynamicBox_7.wgt':                                'Zyj5WRVa07',
+               'WebDynamicBox_8.wgt':                                'Zyj5W00008',
+               'WebDynamicBox_9.wgt':                                'Zyj5WRVa09',
+               'WebDynamicBox_10.wgt':                               'Zyj5WRVa10',
+               'WebDynamicBox_13.wgt':                               'Zyj5WRVa13',
+               'WebDynamicBox_17.wgt':                               'Zyj5WRVa17',
+               'WebDynamicBox_18.wgt':                               'Zyj5WRVa18',
+               'WebDynamicBox_19_3.wgt':                             'Zyj5WRV319',
+               'WebDynamicBox_20.wgt':                               'Zyjn7RVa20',
+               'WebDynamicBox_21.wgt':                               'Zyj5WRVa21',
+               'WebDynamicBox_22.wgt':                               'Zyj5WRVa22',
+               'WebDynamicBox_25.wgt':                               'Zyj5WRVa25',
+               'WebDynamicBox_27.wgt':                               'Zyj5WRVa27',
+               'WebDynamicBox_28.wgt':                               'Zyj5gRVa28',
+               'WebDynamicBox_30.wgt':                               'Zyj5WRVa30',
+               'WebDynamicBox_37.wgt':                               'Zyj5WRVa37',
+               'WebDynamicBox_39.wgt':                               'ol75WRVa39',
+               'WebDynamicBox_41.wgt':                               'Zyj5WRVa41',
+               'WebDynamicBox_44.wgt':                               'Zyj5WRVa44',
+               'WebDynamicBox_45.wgt':                               'Zyj5WRaa45',
+               'WebDynamicBox_45_1.wgt':                             'Zyj5WR1045',
+               'WebDynamicBox_55_4.wgt':                             'Zyj5WR4055',
+               'WebDynamicBox_55_5.wgt':                             'Zyj5WR5055',
+               'WebDynamicBox_65.wgt':                               'Zyj5WRVa65',
+               'WebDynamicBox_66.wgt':                               'Zyj5WRVa66',
+               'WebDynamicBox_75.wgt':                               'Zyj5WRVa75',
+               'WebDynamicBox_106.wgt':                              'Zyj5WRV106',
+               'WebDynamicBox_114.wgt':                              'Zyj5WR0114'};
 
 $(document).delegate("#main", "pageinit", function() {
     DisablePassButton();
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_1.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_1.wgt
new file mode 100755 (executable)
index 0000000..c27c57f
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_1.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_10.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_10.wgt
new file mode 100755 (executable)
index 0000000..d84b5a8
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_10.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_106.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_106.wgt
new file mode 100755 (executable)
index 0000000..3f24f33
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_106.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_114.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_114.wgt
new file mode 100755 (executable)
index 0000000..1b55f92
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_114.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_13.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_13.wgt
new file mode 100755 (executable)
index 0000000..73d81c7
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_13.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_17.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_17.wgt
new file mode 100755 (executable)
index 0000000..65d529a
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_17.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_18.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_18.wgt
new file mode 100755 (executable)
index 0000000..94975f8
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_18.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_19_3.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_19_3.wgt
new file mode 100755 (executable)
index 0000000..3906309
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_19_3.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_2.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_2.wgt
new file mode 100755 (executable)
index 0000000..7de26a4
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_2.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_20.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_20.wgt
new file mode 100755 (executable)
index 0000000..7f50ca4
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_20.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_21.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_21.wgt
new file mode 100755 (executable)
index 0000000..8bfedb1
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_21.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_22.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_22.wgt
new file mode 100755 (executable)
index 0000000..d9d14cf
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_22.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_25.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_25.wgt
new file mode 100755 (executable)
index 0000000..acb231c
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_25.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_27.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_27.wgt
new file mode 100755 (executable)
index 0000000..5c84341
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_27.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_28.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_28.wgt
new file mode 100755 (executable)
index 0000000..f731bbe
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_28.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_30.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_30.wgt
new file mode 100755 (executable)
index 0000000..196e5aa
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_30.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_37.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_37.wgt
new file mode 100755 (executable)
index 0000000..f87705c
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_37.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_39.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_39.wgt
new file mode 100755 (executable)
index 0000000..17686e9
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_39.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_41.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_41.wgt
new file mode 100755 (executable)
index 0000000..e6f8be8
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_41.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_44.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_44.wgt
new file mode 100755 (executable)
index 0000000..7dcf0da
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_44.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_45.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_45.wgt
new file mode 100755 (executable)
index 0000000..c851f29
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_45.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_45_1.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_45_1.wgt
new file mode 100755 (executable)
index 0000000..1737470
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_45_1.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_55_4.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_55_4.wgt
new file mode 100755 (executable)
index 0000000..e493981
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_55_4.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_55_5.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_55_5.wgt
new file mode 100755 (executable)
index 0000000..d69a272
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_55_5.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_65.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_65.wgt
new file mode 100755 (executable)
index 0000000..87fa4c1
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_65.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_66.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_66.wgt
new file mode 100755 (executable)
index 0000000..9d5bc37
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_66.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_7.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_7.wgt
new file mode 100755 (executable)
index 0000000..336b704
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_7.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_75.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_75.wgt
new file mode 100755 (executable)
index 0000000..c5b57b3
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_75.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_8.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_8.wgt
new file mode 100755 (executable)
index 0000000..fbc3b01
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_8.wgt differ
diff --git a/mobile/tests/DynamicBox/res/WebDynamicBox_9.wgt b/mobile/tests/DynamicBox/res/WebDynamicBox_9.wgt
new file mode 100755 (executable)
index 0000000..977d7f0
Binary files /dev/null and b/mobile/tests/DynamicBox/res/WebDynamicBox_9.wgt differ
index 6b252bab7a595fde7dd13d3361a5141d2c2e7427..e77ee6e31fe71e0c6bd66de9df22f03dd766e54c 100755 (executable)
@@ -58,11 +58,11 @@ Authors:
                         <h2>pkmanagement-powerfailure-install</h2>
                     </a>
                 </li>
-                <li id="Sample-widget3">
+                <!--<li id="Sample-widget3">
                     <a href="javascript:goToApp('res/Sample-widget3.html')" data-transition="slide" style="">
                         <h2>webapp-filebrowser-install</h2>
                     </a>
-                </li>
+                </li>-->
                 <li id="Sample-widget4">
                     <a href="javascript:goToApp('res/Sample-widget4.html')" data-transition="slide" style="">
                         <h2>webapp-get-information</h2>
index 92a1a65b2dfb7582c874a67bc78826b13c0c188b..96b7672fa8035bf4f48f3e1a3523af6bd3e28c59 100755 (executable)
Binary files a/mobile/tests/Stability/res/test-half-memory.wgt and b/mobile/tests/Stability/res/test-half-memory.wgt differ
index a64e491086aa387b04a33ee6b911ed39683875e5..4abfb0e3ebee5709b2da4d72218941f04d5f6784 100755 (executable)
@@ -28,14 +28,15 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 Authors:
         Feng, GangX <gangx.feng@intel.com>
         SRC-NJ Ran Wang <ran22.wang@samsung.com>
+        SRC-NJ Weixia Fu <weixia12.fu@samsung.com>
 
 -->
 <html>
   <head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
-    <link rel="stylesheet" type="text/css" href="../../css/jquery.mobile.css" />
-    <link rel="stylesheet" type="text/css" href="../../css/main.css" />
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/main.css"/>
     <script src="../../js/thirdparty/jquery.js"></script>
     <script src="../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../js/tests.js"></script>
@@ -125,6 +126,76 @@ Authors:
                         <h2>security-permission</h2>
                     </a>
                 </li>
+                <li id="TC_UPER_FullScreen_L_Req2.2">
+                    <a href="javascript:goToApp('res/TC_UPER_FullScreen_L_Req2.2.html')" data-transition="slide" style="">
+                        <h2>FullScreen_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_FullScreen_LP_Req2.2">
+                    <a href="javascript:goToApp('res/TC_UPER_FullScreen_LP_Req2.2.html')" data-transition="slide" style="">
+                        <h2>FullScreen_Local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Local_withprivilege</h2>
+                    </a>
+                </li>
                 <li id="protection-encryption-check">
                     <a href="javascript:goToApp('res/protection-encryption-check.html')" data-transition="slide" style="">
                         <h2>protection-encryption-check</h2>
@@ -150,4 +221,4 @@ Authors:
         </div>
     </div>
   </body>
-</html>
+</html>
\ No newline at end of file
index e46bc49867eb1d494d10fc996559c90a929489fa..5eda10e79b2f0eb459d847824ed4a368dc3ab70e 100755 (executable)
@@ -27,6 +27,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 Authors:
         Feng, GangX <gangx.feng@intel.com>
         SRC-NJ Ran Wang <ran22.wang@samsung.com>
+        SRC-NJ Weixia Fu <weixia12.fu@samsung.com>
 
 */
 var allId=new Array('wrt3lue021',
@@ -41,7 +42,21 @@ var allId=new Array('wrt3lue021',
                     'wrturla004',
                     'wrturla005',
                     'wrturla006',
-                    'wrt5pec119');
+                    'wrt5pec119',
+                    'FULL00010L',
+                    'FULL0000LP',
+                    'Zy38WGeo4H',
+                    'Zy39WGeoHP',
+                    'Zy40WGeo4L',
+                    'Zy41WGeoLP',
+                    'Zy44SGet4H',
+                    'Zy45SGetHP',
+                    'Qj5162RiTb',
+                    'UE52s9HrGz',
+                    'Zy81WNot4L',
+                    'Zy99WNotHP',
+                    'Zy79WNot4L',
+                    'Zyj599otLP');
 
 var installedId = new Array();
 var resultXML, tests;
@@ -298,4 +313,4 @@ function reportResult(res) {
     successBackAppsHome();
 }
 
-window.addEventListener('load', initTests, false);
+window.addEventListener('load', initTests, false);
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html
new file mode 100755 (executable)
index 0000000..3dc4910
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_FullScreen_LP_Req2">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_FullScreen_LP_Req2.2"/>
+                <input type="hidden" id="app_id" value="FULL0000LP.UPERFULLSCREEN"/>
+                <input type="hidden" id="package_id" value="FULL0000LP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should switch to full screen mode".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt
new file mode 100755 (executable)
index 0000000..f7cb27c
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html
new file mode 100755 (executable)
index 0000000..bd2b575
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_FullScreen_L_Req2">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_FullScreen_L_Req2.2"/>
+                <input type="hidden" id="app_id" value="FULL00010L.UPERFULLSCREEN"/>
+                <input type="hidden" id="package_id" value="FULL00010L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should not switch to full screen mode".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt
new file mode 100755 (executable)
index 0000000..f88e00c
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..d4056ae
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy39WGeoHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy39WGeoHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..2793b0f
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..4207650
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy38WGeo4H.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy38WGeo4H"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can not get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..cd9ccbc
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..001e3a0
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy41WGeoLP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy41WGeoLP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..15f52e3
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..340cd44
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy40WGeo4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy40WGeo4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can not get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..0a5802b
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..47355d6
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy45SGetHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy45SGetHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.
+</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..263ad84
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..7e6b093
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy44SGet4H.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy44SGet4H"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..be9e181
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..6d12740
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="UE52s9HrGz.SelfCamera1"/>
+                <input type="hidden" id="package_id" value="UE52s9HrGz"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.
+.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..d49e57c
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..1f96b65
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Qj5162RiTb.Selfcamera"/>
+                <input type="hidden" id="package_id" value="Qj5162RiTb"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..54fb120
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..0fa2c94
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy99WNotHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy99WNotHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' and should display email received notification within APP view.".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..bdabfad
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..3f99074
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy81WNot4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy81WNot4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' and should display email received notification within APP view."</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..51d2e2b
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..07c774b
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zyj599otLP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zyj599otLP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..03cbb7d
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt differ
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..bc94344
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy79WNot4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy79WNot4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..3c468fb
Binary files /dev/null and b/mobile/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt differ
index 0d4245a4764b85a3db3066176f39ce96f4978a78..64b5e41e940438695e6724777024e1cd576f61e8 100755 (executable)
Binary files a/wearable/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf and b/wearable/Web_TCT_2.3_Behavior_Test_Tool_User_Guide_v1.0.pdf differ
diff --git a/wearable/circle.js b/wearable/circle.js
new file mode 100755 (executable)
index 0000000..74df27f
--- /dev/null
@@ -0,0 +1,21 @@
+$(function(){
+    try {
+        // Checks if a device supports bluetooth API or not
+        var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape.circle");
+        console.log("Shape = " + shape);
+        alert("shape");
+    } catch (error) {
+        alert("Error name: " + error.name + ", message: " + error.message);
+        console.log("Error name: " + error.name + ", message: " + error.message);
+    }
+
+    if(shape==true){
+        $('body').css('max-width', '100%');
+        $('body').css('max-height', '100%');
+        $('body').css('background-color', 'white');
+        $('body').css('margin-top', '20%');
+        $('body').css('margin-bottom', '20%');
+        $('body').css('margin-left', '20%');
+        $('body').css('margin-right', '20%');
+    }
+});
index edacd33eb939f678bb2713ce892678335ae4824e..0adf934c8917cee09d59e4000a8ff6540a0dd8e2 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://tizen.org/test/tct-behavior-tests" version="2.3" viewmodes="">
-    <tizen:privilege name="http://tizen.org/privilege/internet"/><access origin="*"/>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://tizen.org/test/tct-behavior-tests" version="2.3.1" viewmodes="">
+    <access origin="*"/>
     <tizen:application id="tctbhtests.TCTBehaviorTests" package="tctbhtests" required_version="2.3"/>
     <icon src="icon.png" height="117" width="117"/>
     <name>tct-behavior-tests</name>
@@ -19,5 +19,6 @@
     <tizen:privilege name="http://tizen.org/privilege/packagemanager.install"/>
     <tizen:privilege name="http://tizen.org/privilege/setting"/>
     <tizen:privilege name="http://tizen.org/privilege/systemmanager"/>
+    <tizen:profile name="wearable"/>
     <tizen:setting context-menu="disable" background-support="disable" encryption="disable" install-location="auto"/>
 </widget>
index 3bfaf74ac7501a5d9b78c8de24956b779eec85dd..da87adcb5020453ff802a202d136bd07808f989b 100755 (executable)
@@ -28,7 +28,7 @@
 #               Fan, Yugang <yugang.fan@intel.com>
 #
 
-AC_INIT([tct-behavior-tests], [2.3b], [yugang.fan@intel.com])
+AC_INIT([tct-behavior-tests], [2.3.1], [yugang.fan@intel.com])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
index 3773a215dc1ec9123c1dec0521b0ced5de2f341a..c89b6e6b2e6cc7442418e2430565bb329b1d23c9 100755 (executable)
@@ -1389,7 +1389,9 @@ a.ui-link-inherit {
 body.ui-mobile-viewport,
 div.ui-mobile-viewport { overflow-x: hidden; }
 /* "page" containers - full-screen views, one should always be in view post-pageload */
-.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; }
+.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; min-height: 100%;  position: static;  display: none; border: 0; }
+
+div#home_ui {}
 .ui-mobile .ui-page-active { display: block; overflow: visible; }
 /* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
 .ui-page { outline: none; }
@@ -2011,8 +2013,6 @@ div.ui-mobile-viewport { overflow-x: hidden; }
 .ui-footer-fixed {
        left: 0;
        right: 0;
-       width: 100%;
-       position: fixed;
        z-index: 1000;
 }
 .ui-header-fixed {
@@ -2037,7 +2037,7 @@ div.ui-mobile-viewport { overflow-x: hidden; }
        padding: 0;
 }
 .ui-fixed-hidden {
-       position: absolute;
+       /* position: absolute; */
 }
 .ui-page-header-fullscreen .ui-fixed-hidden,
 .ui-page-footer-fullscreen .ui-fixed-hidden {
diff --git a/wearable/css/jquery.mobile2.css b/wearable/css/jquery.mobile2.css
new file mode 100755 (executable)
index 0000000..3773a21
--- /dev/null
@@ -0,0 +1,2609 @@
+/*
+* jQuery Mobile Framework Git Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700
+* http://jquerymobile.com
+*
+* Copyright 2012 jQuery Foundation and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+       border: 1px solid               #333 /*{a-bar-border}*/;
+       background:                     #111 /*{a-bar-background-color}*/;
+       color:                                  #fff /*{a-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+       color: #fff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+       color: #7cc4e7 /*{a-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+       color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+       color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+       border: 1px solid               #444 /*{a-body-border}*/;
+       background:                     #222 /*{a-body-background-color}*/;
+       color:                                  #fff /*{a-body-color}*/;
+       text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);       
+}
+.ui-overlay-a {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+       color:  #fff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+       color: #2489ce /*{a-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+       color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+       color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+       border: 1px solid               #111 /*{a-bup-border}*/;
+       background:                     #333 /*{a-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+       border: 1px solid               #000 /*{a-bhover-border}*/;
+       background:                     #444 /*{a-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+       border: 1px solid               #000 /*{a-bdown-border}*/;
+       background:                     #222 /*{a-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+       border: 1px solid               #456f9a /*{b-bar-border}*/;
+       background:                     #5e87b0 /*{b-bar-background-color}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+       color:  #fff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+       color: #ddf0f8 /*{b-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+       color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+       color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+       border: 1px solid               #999 /*{b-body-border}*/;
+       background:                     #f3f3f3 /*{b-body-background-color}*/;
+       color:                                  #222 /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+       color:  #333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+       color: #2489ce /*{b-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+       color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+       color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+       border: 1px solid               #044062 /*{b-bup-border}*/;
+       background:                     #396b9e /*{b-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+       border: 1px solid               #00415e /*{b-bhover-border}*/;
+       background:                     #4b88b6 /*{b-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+       border: 1px solid               #225377 /*{b-bdown-border}*/;
+       background:                     #4e89c5 /*{b-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+       border: 1px solid               #b3b3b3 /*{c-bar-border}*/;
+       background:                     #eee /*{c-bar-background-color}*/;
+       color:                                  #3e3e3e /*{c-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/      #fff /*{c-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+       color:  #3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+       color: #7cc4e7 /*{c-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+       color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+       color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+       border: 1px solid               #aaa /*{c-body-border}*/;
+       color:                                  #333 /*{c-body-color}*/;
+       text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+       background:                     #f9f9f9 /*{c-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+       color:  #333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+       color: #2489ce /*{c-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+       color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+       color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+       border: 1px solid               #ccc /*{c-bup-border}*/;
+       background:                     #eee /*{c-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bup-color}*/;
+       text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+       border: 1px solid               #bbb /*{c-bhover-border}*/;
+       background:                     #dfdfdf /*{c-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bhover-color}*/;
+       text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+       border: 1px solid               #bbb /*{c-bdown-border}*/;
+       background:                     #d6d6d6 /*{c-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bdown-color}*/;
+       text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+       border: 1px solid               #bbb /*{d-bar-border}*/;
+       background:                     #bbb /*{d-bar-background-color}*/;
+       color:                                  #333 /*{d-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-d .ui-link-inherit {
+       color:  #333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+       color: #2489ce /*{d-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+       color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+       color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+       border: 1px solid               #bbb /*{d-body-border}*/;
+       color:                                  #333 /*{d-body-color}*/;
+       text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/     #fff /*{d-body-shadow-color}*/;
+       background:                     #fff /*{d-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+       color:  #333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+       color: #2489ce /*{d-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+       color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+       color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+       border: 1px solid               #bbb /*{d-bup-border}*/;
+       background:                     #fff /*{d-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bup-color}*/;
+       text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+       border: 1px solid               #aaa /*{d-bhover-border}*/;
+       background:                     #eee /*{d-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bhover-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/       #fff /*{d-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+       border: 1px solid               #aaa /*{d-bdown-border}*/;
+       background:                     #eee /*{d-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bdown-color}*/;
+       text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/  #fff /*{d-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+       border: 1px solid               #f4c63f /*{e-bup-border}*/;
+       background:                     #fadb4e /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+       border: 1px solid               #f2c43d /*{e-bhover-border}*/;
+       background:                     #fbe26f /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+       border: 1px solid               #f2c43d /*{e-bdown-border}*/;
+       background:                     #fceda7 /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+/* r
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-r {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-r,
+.ui-bar-r input,
+.ui-bar-r select,
+.ui-bar-r textarea,
+.ui-bar-r button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-r .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-r a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-r a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-r a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-r a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-r,
+.ui-overlay-r {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-r {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-r,
+.ui-body-r input,
+.ui-body-r select,
+.ui-body-r textarea,
+.ui-body-r button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-r .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-r .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-r .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-r .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-r .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-r {
+       border: 1px solid               rgb(245, 219, 196) /*{e-bup-border}*/;
+       background:                     rgb(241, 163, 150) /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 0px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(245, 219, 196) /*{e-bup-background-start}*/), rgb(241, 163, 150) /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/);
+}
+.ui-btn-up-r:visited,
+.ui-btn-up-r a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-r {
+       border: 1px solid               rgb(245, 219, 196) /*{e-bhover-border}*/;
+       background:                     rgb(245, 219, 196) /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 0px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(245, 219, 196) /*{e-bhover-background-start}*/), to( rgb(241, 163, 150) /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-r:visited,
+.ui-btn-hover-r:hover,
+.ui-btn-hover-r a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-r {
+       border: 1px solid               rgb(250, 230, 220) /*{e-bdown-border}*/;
+       background:                     rgb(250, 230, 220) /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 0px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(250, 230, 220) /*{e-bdown-background-start}*/), to( rgb(241, 163, 150) /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-r:visited,
+.ui-btn-down-r:hover,
+.ui-btn-down-r a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-r,
+.ui-btn-hover-r,
+.ui-btn-down-r {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* g
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-g {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-g,
+.ui-bar-g input,
+.ui-bar-g select,
+.ui-bar-g textarea,
+.ui-bar-g button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-g .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-g a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-g a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-g a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-g a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-g,
+.ui-overlay-g {
+        border: 1px solid               #f7c942 /*{e-body-border}*/;
+        color:                                  #222 /*{e-body-color}*/;
+        text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+        background:                     #fff9df /*{e-body-background-color}*/;
+        background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+        background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+        background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+        background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+        background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+        background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+       //background-image:         linear-gradient( rgb(253, 102, 127) /*{e-body-background-start}*/, rgb(189, 215, 175) /*{e-body-background-end}*/);
+}
+.ui-overlay-g {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-g,
+.ui-body-g input,
+.ui-body-g select,
+.ui-body-g textarea,
+.ui-body-g button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-g .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-g .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-g .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-g .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-g .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-g {
+       border: 1px solid               rgb(220, 250, 220) /*{e-bup-border}*/;
+       background:                     rgb(220, 250, 220) /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 0px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 220) /*{e-bup-background-start}*/), to( rgb(99, 220, 179) /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/);
+}
+.ui-btn-up-g:visited,
+.ui-btn-up-g a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-g {
+       border: 1px solid               rgb(220, 250, 220) /*{e-bhover-border}*/;
+       background:                     rgb(220, 250, 220) /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 0px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 220) /*{e-bhover-background-start}*/), to( rgb(99, 220, 179) /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-g:visited,
+.ui-btn-hover-g:hover,
+.ui-btn-hover-g a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-g {
+       border: 1px solid               rgb(220, 250, 250) /*{e-bdown-border}*/;
+       background:                     rgb(220, 250, 250) /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 0px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 250) /*{e-bdown-background-start}*/), to( rgb(99, 220, 179) /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-g:visited,
+.ui-btn-down-g:hover,
+.ui-btn-down-g a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-g,
+.ui-btn-hover-g,
+.ui-btn-down-g {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+/* Structure */
+/* links within "buttons" 
+-----------------------------------------------------------------------------------------------------------*/
+a.ui-link-inherit {
+       text-decoration: none !important;
+}
+/* Active class used as the "on" state across all themes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-active {
+       border: 1px solid               #2373a5 /*{global-active-border}*/;
+       background:                     #5393c5 /*{global-active-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{global-active-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/;
+       text-decoration: none;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/);
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+       color:                                  #fff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+       border-top: 1px solid   #fff;
+       border-color:                   rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-tl {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-tr {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bl {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-br {
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-top {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bottom {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+       }
+.ui-corner-right {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-left {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-all {
+       -moz-border-radius:                             .6em /*{global-radii-blocks}*/;
+       -webkit-border-radius:                          .6em /*{global-radii-blocks}*/;
+       border-radius:                                          .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-none {
+       -moz-border-radius:                                0;
+       -webkit-border-radius:                             0;
+       border-radius:                                             0;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+       border-bottom: rgb(130,130,130);
+       border-bottom: rgba(130,130,130,.3);
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+       zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+       cursor: default !important;
+       pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+       background:                                             #666 /*{global-icon-color}*/;
+       background:                                             rgba(0,0,0,.4) /*{global-icon-disc}*/;
+       background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+       background-repeat: no-repeat;
+       -moz-border-radius:                             9px;
+       -webkit-border-radius:                          9px;
+       border-radius:                                          9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt {
+       background:                                             #fff;
+       background:                                             rgba(255,255,255,.3);
+       background-image: url(images/icons-18-black.png);
+       background-repeat: no-repeat;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+       only screen and (min--moz-device-pixel-ratio: 1.5),
+       only screen and (min-resolution: 240dpi) {
+       
+       .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+       .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+       .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+       .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, 
+       .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+               background-image: url(images/icons-36-white.png);
+               -moz-background-size: 776px 18px;
+               -o-background-size: 776px 18px;
+               -webkit-background-size: 776px 18px;
+               background-size: 776px 18px;
+       }
+       .ui-icon-alt {
+               background-image: url(images/icons-36-black.png);
+       }
+}
+/* plus minus */
+.ui-icon-plus {
+       background-position:    -0 50%;
+}
+.ui-icon-minus {
+       background-position:    -36px 50%;
+}
+/* delete/close */
+.ui-icon-delete {
+       background-position:    -72px 50%;
+}
+/* arrows */
+.ui-icon-arrow-r {
+       background-position:    -108px 50%;
+}
+.ui-icon-arrow-l {
+       background-position:    -144px 50%;
+}
+.ui-icon-arrow-u {
+       background-position:    -180px 50%;
+}
+.ui-icon-arrow-d {
+       background-position:    -216px 50%;
+}
+/* misc */
+.ui-icon-check {
+       background-position:    -252px 50%;
+}
+.ui-icon-gear {
+       background-position:    -288px 50%;
+}
+.ui-icon-refresh {
+       background-position:    -324px 50%;
+}
+.ui-icon-forward {
+       background-position:    -360px 50%;
+}
+.ui-icon-back {
+       background-position:    -396px 50%;
+}
+.ui-icon-grid {
+       background-position:    -432px 50%;
+}
+.ui-icon-star {
+       background-position:    -468px 50%;
+}
+.ui-icon-alert {
+       background-position:    -504px 50%;
+}
+.ui-icon-info {
+       background-position:    -540px 50%;
+}
+.ui-icon-home {
+       background-position:    -576px 50%;
+}
+.ui-icon-search,
+.ui-icon-searchfield:after {
+       background-position:    -612px 50%;
+}
+.ui-icon-checkbox-off {
+       background-position:    -684px 50%;
+}
+.ui-icon-checkbox-on {
+       background-position:    -648px 50%;
+}
+.ui-icon-radio-off {
+       background-position:    -756px 50%;
+}
+.ui-icon-radio-on {
+       background-position:    -720px 50%;
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+       -moz-border-radius: 3px;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+       background-color: transparent;  
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+       background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+       background: url(images/ajax-loader.gif);
+       background-size: 46px 46px;
+}
+/* Button corner classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-tl {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-tr {
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bl {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-br {
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-top {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bottom {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-right {
+        -moz-border-radius-topright:           1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-left {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-all {
+       -moz-border-radius:                             1em /*{global-radii-buttons}*/;
+       -webkit-border-radius:                          1em /*{global-radii-buttons}*/;
+       border-radius:                                          1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-tl,
+.ui-corner-tr,
+.ui-corner-bl,
+.ui-corner-br,
+.ui-corner-top,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-left,
+.ui-corner-all,
+.ui-btn-corner-tl,
+.ui-btn-corner-tr,
+.ui-btn-corner-bl,
+.ui-btn-corner-br,
+.ui-btn-corner-top,
+.ui-btn-corner-bottom,
+.ui-btn-corner-right,
+.ui-btn-corner-left,
+.ui-btn-corner-all {
+  -webkit-background-clip: padding-box;
+     -moz-background-clip: padding;
+          background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+       background: #666;
+       filter: Alpha(Opacity=50);
+       opacity: .5;
+       position: absolute;
+       width: 100%;
+       height: 100%;
+}
+.ui-overlay-shadow {
+       -moz-box-shadow: 0px 0px 12px                   rgba(0,0,0,.6);
+       -webkit-box-shadow: 0px 0px 12px                rgba(0,0,0,.6);
+       box-shadow: 0px 0px 12px                                rgba(0,0,0,.6);
+}
+.ui-shadow {
+       -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                       rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.3);
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.3);
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+       -moz-box-shadow: inset 0px 1px 4px              rgba(0,0,0,.2);
+       -webkit-box-shadow: inset 0px 1px 4px   rgba(0,0,0,.2);
+       box-shadow: inset 0px 1px 4px                   rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+       outline: 0;
+}
+.ui-btn.ui-focus {
+       z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+       -moz-box-shadow: inset 0px 0px 3px              #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: inset 0px 0px 3px   #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+       box-shadow: inset 0px 0px 3px                   #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+       -moz-box-shadow: 0px 0px 12px                   #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: 0px 0px 12px                #387bbe /*{global-active-background-color}*/;
+       box-shadow: 0px 0px 12px                                        #387bbe /*{global-active-background-color}*/;   
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+       -moz-box-shadow: none !important;
+       -webkit-box-shadow: none !important;
+       box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+       outline-width: 1px;
+       outline-style: auto;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; }
+.ui-mobile .ui-page-active { display: block; overflow: visible; }
+/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page { outline: none; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile, .ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile, .ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*fouc*/
+.ui-mobile-rendering > * { visibility: hidden; }
+/*headers, content panels*/
+.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; }
+.ui-bar { font-size: 16px; margin: 0; }
+.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; }
+.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; zoom: 1; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right { position: absolute; top: 3px; }
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext { top: 6px; }
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/*content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -moz-transform: scale(1);
+    opacity: 1;
+       -webkit-animation-name: popin;
+       -moz-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-duration: 350ms;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       opacity: 0;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -moz-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translateX(100%); }
+    to { -webkit-transform: translateX(0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translateX(-100%); }
+    to { -webkit-transform: translateX(0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(-100%); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(100%); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -moz-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -moz-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -moz-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -moz-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-backface-visibility:hidden;
+       -moz-transform:translateX(0);
+}
+.flip.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 175ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+}
+.flip.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -webkit-transform-origin: 0;
+       
+       -moz-backface-visibility:hidden;
+       -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -moz-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+       
+}
+.turn.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -moz-transform-origin: 50% 30%; 
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -moz-transform-origin: none;    
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+/* content configurations. */
+.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; }
+.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.ui-grid-a .ui-block-a { clear: left; }
+/* grid b: 33/33/33 */
+.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.ui-grid-b .ui-block-a { clear: left; }
+/* grid c: 25/25/25/25 */
+.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.ui-grid-c .ui-block-a { clear: left; }
+/* grid d: 20/20/20/20/20 */
+.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: 0;
+}
+.ui-footer-fixed {
+       bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+.ui-page-header-fixed {
+       padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen .ui-content,
+.ui-page-footer-fullscreen .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+       z-index: 10;
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; }
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; }
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; }
+.ui-collapsible-heading .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; }
+.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; }
+.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; }
+.ui-collapsible-content {
+       display: block;
+       margin: 0 -15px;        
+       padding: 10px 15px;
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top: none;      /* Overrides ui-body-* */
+       background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible:first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup-vertical .ui-btn,
+.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; }
+.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; }
+.ui-controlgroup-horizontal .ui-select .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn { float: none; margin: 0; }
+.ui-controlgroup-horizontal .ui-controlgroup-last, .ui-controlgroup-horizontal .ui-select:last-child,
+.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+@media all and (min-width: 450px){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } 
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+       .ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}      
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 15px auto;
+       padding: 0;
+       position: relative;
+       top: -15px;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+       display: block;
+       position: relative; 
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       border: none;
+       overflow: hidden;
+       z-index: 10; 
+       padding: 0;
+}
+.ui-dialog-contain > .ui-content { 
+       padding: 15px; 
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10; 
+       padding: 0 15px; 
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important;  /* See line #553 of popup.js */
+}
+.ui-popup-screen {
+       background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0px;
+       left: 0px;
+       right: 0px;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em 7px;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em 7px;
+}
+.ui-popup .ui-title {
+       font-size: 16px;
+       font-weight: bold;
+       margin-top: .5em;
+       margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+@media all and (min-width: 450px){
+       .ui-popup .ui-field-contain label.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-label,
+       .ui-popup .ui-field-contain label.ui-select,
+       .ui-popup .ui-field-contain label.ui-input-text {
+               font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em;
+       }
+       .ui-popup .ui-field-contain .ui-btn.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-controls,
+       .ui-popup .ui-field-contain .ui-select,
+       .ui-popup .ui-field-contain input.ui-input-text,
+       .ui-popup .ui-field-contain textarea.ui-input-text,
+       .ui-popup .ui-field-contain .ui-input-search {
+               width: 100%; display: block;
+       }
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+       position: absolute; 
+       top: -9px;
+       margin: 0;
+       z-index: 1101;
+}
+.ui-popup > .ui-btn-left { left: -9px; }
+.ui-popup > .ui-btn-right { right: -9px; }
+.ui-popup.ui-corner-all > .ui-header,
+.ui-popup.ui-corner-all ~ .ui-content,
+.ui-popup.ui-corner-all > .ui-content:first-child {
+       -webkit-border-top-left-radius:  inherit;
+       border-top-left-radius:          inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius:         inherit;
+}
+.ui-popup.ui-corner-all > .ui-content,
+.ui-popup.ui-corner-all > .ui-footer,
+.ui-popup.ui-corner-all > .ui-header:nth-child(n):last-child {
+       -webkit-border-bottom-left-radius:  inherit;
+       border-bottom-left-radius:          inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius:         inherit;
+}
+.ui-popup.ui-corner-all > .ui-content:nth-child(2),
+.ui-popup.ui-corner-all > .ui-header:nth-child(2) {
+       -webkit-border-top-left-radius:  0;
+       border-top-left-radius:          0;
+       -webkit-border-top-right-radius: 0;
+       border-top-right-radius:         0;
+}
+.ui-popup.ui-corner-all > .ui-content:nth-last-child(1n+2),
+.ui-popup.ui-corner-all > .ui-footer:nth-last-child(1n+2) {
+       -webkit-border-bottom-left-radius:  0;
+       border-bottom-left-radius:          0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius:         0;
+}
+.ui-popup.ui-corner-all > .ui-header:only-child,
+.ui-popup.ui-corner-all > .ui-footer:only-child {
+       -webkit-border-radius: inherit;
+       border-radius:         inherit;
+}
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin-top: .5em; margin-bottom: .5em; text-align: left; z-index: 2; }
+.ui-checkbox .ui-btn.ui-mini, .ui-radio .ui-btn.ui-mini { margin: .25em 0; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 450px){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { overflow: hidden; opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* labels */
+label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+/*listbox*/
+.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.ui-selectmenu-hidden { top: -99999px; left: -9999px; }
+.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; }
+.ui-selectmenu-list .ui-li .ui-icon { display: block; }
+.ui-li.ui-selectmenu-placeholder { display: none; }
+.ui-selectmenu .ui-header { margin: 0; padding: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 78%; display: inline-block; }
+       .ui-hide-label .ui-select { width: 100%; } 
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; line-height: 1.4; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text { margin: 0; }
+input.ui-input-text, textarea.ui-input-text, .ui-input-search { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+.ui-input-search { padding: 0 30px; margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-input-search { margin: 0; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden { display: none; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+textarea.ui-mini { height: 45px; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-input-text  { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text, 
+       .ui-field-contain textarea.ui-input-text, 
+       .ui-field-contain .ui-input-search { width: 78%; display: inline-block; } 
+       .ui-hide-label input.ui-input-text, 
+       .ui-hide-label textarea.ui-input-text, 
+       .ui-hide-label .ui-input-search { width: 100%; }
+       .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ }
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style:none; padding:0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn { margin: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li-last, .ui-li.ui-field-contain.ui-li-last { border-bottom-width: 1px; }
+.ui-collapsible [class*="ui-body"] > .ui-listview:not(.ui-listview-inset) .ui-li-last { border-bottom-width: 0; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li:first-child { border-top-width: 0; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last { -webkit-border-bottom-left-radius: inherit; -webkit-border-bottom-right-radius: inherit; border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last .ui-li-link-alt { -webkit-border-bottom-right-radius: inherit; border-bottom-right-radius: inherit; }
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 60px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}       
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+input.ui-slider-input,
+.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; background-image: none; padding: .4em; margin: .5em 0; line-height: 1.4; font-size: 16px; outline: 0; }
+input.ui-slider-input.ui-mini,
+.ui-field-contain input.ui-slider-input.ui-mini { width: 45px; margin: .25em 0; font-size: 14px; }
+.ui-field-contain input.ui-slider-input { margin: 0; }
+input.ui-slider-input, .ui-field-contain input.ui-slider-input { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; box-sizing: content-box; }
+/* Fixes input fields being to small on Safari/Mac because of the up and down arrows. */
+.ui-slider-input::-webkit-outer-spin-button { margin: 0; }
+select.ui-slider-switch { display: none; }
+div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; }
+div.ui-slider-mini { height: 12px; margin-left: 10px; top: 2px; }
+div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; }
+.ui-controlgroup a.ui-slider-handle, a.ui-btn.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin: -15px 0 0 -15px; outline: 0; }
+a.ui-btn.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; }
+div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; }
+div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; border-top: none; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain div.ui-slider { width: 43%; }
+       .ui-field-contain div.ui-slider-switch { width: 5.5em; }
+}      
+div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; }
+a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; }
+div.ui-slider-switch .ui-slider-handle { margin: 1px 0 0 -15px; }
+.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; }
+div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; }
+div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; }
+div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; }
+div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; }
+span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; }
+.ui-slider-mini span.ui-slider-label { font-size: 14px; }
+span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; }
+span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;}
+.ui-slider-inline { width: 120px; display: inline-block; }
index 720b3d7fcc5b65c30cf3c128186ff1f9774174af..b3beee7ac027aaaa7069a4cd6c1d707a188a9bcd 100755 (executable)
@@ -44,11 +44,11 @@ Authors:
 </head>
 <body bgcolor="FFFFFF" >
 <div data-role="page" id="home_ui">
-    <div id="tool_title" data-role="header" data-position="fixed"></div>
+    <div id="tool_title" data-role="header"></div>
     <div id="app_selector" data-role="content">
         <ul data-role="listview" id="mylist" data-divider-theme="b" data-inset="true"></ul>
     </div>
-    <div data-role="footer" data-position="fixed">
+    <div id="control" data-role="footer" >
         <div data-role="controlgroup" data-type="horizontal">
             <a href="javascript:exportResult();" data-role="button" data-icon="gear">Export</a>
             <a href="javascript:resetResult();" data-role="button" data-icon="refresh">Reset</a>
@@ -68,6 +68,7 @@ Authors:
 </div>
 <script>
     updateToolTitle();
+       circle();
 </script>
 </body>
 </html>
diff --git a/wearable/jquery-1.10.2.min.js b/wearable/jquery-1.10.2.min.js
new file mode 100755 (executable)
index 0000000..da41706
--- /dev/null
@@ -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);
index 95581e259248922d1f323cdaea7ec1ffca5450be..ca14dfc145187f2af66ddaad84ea2b65cfd491ab 100755 (executable)
@@ -30,6 +30,52 @@ Authors:
 
 */
 
+function circle(){
+    try {
+        // Checks if a device supports bluetooth API or not
+        var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape.cicrle");
+        console.log("Shape = " + shape);
+    } catch (error) {
+        //alert("Error name: " + error.name + ", message: " + error.message);
+        console.log("Error name: " + error.name + ", message: " + error.message);
+    }
+
+    if(shape==true){
+        $('#home_ui').css('max-width', '100%');
+        $('#home_ui').css('max-height', '100%');
+        $('#home_ui').css('background-color', 'white');
+        $('#home_ui').css('margin-top', '10%');
+        $('#home_ui').css('margin-bottom', '10%');
+        $('#home_ui').css('margin-left', '10%');
+        $('#home_ui').css('margin-right', '10%');
+        $('#home_ui').css('position', 'static');
+        /*
+        $('#tool_title').css('max-height', '100%');
+        $('#tool_title').css('background-color', 'white');
+        $('#tool_title').css('margin-top', '20%');
+        $('#tool_title').css('margin-bottom', '20%');
+        $('#tool_title').css('margin-left', '20%');
+        $('#tool_title').css('margin-right', '20%');
+        $('#app_selector').css('max-height', '100%');
+        $('#app_selector').css('background-color', 'white');
+        $('#app_selector').css('margin-top', '20%');
+        $('#app_selector').css('margin-bottom', '20%');
+        $('#app_selector').css('margin-left', '20%');
+        $('#app_selector').css('margin-right', '20%');
+        $('#mylist').css('max-height', '100%');
+        $('#mylist').css('background-color', 'white');
+        $('#mylist').css('margin-top', '20%');
+        $('#mylist').css('margin-bottom', '20%');
+        $('#mylist').css('margin-left', '20%');
+        $('#mylist').css('margin-right', '20%');
+        */
+        $('div[data-role="footer"]').css('max-width', '100%');
+        $('div[data-role="footer"]').css('max-height', '100%');
+        $('div[data-role="footer"]').css('padding-bottom', '5%');
+        $('div[data-role="footer"]').css('background-color', 'white');
+    }
+}
+
 var _appURL;
 var _resultXML;
 var Tests;
index 546ec308b3c6f5a26535c74c06354698e1cf8efa..2d634e6c28dacdfa277434e7f3c3d3ee32bdb8cd 100755 (executable)
@@ -78,6 +78,21 @@ function updateFooterButton(){
     $("#popup_info").css("max-height", maxHeight);
     $("#popup_info").css("margin-bottom", "30px");
     $("#popup_info").css("overflow-y", "auto");
+       
+       $('body').css('max-width', '100%');
+               $('body').css('max-height', '100%');
+               $('body').css('background-color', 'white');
+               $('body').css('margin-top', '10%');
+               $('body').css('margin-bottom', '10%');
+               $('body').css('margin-left', '10%');
+               $('body').css('margin-right', '10%');
+               $('body').css('position', 'static');
+       
+               $('div[data-role="footer"]').css('max-height', '100%');
+               $('div[data-role="footer"]').css('background-color', 'white');
+
+       
+               
 }
 
 $(document).bind('pagecreate', updateFooterButton);
diff --git a/wearable/js/thirdparty/jquery.mobile.css b/wearable/js/thirdparty/jquery.mobile.css
new file mode 100755 (executable)
index 0000000..3773a21
--- /dev/null
@@ -0,0 +1,2609 @@
+/*
+* jQuery Mobile Framework Git Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700
+* http://jquerymobile.com
+*
+* Copyright 2012 jQuery Foundation and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+       border: 1px solid               #333 /*{a-bar-border}*/;
+       background:                     #111 /*{a-bar-background-color}*/;
+       color:                                  #fff /*{a-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+       color: #fff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+       color: #7cc4e7 /*{a-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+       color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+       color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+       border: 1px solid               #444 /*{a-body-border}*/;
+       background:                     #222 /*{a-body-background-color}*/;
+       color:                                  #fff /*{a-body-color}*/;
+       text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);       
+}
+.ui-overlay-a {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+       color:  #fff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+       color: #2489ce /*{a-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+       color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+       color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+       border: 1px solid               #111 /*{a-bup-border}*/;
+       background:                     #333 /*{a-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+       border: 1px solid               #000 /*{a-bhover-border}*/;
+       background:                     #444 /*{a-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+       border: 1px solid               #000 /*{a-bdown-border}*/;
+       background:                     #222 /*{a-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+       border: 1px solid               #456f9a /*{b-bar-border}*/;
+       background:                     #5e87b0 /*{b-bar-background-color}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+       color:  #fff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+       color: #ddf0f8 /*{b-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+       color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+       color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+       border: 1px solid               #999 /*{b-body-border}*/;
+       background:                     #f3f3f3 /*{b-body-background-color}*/;
+       color:                                  #222 /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+       color:  #333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+       color: #2489ce /*{b-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+       color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+       color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+       border: 1px solid               #044062 /*{b-bup-border}*/;
+       background:                     #396b9e /*{b-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+       border: 1px solid               #00415e /*{b-bhover-border}*/;
+       background:                     #4b88b6 /*{b-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+       border: 1px solid               #225377 /*{b-bdown-border}*/;
+       background:                     #4e89c5 /*{b-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+       border: 1px solid               #b3b3b3 /*{c-bar-border}*/;
+       background:                     #eee /*{c-bar-background-color}*/;
+       color:                                  #3e3e3e /*{c-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/      #fff /*{c-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+       color:  #3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+       color: #7cc4e7 /*{c-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+       color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+       color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+       border: 1px solid               #aaa /*{c-body-border}*/;
+       color:                                  #333 /*{c-body-color}*/;
+       text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+       background:                     #f9f9f9 /*{c-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+       color:  #333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+       color: #2489ce /*{c-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+       color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+       color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+       border: 1px solid               #ccc /*{c-bup-border}*/;
+       background:                     #eee /*{c-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bup-color}*/;
+       text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+       border: 1px solid               #bbb /*{c-bhover-border}*/;
+       background:                     #dfdfdf /*{c-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bhover-color}*/;
+       text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+       border: 1px solid               #bbb /*{c-bdown-border}*/;
+       background:                     #d6d6d6 /*{c-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bdown-color}*/;
+       text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+       border: 1px solid               #bbb /*{d-bar-border}*/;
+       background:                     #bbb /*{d-bar-background-color}*/;
+       color:                                  #333 /*{d-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-d .ui-link-inherit {
+       color:  #333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+       color: #2489ce /*{d-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+       color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+       color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+       border: 1px solid               #bbb /*{d-body-border}*/;
+       color:                                  #333 /*{d-body-color}*/;
+       text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/     #fff /*{d-body-shadow-color}*/;
+       background:                     #fff /*{d-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+       color:  #333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+       color: #2489ce /*{d-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+       color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+       color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+       border: 1px solid               #bbb /*{d-bup-border}*/;
+       background:                     #fff /*{d-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bup-color}*/;
+       text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+       border: 1px solid               #aaa /*{d-bhover-border}*/;
+       background:                     #eee /*{d-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bhover-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/       #fff /*{d-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+       border: 1px solid               #aaa /*{d-bdown-border}*/;
+       background:                     #eee /*{d-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bdown-color}*/;
+       text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/  #fff /*{d-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+       border: 1px solid               #f4c63f /*{e-bup-border}*/;
+       background:                     #fadb4e /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+       border: 1px solid               #f2c43d /*{e-bhover-border}*/;
+       background:                     #fbe26f /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+       border: 1px solid               #f2c43d /*{e-bdown-border}*/;
+       background:                     #fceda7 /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+/* r
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-r {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-r,
+.ui-bar-r input,
+.ui-bar-r select,
+.ui-bar-r textarea,
+.ui-bar-r button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-r .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-r a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-r a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-r a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-r a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-r,
+.ui-overlay-r {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-r {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-r,
+.ui-body-r input,
+.ui-body-r select,
+.ui-body-r textarea,
+.ui-body-r button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-r .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-r .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-r .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-r .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-r .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-r {
+       border: 1px solid               rgb(245, 219, 196) /*{e-bup-border}*/;
+       background:                     rgb(241, 163, 150) /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 0px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(245, 219, 196) /*{e-bup-background-start}*/), rgb(241, 163, 150) /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(245, 219, 196) /*{e-bup-background-start}*/, rgb(241, 163, 150) /*{e-bup-background-end}*/);
+}
+.ui-btn-up-r:visited,
+.ui-btn-up-r a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-r {
+       border: 1px solid               rgb(245, 219, 196) /*{e-bhover-border}*/;
+       background:                     rgb(245, 219, 196) /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 0px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(245, 219, 196) /*{e-bhover-background-start}*/), to( rgb(241, 163, 150) /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(245, 219, 196) /*{e-bhover-background-start}*/, rgb(241, 163, 150) /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-r:visited,
+.ui-btn-hover-r:hover,
+.ui-btn-hover-r a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-r {
+       border: 1px solid               rgb(250, 230, 220) /*{e-bdown-border}*/;
+       background:                     rgb(250, 230, 220) /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 0px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(250, 230, 220) /*{e-bdown-background-start}*/), to( rgb(241, 163, 150) /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(250, 230, 220) /*{e-bdown-background-start}*/, rgb(241, 163, 150) /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-r:visited,
+.ui-btn-down-r:hover,
+.ui-btn-down-r a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-r,
+.ui-btn-hover-r,
+.ui-btn-down-r {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* g
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-g {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-g,
+.ui-bar-g input,
+.ui-bar-g select,
+.ui-bar-g textarea,
+.ui-bar-g button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-g .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-g a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-g a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-g a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-g a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-g,
+.ui-overlay-g {
+        border: 1px solid               #f7c942 /*{e-body-border}*/;
+        color:                                  #222 /*{e-body-color}*/;
+        text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+        background:                     #fff9df /*{e-body-background-color}*/;
+        background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+        background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+        background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+        background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+        background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+        background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+       //background-image:         linear-gradient( rgb(253, 102, 127) /*{e-body-background-start}*/, rgb(189, 215, 175) /*{e-body-background-end}*/);
+}
+.ui-overlay-g {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-g,
+.ui-body-g input,
+.ui-body-g select,
+.ui-body-g textarea,
+.ui-body-g button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-g .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-g .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-g .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-g .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-g .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-g {
+       border: 1px solid               rgb(220, 250, 220) /*{e-bup-border}*/;
+       background:                     rgb(220, 250, 220) /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 0px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 220) /*{e-bup-background-start}*/), to( rgb(99, 220, 179) /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 220) /*{e-bup-background-start}*/, rgb(99, 220, 179) /*{e-bup-background-end}*/);
+}
+.ui-btn-up-g:visited,
+.ui-btn-up-g a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-g {
+       border: 1px solid               rgb(220, 250, 220) /*{e-bhover-border}*/;
+       background:                     rgb(220, 250, 220) /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 0px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 220) /*{e-bhover-background-start}*/), to( rgb(99, 220, 179) /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 220) /*{e-bhover-background-start}*/, rgb(99, 220, 179) /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-g:visited,
+.ui-btn-hover-g:hover,
+.ui-btn-hover-g a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-g {
+       border: 1px solid               rgb(220, 250, 250) /*{e-bdown-border}*/;
+       background:                     rgb(220, 250, 250) /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 0px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( rgb(220, 250, 250) /*{e-bdown-background-start}*/), to( rgb(99, 220, 179) /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( rgb(220, 250, 250) /*{e-bdown-background-start}*/, rgb(99, 220, 179) /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-g:visited,
+.ui-btn-down-g:hover,
+.ui-btn-down-g a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-g,
+.ui-btn-hover-g,
+.ui-btn-down-g {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+/* Structure */
+/* links within "buttons" 
+-----------------------------------------------------------------------------------------------------------*/
+a.ui-link-inherit {
+       text-decoration: none !important;
+}
+/* Active class used as the "on" state across all themes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-active {
+       border: 1px solid               #2373a5 /*{global-active-border}*/;
+       background:                     #5393c5 /*{global-active-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{global-active-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/;
+       text-decoration: none;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/);
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+       color:                                  #fff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+       border-top: 1px solid   #fff;
+       border-color:                   rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-tl {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-tr {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bl {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-br {
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-top {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bottom {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+       }
+.ui-corner-right {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-left {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-all {
+       -moz-border-radius:                             .6em /*{global-radii-blocks}*/;
+       -webkit-border-radius:                          .6em /*{global-radii-blocks}*/;
+       border-radius:                                          .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-none {
+       -moz-border-radius:                                0;
+       -webkit-border-radius:                             0;
+       border-radius:                                             0;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+       border-bottom: rgb(130,130,130);
+       border-bottom: rgba(130,130,130,.3);
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+       zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+       cursor: default !important;
+       pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+       background:                                             #666 /*{global-icon-color}*/;
+       background:                                             rgba(0,0,0,.4) /*{global-icon-disc}*/;
+       background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+       background-repeat: no-repeat;
+       -moz-border-radius:                             9px;
+       -webkit-border-radius:                          9px;
+       border-radius:                                          9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt {
+       background:                                             #fff;
+       background:                                             rgba(255,255,255,.3);
+       background-image: url(images/icons-18-black.png);
+       background-repeat: no-repeat;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+       only screen and (min--moz-device-pixel-ratio: 1.5),
+       only screen and (min-resolution: 240dpi) {
+       
+       .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+       .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+       .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+       .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, 
+       .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+               background-image: url(images/icons-36-white.png);
+               -moz-background-size: 776px 18px;
+               -o-background-size: 776px 18px;
+               -webkit-background-size: 776px 18px;
+               background-size: 776px 18px;
+       }
+       .ui-icon-alt {
+               background-image: url(images/icons-36-black.png);
+       }
+}
+/* plus minus */
+.ui-icon-plus {
+       background-position:    -0 50%;
+}
+.ui-icon-minus {
+       background-position:    -36px 50%;
+}
+/* delete/close */
+.ui-icon-delete {
+       background-position:    -72px 50%;
+}
+/* arrows */
+.ui-icon-arrow-r {
+       background-position:    -108px 50%;
+}
+.ui-icon-arrow-l {
+       background-position:    -144px 50%;
+}
+.ui-icon-arrow-u {
+       background-position:    -180px 50%;
+}
+.ui-icon-arrow-d {
+       background-position:    -216px 50%;
+}
+/* misc */
+.ui-icon-check {
+       background-position:    -252px 50%;
+}
+.ui-icon-gear {
+       background-position:    -288px 50%;
+}
+.ui-icon-refresh {
+       background-position:    -324px 50%;
+}
+.ui-icon-forward {
+       background-position:    -360px 50%;
+}
+.ui-icon-back {
+       background-position:    -396px 50%;
+}
+.ui-icon-grid {
+       background-position:    -432px 50%;
+}
+.ui-icon-star {
+       background-position:    -468px 50%;
+}
+.ui-icon-alert {
+       background-position:    -504px 50%;
+}
+.ui-icon-info {
+       background-position:    -540px 50%;
+}
+.ui-icon-home {
+       background-position:    -576px 50%;
+}
+.ui-icon-search,
+.ui-icon-searchfield:after {
+       background-position:    -612px 50%;
+}
+.ui-icon-checkbox-off {
+       background-position:    -684px 50%;
+}
+.ui-icon-checkbox-on {
+       background-position:    -648px 50%;
+}
+.ui-icon-radio-off {
+       background-position:    -756px 50%;
+}
+.ui-icon-radio-on {
+       background-position:    -720px 50%;
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+       -moz-border-radius: 3px;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+       background-color: transparent;  
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+       background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+       background: url(images/ajax-loader.gif);
+       background-size: 46px 46px;
+}
+/* Button corner classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-tl {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-tr {
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bl {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-br {
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-top {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bottom {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-right {
+        -moz-border-radius-topright:           1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-left {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-all {
+       -moz-border-radius:                             1em /*{global-radii-buttons}*/;
+       -webkit-border-radius:                          1em /*{global-radii-buttons}*/;
+       border-radius:                                          1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-tl,
+.ui-corner-tr,
+.ui-corner-bl,
+.ui-corner-br,
+.ui-corner-top,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-left,
+.ui-corner-all,
+.ui-btn-corner-tl,
+.ui-btn-corner-tr,
+.ui-btn-corner-bl,
+.ui-btn-corner-br,
+.ui-btn-corner-top,
+.ui-btn-corner-bottom,
+.ui-btn-corner-right,
+.ui-btn-corner-left,
+.ui-btn-corner-all {
+  -webkit-background-clip: padding-box;
+     -moz-background-clip: padding;
+          background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+       background: #666;
+       filter: Alpha(Opacity=50);
+       opacity: .5;
+       position: absolute;
+       width: 100%;
+       height: 100%;
+}
+.ui-overlay-shadow {
+       -moz-box-shadow: 0px 0px 12px                   rgba(0,0,0,.6);
+       -webkit-box-shadow: 0px 0px 12px                rgba(0,0,0,.6);
+       box-shadow: 0px 0px 12px                                rgba(0,0,0,.6);
+}
+.ui-shadow {
+       -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                       rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.3);
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.3);
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+       -moz-box-shadow: inset 0px 1px 4px              rgba(0,0,0,.2);
+       -webkit-box-shadow: inset 0px 1px 4px   rgba(0,0,0,.2);
+       box-shadow: inset 0px 1px 4px                   rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+       outline: 0;
+}
+.ui-btn.ui-focus {
+       z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+       -moz-box-shadow: inset 0px 0px 3px              #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: inset 0px 0px 3px   #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+       box-shadow: inset 0px 0px 3px                   #387bbe /*{global-active-background-color}*/, 0px 0px 9px               #387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+       -moz-box-shadow: 0px 0px 12px                   #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: 0px 0px 12px                #387bbe /*{global-active-background-color}*/;
+       box-shadow: 0px 0px 12px                                        #387bbe /*{global-active-background-color}*/;   
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+       -moz-box-shadow: none !important;
+       -webkit-box-shadow: none !important;
+       box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+       outline-width: 1px;
+       outline-style: auto;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; }
+.ui-mobile .ui-page-active { display: block; overflow: visible; }
+/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page { outline: none; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile, .ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile, .ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*fouc*/
+.ui-mobile-rendering > * { visibility: hidden; }
+/*headers, content panels*/
+.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; }
+.ui-bar { font-size: 16px; margin: 0; }
+.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; }
+.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; zoom: 1; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right { position: absolute; top: 3px; }
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext { top: 6px; }
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/*content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -moz-transform: scale(1);
+    opacity: 1;
+       -webkit-animation-name: popin;
+       -moz-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-duration: 350ms;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       opacity: 0;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -moz-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translateX(100%); }
+    to { -webkit-transform: translateX(0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translateX(-100%); }
+    to { -webkit-transform: translateX(0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(-100%); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(100%); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -moz-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -moz-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -moz-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -moz-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-backface-visibility:hidden;
+       -moz-transform:translateX(0);
+}
+.flip.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 175ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+}
+.flip.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -webkit-transform-origin: 0;
+       
+       -moz-backface-visibility:hidden;
+       -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -moz-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+       
+}
+.turn.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -moz-transform-origin: 50% 30%; 
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -moz-transform-origin: none;    
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+/* content configurations. */
+.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; }
+.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.ui-grid-a .ui-block-a { clear: left; }
+/* grid b: 33/33/33 */
+.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.ui-grid-b .ui-block-a { clear: left; }
+/* grid c: 25/25/25/25 */
+.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.ui-grid-c .ui-block-a { clear: left; }
+/* grid d: 20/20/20/20/20 */
+.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: 0;
+}
+.ui-footer-fixed {
+       bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+.ui-page-header-fixed {
+       padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen .ui-content,
+.ui-page-footer-fullscreen .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+       z-index: 10;
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; }
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; }
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; }
+.ui-collapsible-heading .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; }
+.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; }
+.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; }
+.ui-collapsible-content {
+       display: block;
+       margin: 0 -15px;        
+       padding: 10px 15px;
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top: none;      /* Overrides ui-body-* */
+       background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible:first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup-vertical .ui-btn,
+.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; }
+.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; }
+.ui-controlgroup-horizontal .ui-select .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn { float: none; margin: 0; }
+.ui-controlgroup-horizontal .ui-controlgroup-last, .ui-controlgroup-horizontal .ui-select:last-child,
+.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+@media all and (min-width: 450px){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } 
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+       .ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}      
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 15px auto;
+       padding: 0;
+       position: relative;
+       top: -15px;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+       display: block;
+       position: relative; 
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       border: none;
+       overflow: hidden;
+       z-index: 10; 
+       padding: 0;
+}
+.ui-dialog-contain > .ui-content { 
+       padding: 15px; 
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10; 
+       padding: 0 15px; 
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important;  /* See line #553 of popup.js */
+}
+.ui-popup-screen {
+       background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0px;
+       left: 0px;
+       right: 0px;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em 7px;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em 7px;
+}
+.ui-popup .ui-title {
+       font-size: 16px;
+       font-weight: bold;
+       margin-top: .5em;
+       margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+@media all and (min-width: 450px){
+       .ui-popup .ui-field-contain label.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-label,
+       .ui-popup .ui-field-contain label.ui-select,
+       .ui-popup .ui-field-contain label.ui-input-text {
+               font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em;
+       }
+       .ui-popup .ui-field-contain .ui-btn.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-controls,
+       .ui-popup .ui-field-contain .ui-select,
+       .ui-popup .ui-field-contain input.ui-input-text,
+       .ui-popup .ui-field-contain textarea.ui-input-text,
+       .ui-popup .ui-field-contain .ui-input-search {
+               width: 100%; display: block;
+       }
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+       position: absolute; 
+       top: -9px;
+       margin: 0;
+       z-index: 1101;
+}
+.ui-popup > .ui-btn-left { left: -9px; }
+.ui-popup > .ui-btn-right { right: -9px; }
+.ui-popup.ui-corner-all > .ui-header,
+.ui-popup.ui-corner-all ~ .ui-content,
+.ui-popup.ui-corner-all > .ui-content:first-child {
+       -webkit-border-top-left-radius:  inherit;
+       border-top-left-radius:          inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius:         inherit;
+}
+.ui-popup.ui-corner-all > .ui-content,
+.ui-popup.ui-corner-all > .ui-footer,
+.ui-popup.ui-corner-all > .ui-header:nth-child(n):last-child {
+       -webkit-border-bottom-left-radius:  inherit;
+       border-bottom-left-radius:          inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius:         inherit;
+}
+.ui-popup.ui-corner-all > .ui-content:nth-child(2),
+.ui-popup.ui-corner-all > .ui-header:nth-child(2) {
+       -webkit-border-top-left-radius:  0;
+       border-top-left-radius:          0;
+       -webkit-border-top-right-radius: 0;
+       border-top-right-radius:         0;
+}
+.ui-popup.ui-corner-all > .ui-content:nth-last-child(1n+2),
+.ui-popup.ui-corner-all > .ui-footer:nth-last-child(1n+2) {
+       -webkit-border-bottom-left-radius:  0;
+       border-bottom-left-radius:          0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius:         0;
+}
+.ui-popup.ui-corner-all > .ui-header:only-child,
+.ui-popup.ui-corner-all > .ui-footer:only-child {
+       -webkit-border-radius: inherit;
+       border-radius:         inherit;
+}
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin-top: .5em; margin-bottom: .5em; text-align: left; z-index: 2; }
+.ui-checkbox .ui-btn.ui-mini, .ui-radio .ui-btn.ui-mini { margin: .25em 0; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 450px){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { overflow: hidden; opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* labels */
+label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+/*listbox*/
+.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.ui-selectmenu-hidden { top: -99999px; left: -9999px; }
+.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; }
+.ui-selectmenu-list .ui-li .ui-icon { display: block; }
+.ui-li.ui-selectmenu-placeholder { display: none; }
+.ui-selectmenu .ui-header { margin: 0; padding: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 78%; display: inline-block; }
+       .ui-hide-label .ui-select { width: 100%; } 
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; line-height: 1.4; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text { margin: 0; }
+input.ui-input-text, textarea.ui-input-text, .ui-input-search { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+.ui-input-search { padding: 0 30px; margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-input-search { margin: 0; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden { display: none; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+textarea.ui-mini { height: 45px; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-input-text  { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text, 
+       .ui-field-contain textarea.ui-input-text, 
+       .ui-field-contain .ui-input-search { width: 78%; display: inline-block; } 
+       .ui-hide-label input.ui-input-text, 
+       .ui-hide-label textarea.ui-input-text, 
+       .ui-hide-label .ui-input-search { width: 100%; }
+       .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ }
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style:none; padding:0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn { margin: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li-last, .ui-li.ui-field-contain.ui-li-last { border-bottom-width: 1px; }
+.ui-collapsible [class*="ui-body"] > .ui-listview:not(.ui-listview-inset) .ui-li-last { border-bottom-width: 0; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li:first-child { border-top-width: 0; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last { -webkit-border-bottom-left-radius: inherit; -webkit-border-bottom-right-radius: inherit; border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last .ui-li-link-alt { -webkit-border-bottom-right-radius: inherit; border-bottom-right-radius: inherit; }
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 60px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}       
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+input.ui-slider-input,
+.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; background-image: none; padding: .4em; margin: .5em 0; line-height: 1.4; font-size: 16px; outline: 0; }
+input.ui-slider-input.ui-mini,
+.ui-field-contain input.ui-slider-input.ui-mini { width: 45px; margin: .25em 0; font-size: 14px; }
+.ui-field-contain input.ui-slider-input { margin: 0; }
+input.ui-slider-input, .ui-field-contain input.ui-slider-input { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; box-sizing: content-box; }
+/* Fixes input fields being to small on Safari/Mac because of the up and down arrows. */
+.ui-slider-input::-webkit-outer-spin-button { margin: 0; }
+select.ui-slider-switch { display: none; }
+div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; }
+div.ui-slider-mini { height: 12px; margin-left: 10px; top: 2px; }
+div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; }
+.ui-controlgroup a.ui-slider-handle, a.ui-btn.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin: -15px 0 0 -15px; outline: 0; }
+a.ui-btn.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; }
+div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; }
+div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; border-top: none; }
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain div.ui-slider { width: 43%; }
+       .ui-field-contain div.ui-slider-switch { width: 5.5em; }
+}      
+div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; }
+a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; }
+div.ui-slider-switch .ui-slider-handle { margin: 1px 0 0 -15px; }
+.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; }
+div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; }
+div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; }
+div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; }
+div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; }
+span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; }
+.ui-slider-mini span.ui-slider-label { font-size: 14px; }
+span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; }
+span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;}
+.ui-slider-inline { width: 120px; display: inline-block; }
index 67d187f97af04ac599f3137bf825f0d7b97bdd64..7c726a631fddf80d3ef1500df563f1f725cd8408 100755 (executable)
@@ -2,7 +2,7 @@
 
 Summary: TCT Behavior Tests
 Name: tct-behavior-tests
-Version: 2.3b
+Version: 2.3.1
 Release: 1
 License: BSD
 Group: test/tct/behavior
diff --git a/wearable/res/html/wrtgeolocation.html b/wearable/res/html/wrtgeolocation.html
new file mode 100755 (executable)
index 0000000..4f2ee43
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<p id="demo">Please Wait While Your Location Loads....</p>
+<script>
+var x = document.getElementById("demo");
+
+function getLocation() {
+    if (navigator.geolocation) {
+        navigator.geolocation.getCurrentPosition(showPosition);
+    } else {
+        x.innerHTML = "Geolocation is not supported by this browser.";
+    }
+}
+
+function showPosition(position) {
+    x.innerHTML="Latitude: " + position.coords.latitude +
+    "<br>Longitude: " + position.coords.longitude;
+}
+
+</script>
+<body>
+<Input type="button" onclick="getLocation()" value="get location">
+</body>
+</html>
\ No newline at end of file
diff --git a/wearable/res/html/wrtwebnotify.html b/wearable/res/html/wrtwebnotify.html
new file mode 100755 (executable)
index 0000000..811b508
--- /dev/null
@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html>
+   <head>
+      <meta charset="UTF-8">
+      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+      <meta name="author" content="Aurelio De Rosa">
+      <title>Web Notifications API Demo by Aurelio De Rosa</title>
+      <style>
+       #div1{
+       position:absolute;
+       left:0px;
+       top:0px;
+        }
+        *
+         {
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+         }
+
+         body
+         {
+            max-width: 500px;
+            margin: 2em auto;
+            padding: 0 0.5em;
+            font-size: 20px;
+         }
+
+         h1
+         {
+            text-align: center;
+         }
+
+         .api-support
+         {
+            display: block;
+         }
+
+         .hidden
+         {
+            display: none;
+         }
+
+         #custom-notification
+         {
+            margin-top: 1em;
+         }
+
+         label
+         {
+            display: block;
+         }
+
+         input[name="title"],
+         textarea
+         {
+            width: 100%;
+         }
+
+         input[name="title"]
+         {
+            height: 2em;
+         }
+
+         textarea
+         {
+            height: 5em;
+         }
+
+         .buttons-wrapper
+         {
+            text-align: center;
+         }
+
+         .button-demo
+         {
+            padding: 0.5em;
+            margin: 1em;
+         }
+
+         #log
+         {
+            height: 200px;
+            width: 100%;
+            overflow-y: scroll;
+            border: 1px solid #333333;
+            line-height: 1.3em;
+         }
+
+         .author
+         {
+            display: block;
+            margin-top: 1em;
+         }
+      </style>
+   </head>
+   <body>
+    <!--  <a href="http://www.sitepoint.com/introduction-web-notifications-api/">Go back to the article</a>
+
+      <h1>Web Notifications API</h1>
+
+      <span id="wn-unsupported" class="api-support hidden">API not supported</span>
+
+      <form id="custom-notification" action="">
+         <label for="title">Title:</label>
+         <input type="text" id="title" name="title" />
+
+         <label for="body">Body:</label>
+         <textarea id="body" name="body"></textarea>-->
+        <div id="div1">
+         <div class="buttons-wrapper">
+            <button id="button-wn-show-preset" class="button-demo">Show Notification</button>
+           <!-- <input type="submit" id="button-wn-show-custom" class="button-demo" value="Show Custom Notification" />-->
+         </div>
+       </div>
+      </form>
+
+      <!--<h3>Log</h3>
+      <div id="log"></div>
+      <button id="clear-log" class="button-demo">Clear log</button>
+
+      <small class="author">
+         Demo created by <a href="http://www.audero.it">Aurelio De Rosa</a>
+         (<a href="https://twitter.com/AurelioDeRosa">@AurelioDeRosa</a>).<br />
+         This demo is part of the <a href="https://github.com/AurelioDeRosa/HTML5-API-demos">HTML5 API demos repository</a>.
+      </small>-->
+
+      <script>
+         if (!('Notification' in window)) {
+            document.getElementById('wn-unsupported').classList.remove('hidden');
+            document.getElementById('button-wn-show-preset').setAttribute('disabled', 'disabled');
+            document.getElementById('button-wn-show-custom').setAttribute('disabled', 'disabled');
+         } else {
+            var log = document.getElementById('log');
+            var notificationEvents = ['onclick', 'onshow', 'onerror', 'onclose'];
+
+            function notifyUser(event) {
+               var title;
+               var options;
+
+               event.preventDefault();
+
+               if (event.target.id === 'button-wn-show-preset') {
+                  title = 'Email received';
+                  options = {
+                     body: 'You have a total of 3 unread emails',
+                     tag: 'preset',
+                     icon: 'http://www.audero.it/favicon.ico'
+                  };
+               } else {
+                  title = document.getElementById('title').value;
+                  options = {
+                     body: document.getElementById('body').value,
+                     tag: "custom"
+                  };
+               }
+
+               Notification.requestPermission(function() {
+                  var notification = new Notification(title, options);
+
+                  notificationEvents.forEach(function(eventName) {
+                     notification[eventName] = function(event) {
+                        log.innerHTML = 'Event "' + event.type + '" triggered for notification "' + notification.tag +
+                                '"<br />' + log.innerHTML;
+                     };
+                  });
+               });
+            }
+
+            document.getElementById('button-wn-show-preset').addEventListener('click', notifyUser);
+            document.getElementById('button-wn-show-custom').addEventListener('click', notifyUser);
+
+            document.getElementById('clear-log').addEventListener('click', function() {
+               log.innerHTML = '';
+            });
+         }
+      </script>
+   </body>
+</html>
\ No newline at end of file
index 8a830ec239d388a520b598b6b806eee4bbaedee9..88e9ca44bd2f4806c249de118fcc8650506bf9cd 100755 (executable)
@@ -1,7 +1,7 @@
 name="tct-behavior-tests"
-main_version="2.3"
-release="1"
-version="$main_version-$release"
+main_version="2.3.1"
+release=""
+version="$main_version"
 appname=$(echo $name|sed 's/-/_/g')
 
 # set value "1" if this suite need to sign,otherwise set "0" #
index b6ae3a7a2a8cc77c28542b8a29a869d3b1e91aad..d90bd5f873ce01c118bd4fce38f38d2bbac99dc4 100755 (executable)
@@ -77,7 +77,8 @@ Authors:
             gl_FragColor = vec4(v_Color.xyz * v_Dot, v_Color.a);
             }
         </script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 3bb63f970fcda364208a8a1da3a2ae5f69b49bb5..d5db4141205ce16e23e02d73584d1b9b7e78eaf4 100755 (executable)
@@ -52,6 +52,7 @@ Authors:
                 margin: 10px 25px;
             }
         </style>
+    
     </head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
index f32323d00746df07c4deda59aebe68326d05bc31..fbef0142094adbade959488e64c8fc254d290080 100755 (executable)
@@ -27,7 +27,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index 838adeb78b52e716699c2a9453dd01c157cb92c3..1f23c4c63d440372be9f8a342da3d0247a709c6c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../js/tests.js"></script>
     <script src="js/main1.js"></script>
-  </head>
+  
+</head>
   <body bgcolor="FFFFFF" >
     <div data-role="page" id="main">
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
index 7d2a2e45a2188f4d23d40d0c7747b65733a1d014..d7a51c1d8ded153c4e4a91074a79b1193201f142 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/main1.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="main">
         <div id="content">
index f3e0753320248db93c1d52e73ee4f0d79de7b718..7765370a3e2a40ecd3e8c15bc29f174eb7e169be 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/main2.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="main">
         <div id="content">
index 34371759e0860d1b9148fbb28f51afebbabe3daf..4a47b6ccec43b46c87f27f1ee6bb7fa0ebb10cc3 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index e91f5e34cac0b1b7e4c1f6df2a9526d27210bb06..4d1c46e22c005019d398a01906f78c2620a7ef84 100755 (executable)
Binary files a/wearable/tests/AppControlExtending/res/app_control_custom.wgt and b/wearable/tests/AppControlExtending/res/app_control_custom.wgt differ
index 54a67f7b833b95785457b3615224da311698f2ce..5ed2e6efd6badcf5c35f3b05c192b6b5f0d9c73a 100755 (executable)
Binary files a/wearable/tests/AppControlExtending/res/app_control_regular.wgt and b/wearable/tests/AppControlExtending/res/app_control_regular.wgt differ
index 12a4620deca0eec4f33f3543016c7c4986c6fea2..75d64fc367d961b37eab4c4ffd88e59a1ffc27e5 100755 (executable)
@@ -41,7 +41,8 @@ Authors:
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
         <link rel="stylesheet" type="text/css" href="css/main.css" />
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index 06ac0b785d1d971bec8c4161a927f26591e5b9a8..1e4800be8da883b36167f0e475bed93e7a7d566e 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../js/tests.js"></script>
     <script src="js/main.js"></script>
-  </head>
+  
+</head>
   <body bgcolor="FFFFFF" >
     <div data-role="page" id="main">
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
index cc990474b486ca58de0ec913cbdb00eaf5ac2a67..0d4e5108510fadcd6ffee716906f127c864fe2b9 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="lifecycle-background-foreground-nosevice">
         <div id="content">
index 22c80571a77d60f04343b390be7b7c8e7ea66139..2929afe69e6d140158c5bf1bc738e5bc9502f137 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="lifecycle-background-foreground-service">
         <div id="content">
index cc469107aa110e72703862afae314a9a93f7de46..8fda59e6ab32a8ea79b6302448d525aed0b2e957 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="lifecycle-page-visibility-visibilitychange">
         <div id="content">
index 8db4e4f44758df2543413f4608da263ab412c9a4..b3d06192c171843b17f751f2814e17f38c8e218c 100755 (executable)
@@ -29,7 +29,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="lifecycle-powerfailure-reinstall">
         <div id="content">
index 818b22a0b86cfb015ac345c8e22a527e787ad949..250ee6f29303609af7d3aad285fe874337060ceb 100755 (executable)
@@ -131,6 +131,71 @@ Authors:
                             <h2>script-src-inline-eval</h2>
                         </a>
                     </li>
+                <li id="script-src-inline-allow">
+                    <a href="javascript:goToApp('res/script-src-inline-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-block">
+                    <a href="javascript:goToApp('res/script-src-inline-block.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-allow">
+                    <a href="javascript:goToApp('res/script-src-eval-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-block">
+                    <a href="javascript:goToApp('res/script-src-eval-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-constructor-block">
+                    <a href="javascript:goToApp('res/script-src-eval-constructor-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-constructor-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-constructor-allow">
+                    <a href="javascript:goToApp('res/script-src-eval-constructor-allow.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-constructor-allow</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-timeout-block">
+                    <a href="javascript:goToApp('res/script-src-eval-timeout-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-timeout-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-eval-interval-block">
+                    <a href="javascript:goToApp('res/script-src-eval-interval-block.html')" data-transition="slide" style="">
+                        <h2>script-src-eval-interval-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-without-uri">
+                    <a href="javascript:goToApp('res/script-src-inline-without-uri.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-without-uri</h2>
+                    </a>
+                </li>
+                 <li id="script-src-inline-with-uri">
+                    <a href="javascript:goToApp('res/script-src-inline-with-uri.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-with-uri</h2>
+                    </a>
+                </li>
+                <li id="script-src-inline-with-uri-constructor">
+                    <a href="javascript:goToApp('res/script-src-inline-with-uri-constructor.html')" data-transition="slide" style="">
+                        <h2>script-src-inline-with-uri-constructor</h2>
+                    </a>
+                </li>
+                <li id="script-src-self-config-block">
+                    <a href="javascript:goToApp('res/script-src-self-config-block.html')" data-transition="slide" style="">
+                        <h2>script-src-self-config-block</h2>
+                    </a>
+                </li>
+                <li id="script-src-self-http-config-block">
+                    <a href="javascript:goToApp('res/script-src-self-http-config-block.html')" data-transition="slide" style="">
+                        <h2>script-src-self-http-config-block</h2>
+                    </a>
+                </li>
                     <li data-role="list-divider" role="heading">Test style-src directive</li>
                     <li id="style-src_self">
                         <a href="javascript:goToApp('res/style-src_self.html')" data-transition="slide" style="">
index dec3af322393a5ffa4f52016ebbb6ae09979c878..8d387335175f93e6771a083023a2180d1788d83a 100755 (executable)
@@ -44,7 +44,20 @@ var allId=new Array('beh1csp001',
                     'beh1csp014',
                     'beh1csp015',
                     'beh1csp016',
-                    'beh1csp017');
+                    'beh1csp017',
+                    'WRTCSP0002',
+                    'WRTCSP0003',
+                    'WRTCSP0004',
+                    'WRTCSP0005',
+                    'WRTCSP0006',
+                    'WRTCSP0007',
+                    'WRTCSP0008',
+                    'WRTCSP0010',
+                    'WRTCSP0012',
+                    'WRTCSP0013',
+                    'WRTCSP0014',
+                    'WRTCSP0018',
+                    'WRTCSP0019');
 
 var installedId = new Array();
 var resultXML, tests;
index edd315bf07e9751cf192d3f9b356b8fc517f8b32..776040672fdc891420093175e4df0f7d2bb43a6a 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-asterisk">
         <div id="content">
index 30b318073e10c67c0f9e366d920b1c8e12dcc30d..b34aab5a049af27442ad2fe9a1d60ff162b0e6c1 100755 (executable)
Binary files a/wearable/tests/CSP/res/csp-asterisk.wgt and b/wearable/tests/CSP/res/csp-asterisk.wgt differ
index 15baea43a83a746f1144d6e105466099ce9d5b20..ed13bc60dcf1d7ad2b6e538dfe96fdcefd1d9b8c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-cross-origin">
         <div id="content">
index ee610b9c1bccbdf0429c836acaf8a57496eedd24..3fe6c7f9e9157dd601a748f79c40a1d063877f4a 100755 (executable)
Binary files a/wearable/tests/CSP/res/csp-cross-origin.wgt and b/wearable/tests/CSP/res/csp-cross-origin.wgt differ
index 6c943e2679e78ea8a6486f805842fdb4ee999e9f..93fddb2e7ba1fab5acfea048d3d2e7c33481b5ff 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-none">
         <div id="content">
index f9482dbccbc00e13e7770a169f72cca73aec1740..552cb7a0e12f8aa5ac8e7de4a4320e238f761037 100755 (executable)
Binary files a/wearable/tests/CSP/res/csp-none.wgt and b/wearable/tests/CSP/res/csp-none.wgt differ
index 4ed8eec68d99a370bce8dafdd24cdd029b572866..1628f42da99527440b1ec9b034f70ea643a37741 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-self">
         <div id="content">
index 285c7530bf3562b831c70c9e99adae574d10b8b0..39b02ffe4128aa8d51f1a4f8adb58042956543ef 100755 (executable)
Binary files a/wearable/tests/CSP/res/csp-self.wgt and b/wearable/tests/CSP/res/csp-self.wgt differ
index 2aa72e73a211943923e3c550ccb5858ca69b6dd0..85a0e280322b35e9a28306c15d5cc380fcbf03ce 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-policy-by-directives-csp">
         <div id="content">
index 8d252e6e4b4112808dd6327565055db8f07c1813..8a5493d040e242bd075b49efcb7be964f66bf5b5 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-policy-by-directives-csp.wgt and b/wearable/tests/CSP/res/default-policy-by-directives-csp.wgt differ
index 9a0f395dd0d443148f038476a867fcfbeca4d6e7..69c0205c05673d407ac436fd98a0b8de41f19cc7 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-policy-by-directives-report-only">
         <div id="content">
index 08f4ca659bbc7d109d4ee663c879a36ab9844ae2..4af44447f673579c1237e94016494b00da991191 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-policy-by-directives-report-only.wgt and b/wearable/tests/CSP/res/default-policy-by-directives-report-only.wgt differ
index 93653745af3562f0fb523a62bc7bf0e722b5bb02..90dee66a365d6c24e88acc9a33f8af4315402375 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-src_asterisk">
         <div id="content">
index 00612623069263425c070c29840f7dba60ffa3ac..f7279535f568929871cb5b6bd69dc31fbd1d02f1 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-src_asterisk.wgt and b/wearable/tests/CSP/res/default-src_asterisk.wgt differ
index ebe5e6e483c386391e61563f8b1d492d1e840005..06d0ebda3c7032e45c604d1581f6aead5d368181 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-src_cross_origin">
         <div id="content">
index 22335c86e7ab7c96bc5951f5658255500337cf45..1b19f23f68a0fd028937cd1ad808bedf1e28baa9 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-src_cross_origin.wgt and b/wearable/tests/CSP/res/default-src_cross_origin.wgt differ
index 1b2d0c3ae77c6eefb2c30d031cf6746e896f933f..a0b5d5fce41419eee6b561da3ded259ec161ce10 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-src_none">
         <div id="content">
index 4a7044d2254fcb17ec2d4c80d10a25ec6353b6a8..3f4f36bd4eed17a215c1d41f900fa651704bd60d 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-src_none.wgt and b/wearable/tests/CSP/res/default-src_none.wgt differ
index f8eab61d13cd7d3cac1faac6b3f6be027c515450..07773e992c58951a72d3005538aac6aac0717a1d 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="default-src_self">
         <div id="content">
index c1e41cf6094410eba7ffd89dad2c861979342ae0..a82aae0a8936c0cb0d94e9004c5bd15e1eb7d453 100755 (executable)
Binary files a/wearable/tests/CSP/res/default-src_self.wgt and b/wearable/tests/CSP/res/default-src_self.wgt differ
index 5479c3b4792dba64e4be2cd2619d6d99d3974c07..f8b609fea73631659c2a5afb985ed6a409c70a09 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="sandbox-empty-ext">
         <div id="content">
index 33a8fd21dbf7f615bd77efb87dcacccd6de1cdbf..83b874b48493a3dd80d3d5085db1e4af824a4ca8 100755 (executable)
Binary files a/wearable/tests/CSP/res/sandbox-empty-ext.wgt and b/wearable/tests/CSP/res/sandbox-empty-ext.wgt differ
index bb14fbb83ff0bb665a86dd6b5813868a5840fbab..ef82d5d212a6520e808a74232ba20515eaeca7e7 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="sandbox-empty-inline">
         <div id="content">
index f6b792719b471d809894df7c02a387d6b89d53c1..ffaa3d27218e61b90d78eabbfdb40071ab8b63e5 100755 (executable)
Binary files a/wearable/tests/CSP/res/sandbox-empty-inline.wgt and b/wearable/tests/CSP/res/sandbox-empty-inline.wgt differ
index 2f5f0fedb25d3fd8103b2f7cefe8853a130e665d..537ee0f220acaa8d6f562fd2641897b850465e91 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="sandbox-empty-int">
         <div id="content">
index 4e8d0a3e6c85aa029b53114ab4935e7715922cb1..f46d599d0ec7b795ef4df8adc267e98154fcea57 100755 (executable)
Binary files a/wearable/tests/CSP/res/sandbox-empty-int.wgt and b/wearable/tests/CSP/res/sandbox-empty-int.wgt differ
index f2b474feb100022c25092b48e9f94463796b0a8f..96bcd9e38add64b970ab9ec6921553852923763a 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="sandbox-same-origin-allow-scripts">
         <div id="content">
index 1d5d39c02c665dd0bfd7709d13ae034a4957f3f2..e5128ceaa766af8cbb89b667047457dee253e3bd 100755 (executable)
Binary files a/wearable/tests/CSP/res/sandbox-same-origin-allow-scripts.wgt and b/wearable/tests/CSP/res/sandbox-same-origin-allow-scripts.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-allow.html b/wearable/tests/CSP/res/script-src-eval-allow.html
new file mode 100755 (executable)
index 0000000..3d73b31
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-only-allow">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0005.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0005"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-allow.wgt b/wearable/tests/CSP/res/script-src-eval-allow.wgt
new file mode 100755 (executable)
index 0000000..74e851e
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-allow.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-block.html b/wearable/tests/CSP/res/script-src-eval-block.html
new file mode 100755 (executable)
index 0000000..38b3884
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0004.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0004"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-block.wgt b/wearable/tests/CSP/res/script-src-eval-block.wgt
new file mode 100755 (executable)
index 0000000..4042aa6
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-constructor-allow.html b/wearable/tests/CSP/res/script-src-eval-constructor-allow.html
new file mode 100755 (executable)
index 0000000..82e4e67
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-constructor_only-allow">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-constructor-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0007.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0007"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-constructor-allow.wgt b/wearable/tests/CSP/res/script-src-eval-constructor-allow.wgt
new file mode 100755 (executable)
index 0000000..808fa16
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-constructor-allow.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-constructor-block.html b/wearable/tests/CSP/res/script-src-eval-constructor-block.html
new file mode 100755 (executable)
index 0000000..1a41fd1
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-constructor_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-constructor-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0006.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0006"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-constructor-block.wgt b/wearable/tests/CSP/res/script-src-eval-constructor-block.wgt
new file mode 100755 (executable)
index 0000000..8c6d08e
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-constructor-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-interval-block.html b/wearable/tests/CSP/res/script-src-eval-interval-block.html
new file mode 100755 (executable)
index 0000000..5254a26
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-interval_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-interval-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0010.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0010"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-interval-block.wgt b/wearable/tests/CSP/res/script-src-eval-interval-block.wgt
new file mode 100755 (executable)
index 0000000..fb1ec84
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-interval-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-eval-timeout-block.html b/wearable/tests/CSP/res/script-src-eval-timeout-block.html
new file mode 100755 (executable)
index 0000000..7ba4c5c
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-eval-timeout_only-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-eval-timeout-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0008.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0008"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-eval-timeout-block.wgt b/wearable/tests/CSP/res/script-src-eval-timeout-block.wgt
new file mode 100755 (executable)
index 0000000..3383ddc
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-eval-timeout-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-inline-allow.html b/wearable/tests/CSP/res/script-src-inline-allow.html
new file mode 100755 (executable)
index 0000000..19a799f
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="CSP_02">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-allow"/>
+                <input type="hidden" id="app_id" value="WRTCSP0002.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0002"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-inline-allow.wgt b/wearable/tests/CSP/res/script-src-inline-allow.wgt
new file mode 100755 (executable)
index 0000000..6c35788
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-inline-allow.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-inline-block.html b/wearable/tests/CSP/res/script-src-inline-block.html
new file mode 100755 (executable)
index 0000000..61dfd96
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="CSP_02">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0003.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0003"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-inline-block.wgt b/wearable/tests/CSP/res/script-src-inline-block.wgt
new file mode 100755 (executable)
index 0000000..873a90c
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-inline-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-inline-with-uri-constructor.html b/wearable/tests/CSP/res/script-src-inline-with-uri-constructor.html
new file mode 100755 (executable)
index 0000000..b8e90b1
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-with-uri-constructor">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-with-uri-constructor"/>
+                <input type="hidden" id="app_id" value="WRTCSP0014.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0014"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-inline-with-uri-constructor.wgt b/wearable/tests/CSP/res/script-src-inline-with-uri-constructor.wgt
new file mode 100755 (executable)
index 0000000..37e8fc2
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-inline-with-uri-constructor.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-inline-with-uri.html b/wearable/tests/CSP/res/script-src-inline-with-uri.html
new file mode 100755 (executable)
index 0000000..924bf4b
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-with-uri">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-with-uri"/>
+                <input type="hidden" id="app_id" value="WRTCSP0013.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0013"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-inline-with-uri.wgt b/wearable/tests/CSP/res/script-src-inline-with-uri.wgt
new file mode 100644 (file)
index 0000000..089be2e
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-inline-with-uri.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-inline-without-uri.html b/wearable/tests/CSP/res/script-src-inline-without-uri.html
new file mode 100755 (executable)
index 0000000..8fee5c5
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-inline-without-uri">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-inline-without-uri"/>
+                <input type="hidden" id="app_id" value="WRTCSP0012.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0012"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-inline-without-uri.wgt b/wearable/tests/CSP/res/script-src-inline-without-uri.wgt
new file mode 100755 (executable)
index 0000000..3bb8d23
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-inline-without-uri.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-self-config-block.html b/wearable/tests/CSP/res/script-src-self-config-block.html
new file mode 100755 (executable)
index 0000000..7a07405
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-self-config-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-self-config-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0019.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0019"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-self-config-block.wgt b/wearable/tests/CSP/res/script-src-self-config-block.wgt
new file mode 100644 (file)
index 0000000..f76135b
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-self-config-block.wgt differ
diff --git a/wearable/tests/CSP/res/script-src-self-http-config-block.html b/wearable/tests/CSP/res/script-src-self-http-config-block.html
new file mode 100755 (executable)
index 0000000..78d5437
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+  of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original 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 Intel Corporation nor the names of its contributors
+  may be used to endorse or promote products derived from this work without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "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 INTEL CORPORATION 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.
+
+Authors:
+        Feng, GangX <gangx.feng@intel.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css" />
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css" />
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="script-src-self-http-config-block">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="script-src-self-http-config-block"/>
+                <input type="hidden" id="app_id" value="WRTCSP0018.DynamicSample"/>
+                <input type="hidden" id="package_id" value="WRTCSP0018"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if there is a "PASS" displayed.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
diff --git a/wearable/tests/CSP/res/script-src-self-http-config-block.wgt b/wearable/tests/CSP/res/script-src-self-http-config-block.wgt
new file mode 100644 (file)
index 0000000..b6c4e67
Binary files /dev/null and b/wearable/tests/CSP/res/script-src-self-http-config-block.wgt differ
index f5f8120c81a749e0d45a06b99f19ebd874ae93ac..1f2cdc6bf5574daab327d1e734f6eaa3671894ae 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="script-src_inline_eval">
         <div id="content">
index fd9b56747cd87acd8fa7950da5ee561b67afa99e..29912c18f3ef3d6256645394ad3f83425dbb3dd1 100755 (executable)
Binary files a/wearable/tests/CSP/res/script-src_inline_eval.wgt and b/wearable/tests/CSP/res/script-src_inline_eval.wgt differ
index b7dfbe8d57daf1270343155e49406afa345829e2..3748fce4869c1b1bfc7d22f56b9b9d7ce490bf72 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="script-src_none">
         <div id="content">
index d70b3194985cbe50582579c5f8f7eaa08d581a18..77b7d1ab718247c0af97fe863af4df99bb02e6d4 100755 (executable)
Binary files a/wearable/tests/CSP/res/script-src_none.wgt and b/wearable/tests/CSP/res/script-src_none.wgt differ
index 70c21eb26a77166c214a1fcc2f318ec71cd43441..35ac45f7c034b49da1b099b930e2b7240599c626 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="style-src_self">
         <div id="content">
index 415ed98a7ff084bf88fe2718a551342677a83302..feba986f70c6213e78976daf583d2cbf424fe241 100755 (executable)
Binary files a/wearable/tests/CSP/res/style-src_self.wgt and b/wearable/tests/CSP/res/style-src_self.wgt differ
index 940dd3f7c205220b0d9a0817e87271ab5caff437..0e00b68753afa37b961a26e121c9ed37c15e87ca 100755 (executable)
@@ -46,7 +46,8 @@ Authors:
             }
         </script>
 
-    </head>
+    
+</head>
 
     <body bgcolor="FFFFFF" >
         <div data-role="header">
index 51efd4ca5217c734949d4abce2e24528d8aa2c98..7bc49b28a61bb37bd7857b2b94534936ed360501 100755 (executable)
@@ -87,7 +87,8 @@ Authors:
             runTransitionTest(expectedValues, setupTest, usePauseAPI);
             runTransitionTest(expectedValues2, setupTest2, usePauseAPI);
         </script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF"  onload="init()">
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 71663b5682c8ea2d42148565912f6cf83d884001..14f782fabc71b0f88466de4aa640cbb7c39e49df 100755 (executable)
@@ -52,7 +52,8 @@ Authors:
                 color:red;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 0077d6a96850a8f9b4ef0b793d2078f42d5c0309..c47f34c003851d25da9beef104338fe86a268eb0 100755 (executable)
@@ -49,7 +49,8 @@ Authors:
                 line-height:210px;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 9ef96f1ab26e38a5b7b1404ae61685607d4a07d6..b1f24cdd82f7c4ca90476e05893c49fe53d1a3aa 100755 (executable)
@@ -46,7 +46,8 @@ Authors:
                 line-height:330px;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index c78ec60935720991cbab93a9f460d534a41e07de..d1284de5f52d0d99bb0d3353c5b6ef05ed6843cf 100755 (executable)
@@ -45,7 +45,8 @@ Authors:
                 document.location.reload();
             }
         </script>
-    </head>
+    
+</head>
 
     <body bgcolor="FFFFFF" >
         <div data-role="header">
index 240f685c0cbf0c771976c2a56069f6b21f8462f1..02e12eba60077e560c628d75e2f994f7c541e227 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index bc2e44eb4c279859080c5bea5d3863b7f5c02aae..49df1777b2c444c3ff5d29346d00d72961eded18 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="application-content">
         <div id="content">
index edd6cfa65ad99fb5faffea5071f0831d764cf10a..749f32dc10816be06bd0b7f92ea0ef6992393253 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-an-more">
         <div id="content">
index d9e04fe4c204fd86f82135a65dd05873ef7fa6c0..c51bc35e364871fc70b24201a18dc2afd01903c9 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-an-one">
         <div id="content">
index 67c810c97e903c0eda1348c2fb0c2b4cf9bb73ff..5804d5337c7cd032dbabaeef0a24634deaaea735 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-an-zero">
         <div id="content">
index 480491c4cbbf0b59e8b8bd09b41f524bc6a47ea0..ef2a8cb741c0ebf307e141187b6ae48a18645941 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-ar-true">
         <div id="content">
index a76768c15eacb810598082d870633d0ecd19c0ca..b080017cdb072379311f3f52e8d10f853211a1db 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-bs-disable">
         <div id="content">
index da79881d8cebfd4dbfef1e2b7c4268c2b5f422a3..32c2056eca584a8cab30c8beeb0da0e5d4c770a5 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-cm-disable">
         <div id="content">
index b8c164f85ac8c238e70fb8381dd8e478d8a86cb3..e7844bc7e7e41563548c4dc6864a5c556cfb7e9c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-cm-enable">
         <div id="content">
index 7d2d1f9d95e2e652e9d1cfec7bb963d8b2fbba00..67cb6b2e120eb784d26340612083e1342ef393cd 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-encrypt-disable">
         <div id="content">
index d31b0651a5bffde0ff83335c6b64787d3ab52f47..a2421e25bec9434ddc51bfc578e872f78d6f87aa 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-encrypt-enable">
         <div id="content">
index e52b06110f8d58f7d8791aa5463487f2fbd3012d..bdfaa36efb4e595a1832a37cd67154d2601e62bf 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-hwkey-default">
         <div id="content">
index 2db22bf954397e008868c6a8fc609d4da8e2f47f..91df865d1bba2dc46cefd7f4ff8738103971ad65 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-hwkey-disable">
         <div id="content">
index a776b29458fda68aa167732dc7662ed7ff548ccb..ccd9eef9864c513428b65e87f1707eb1af529c66 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-hwkey-enable">
         <div id="content">
index c3364b7ebbee8ab4dd55713a0d9520f7e930eece..26bffe31e9251b7b206e10304141fe7f9b736e1c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-install-location-internal-only-with-card">
         <div id="content">
index 12587a31936af6e6f91ed1e79a7df6f5ef9e1dcc..ee856c90a1d7064452a8a41bee4c7836b869bb85 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-install-location-prefer-external-no-card">
         <div id="content">
index 574ec661f602ab42996f8f8041ea7185368b681a..47ac8c3b0adfbd5be061badda25dc773080cffe3 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="setting-install-location-prefer-external-with-card">
         <div id="content">
index 0392b3999cea63089f40ce27c43c9d5d8117b391..085708af83d2148bec730062de42ff731fab01c3 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../js/tests.js"></script>
     <script src="js/main1.js"></script>
-  </head>
+  
+</head>
   <body bgcolor="FFFFFF" >
     <div data-role="page" id="main">
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
index de1def1345682c1bf07c341224f5a95296c8a5a9..3bb715ca8e1f8fa02b0bd79503e3ee4a54d1d491 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="deviceapi-access-by-external">
         <div id="content">
index 7cf03c413899b12dd5fb199d58e69b51af91106f..0d81c34fdde0cf0830231ca0a8be37b728df0def 100755 (executable)
@@ -61,7 +61,37 @@ var wgt_names = new Array('app-widget-mouse-event-false.wgt',
                           'dynamicbox-reload-background.wgt',
                           'dynamicbox-reload-foreground.wgt',
                           'app-widget-unload-event.wgt',
-                          'app-widget-load-event-alive-time.wgt');
+                          'app-widget-load-event-alive-time.wgt',
+                          'WebDynamicBox_1.wgt',
+                          'WebDynamicBox_2.wgt',
+                          'WebDynamicBox_7.wgt',
+                          'WebDynamicBox_8.wgt',
+                          'WebDynamicBox_9.wgt',
+                          'WebDynamicBox_10.wgt',
+                          'WebDynamicBox_13.wgt',
+                          'WebDynamicBox_17.wgt',
+                          'WebDynamicBox_18.wgt',
+                          'WebDynamicBox_19_3.wgt',
+                          'WebDynamicBox_20.wgt',
+                          'WebDynamicBox_21.wgt',
+                          'WebDynamicBox_22.wgt',
+                          'WebDynamicBox_25.wgt',
+                          'WebDynamicBox_27.wgt',
+                          'WebDynamicBox_28.wgt',
+                          'WebDynamicBox_30.wgt',
+                          'WebDynamicBox_37.wgt',
+                          'WebDynamicBox_39.wgt',
+                          'WebDynamicBox_41.wgt',
+                          'WebDynamicBox_44.wgt',
+                          'WebDynamicBox_45.wgt',
+                          'WebDynamicBox_45_1.wgt',
+                          'WebDynamicBox_55_4.wgt',
+                          'WebDynamicBox_55_5.wgt',
+                          'WebDynamicBox_65.wgt',
+                          'WebDynamicBox_66.wgt',
+                          'WebDynamicBox_75.wgt',
+                          'WebDynamicBox_106.wgt',
+                          'WebDynamicBox_114.wgt');
 
 var package_ids = new Array('wrt6awi014',
                             'wrt6app001',
@@ -91,7 +121,37 @@ var package_ids = new Array('wrt6awi014',
                             'tctdyna009',
                             'tctdyna010',
                             'wrt6aws020',
-                            'wrt6aws021');
+                            'wrt6aws021',
+                            'GOlxQoIL8p',
+                            'YJj0WRVaJL',
+                            'Zyj5WRVa07',
+                            'Zyj5W00008',
+                            'Zyj5WRVa09',
+                            'Zyj5WRVa10',
+                            'Zyj5WRVa13',
+                            'Zyj5WRVa17',
+                            'Zyj5WRVa18',
+                            'Zyj5WRV319',
+                            'Zyjn7RVa20',
+                            'Zyj5WRVa21',
+                            'Zyj5WRVa22',
+                            'Zyj5WRVa25',
+                            'Zyj5WRVa27',
+                            'Zyj5gRVa28',
+                            'Zyj5WRVa30',
+                            'Zyj5WRVa37',
+                            'ol75WRVa39',
+                            'Zyj5WRVa41',
+                            'Zyj5WRVa44',
+                            'Zyj5WRaa45',
+                            'Zyj5WR1045',
+                            'Zyj5WR4055',
+                            'Zyj5WR5055',
+                            'Zyj5WRVa65',
+                            'Zyj5WRVa66',
+                            'Zyj5WRVa75',
+                            'Zyj5WRV106',
+                            'Zyj5WR0114');
 
 var id_maps = {'rMLtTXzQr2-2.0.0-arm.tpk':                           'rMLtTXzQr2',
                'SD2nFxbyeA-2.0.0-i386.tpk':                          'SD2nFxbyeA',
@@ -123,7 +183,37 @@ var id_maps = {'rMLtTXzQr2-2.0.0-arm.tpk':                           'rMLtTXzQr2
                'dynamicbox-reload-background.wgt':                   'tctdyna009',
                'dynamicbox-reload-foreground.wgt':                   'tctdyna010',
                'app-widget-unload-event.wgt':                        'wrt6aws020',
-               'app-widget-load-event-alive-time.wgt':               'wrt6aws021'};
+               'app-widget-load-event-alive-time.wgt':               'wrt6aws021',
+               'WebDynamicBox_1.wgt':                                'GOlxQoIL8p',
+               'WebDynamicBox_2.wgt':                                'YJj0WRVaJL',
+               'WebDynamicBox_7.wgt':                                'Zyj5WRVa07',
+               'WebDynamicBox_8.wgt':                                'Zyj5W00008',
+               'WebDynamicBox_9.wgt':                                'Zyj5WRVa09',
+               'WebDynamicBox_10.wgt':                               'Zyj5WRVa10',
+               'WebDynamicBox_13.wgt':                               'Zyj5WRVa13',
+               'WebDynamicBox_17.wgt':                               'Zyj5WRVa17',
+               'WebDynamicBox_18.wgt':                               'Zyj5WRVa18',
+               'WebDynamicBox_19_3.wgt':                             'Zyj5WRV319',
+               'WebDynamicBox_20.wgt':                               'Zyjn7RVa20',
+               'WebDynamicBox_21.wgt':                               'Zyj5WRVa21',
+               'WebDynamicBox_22.wgt':                               'Zyj5WRVa22',
+               'WebDynamicBox_25.wgt':                               'Zyj5WRVa25',
+               'WebDynamicBox_27.wgt':                               'Zyj5WRVa27',
+               'WebDynamicBox_28.wgt':                               'Zyj5gRVa28',
+               'WebDynamicBox_30.wgt':                               'Zyj5WRVa30',
+               'WebDynamicBox_37.wgt':                               'Zyj5WRVa37',
+               'WebDynamicBox_39.wgt':                               'ol75WRVa39',
+               'WebDynamicBox_41.wgt':                               'Zyj5WRVa41',
+               'WebDynamicBox_44.wgt':                               'Zyj5WRVa44',
+               'WebDynamicBox_45.wgt':                               'Zyj5WRaa45',
+               'WebDynamicBox_45_1.wgt':                             'Zyj5WR1045',
+               'WebDynamicBox_55_4.wgt':                             'Zyj5WR4055',
+               'WebDynamicBox_55_5.wgt':                             'Zyj5WR5055',
+               'WebDynamicBox_65.wgt':                               'Zyj5WRVa65',
+               'WebDynamicBox_66.wgt':                               'Zyj5WRVa66',
+               'WebDynamicBox_75.wgt':                               'Zyj5WRVa75',
+               'WebDynamicBox_106.wgt':                              'Zyj5WRV106',
+               'WebDynamicBox_114.wgt':                              'Zyj5WR0114'};
 
 $(document).delegate("#main", "pageinit", function() {
     DisablePassButton();
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_1.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_1.wgt
new file mode 100755 (executable)
index 0000000..c27c57f
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_1.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_10.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_10.wgt
new file mode 100755 (executable)
index 0000000..d84b5a8
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_10.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_106.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_106.wgt
new file mode 100755 (executable)
index 0000000..3f24f33
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_106.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_114.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_114.wgt
new file mode 100755 (executable)
index 0000000..1b55f92
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_114.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_13.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_13.wgt
new file mode 100755 (executable)
index 0000000..73d81c7
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_13.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_17.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_17.wgt
new file mode 100755 (executable)
index 0000000..65d529a
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_17.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_18.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_18.wgt
new file mode 100755 (executable)
index 0000000..94975f8
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_18.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_19_3.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_19_3.wgt
new file mode 100755 (executable)
index 0000000..3906309
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_19_3.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_2.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_2.wgt
new file mode 100755 (executable)
index 0000000..7de26a4
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_2.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_20.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_20.wgt
new file mode 100755 (executable)
index 0000000..7f50ca4
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_20.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_21.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_21.wgt
new file mode 100755 (executable)
index 0000000..8bfedb1
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_21.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_22.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_22.wgt
new file mode 100755 (executable)
index 0000000..d9d14cf
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_22.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_25.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_25.wgt
new file mode 100755 (executable)
index 0000000..acb231c
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_25.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_27.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_27.wgt
new file mode 100755 (executable)
index 0000000..5c84341
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_27.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_28.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_28.wgt
new file mode 100755 (executable)
index 0000000..f731bbe
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_28.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_30.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_30.wgt
new file mode 100755 (executable)
index 0000000..196e5aa
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_30.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_37.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_37.wgt
new file mode 100755 (executable)
index 0000000..f87705c
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_37.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_39.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_39.wgt
new file mode 100755 (executable)
index 0000000..17686e9
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_39.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_41.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_41.wgt
new file mode 100755 (executable)
index 0000000..e6f8be8
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_41.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_44.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_44.wgt
new file mode 100755 (executable)
index 0000000..7dcf0da
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_44.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_45.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_45.wgt
new file mode 100755 (executable)
index 0000000..c851f29
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_45.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_45_1.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_45_1.wgt
new file mode 100755 (executable)
index 0000000..1737470
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_45_1.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_55_4.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_55_4.wgt
new file mode 100755 (executable)
index 0000000..e493981
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_55_4.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_55_5.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_55_5.wgt
new file mode 100755 (executable)
index 0000000..d69a272
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_55_5.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_65.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_65.wgt
new file mode 100755 (executable)
index 0000000..87fa4c1
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_65.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_66.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_66.wgt
new file mode 100755 (executable)
index 0000000..9d5bc37
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_66.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_7.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_7.wgt
new file mode 100755 (executable)
index 0000000..336b704
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_7.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_75.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_75.wgt
new file mode 100755 (executable)
index 0000000..c5b57b3
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_75.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_8.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_8.wgt
new file mode 100755 (executable)
index 0000000..fbc3b01
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_8.wgt differ
diff --git a/wearable/tests/DynamicBox/res/WebDynamicBox_9.wgt b/wearable/tests/DynamicBox/res/WebDynamicBox_9.wgt
new file mode 100755 (executable)
index 0000000..977d7f0
Binary files /dev/null and b/wearable/tests/DynamicBox/res/WebDynamicBox_9.wgt differ
index a9950e00b3ebb094427a7853cfce29fd08dcf4ed..e36f9163b772ad641e54098efee45a540843f1cf 100755 (executable)
@@ -41,7 +41,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 6431ef67809bd1c9fa7da32adf2215d42183349d..d2e2f4e5378220a09745d4d7358b491e1792105b 100755 (executable)
@@ -55,7 +55,8 @@ Authors:
                 background: green;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 3fa283dc0cb242d04a536bca7d5f37ba1e1eab11..23aac5128d9bdabab9d2d33b74dbf8669de3e0d8 100755 (executable)
@@ -41,7 +41,8 @@ Authors:
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
         <script src="js/slider.tooltip.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index e909c5b300ed015545be1f41db74b2d095384dc8..1177351fe6a4cd83915653a39041b13f389aee3b 100755 (executable)
@@ -27,7 +27,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
old mode 100755 (executable)
new mode 100644 (file)
index 774a336..ec07e7a
Binary files a/wearable/tests/Package/res/TestPackage1.wgt and b/wearable/tests/Package/res/TestPackage1.wgt differ
old mode 100755 (executable)
new mode 100644 (file)
index 8663731..51ae720
Binary files a/wearable/tests/Package/res/TestPackage2.wgt and b/wearable/tests/Package/res/TestPackage2.wgt differ
index 81e095d3098e6a40065deb41c3bcb53ceff28a5c..f2e55da2a254f7a4d8d5a891c60e12dbf79781e8 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index 41b7a67e34638db25e7d8fce8a882b9ec1563528..ddce365da5c683da302cf837f66c7ed7324c6e21 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="Sample-widget1">
         <div id="content">
index f34b3f1f3c21ca179343e8966c31f81cdabe3abe..5d7c135cfdf0fcc63aa60799e8c6cac817df5341 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="Sample-widget2">
         <div id="content">
index e40373725a136de118c73a153b9bd49876cfa162..5bf0f881777f89cfddf2a85751d3dc3e1a25973d 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="Sample-widget3">
         <div id="content">
index aa3b146b37a2f6825dd12204d18b13e870bd4714..ba41d5098a33fb1d60261cd8ac45d7debd00d73f 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="Sample-widget4">
         <div id="content">
index 9496f7312118276653a7e79cdd5f59d84485edab..86702debfb09dc6d41c836bd20b25ced64dddbf8 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="widget-version-1">
         <div id="content">
index 790c872825138f29dcf407911d03926a4b7b0195..0bf37b140cbeed86ea77afb218a58a413837915b 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index d9b8a7020c26f42ccd3b65587394da51cc6b7cd6..f45cbee1a08c8911393bb204c8f7a7bb3c1ecd76 100755 (executable)
@@ -27,7 +27,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
             <h1 id="main_page_title"></h1>
index 335776cc507554276f1716b0c335432895c5412f..b8c95c605be2bceb67cee631863154e6d10ea734 100755 (executable)
@@ -46,7 +46,8 @@ Authors:
                 border: 1px solid #000;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index c94c4c60278f77404e209588df742426ccb92a51..2ee1bd543931fe36c5f54fff5e147efe6b83bf14 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index bddee5bb6aafd6cf5619cbfc312cbe8f3d7851ae..0607ecf818993a1fa59dbc6afbcf6b5cfbae47a1 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="page" id="main">
             <div data-role="header" data-position="fixed" data-tap-toggle="false">
index cb5cbb9b9adfe1da2b63dd2710752f57b083c54c..019cca3784defcf1dcfd9a2725b4ff95b13191e5 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="test-half-memory">
         <div id="content">
index 37d4c9e7ee61d040464d2d0e599de71ad64203a9..a186915fd1dc376ddde08eb76407dbf6fa9537ee 100755 (executable)
Binary files a/wearable/tests/Stability/res/test-half-memory.wgt and b/wearable/tests/Stability/res/test-half-memory.wgt differ
index abd432657471dad37e6c5db1f845d098e2d7143d..991cc82b86777749c9828effff8e29b970e53359 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="test-hd-image">
         <div id="content">
index dd0ef5bdb09a738c5cd053f8c6eae6345c012ec0..9d5e0dbdd4e0ebc17a296b0fe2c51597b36503e1 100755 (executable)
@@ -27,7 +27,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
         <script src="js/main.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
             <h1 id="main_page_title"></h1>
index 3f1f20c5f47d113b3abb18bf8cc333b6b4580a44..f5795ce8392be184ac496b4c8e9c1f50156766a7 100755 (executable)
@@ -37,7 +37,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.js"></script>
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
-    </head>
+    
+</head>
 
     <body bgcolor="FFFFFF" >
         <div data-role="header">
index 251e1ee7012f6c90b79f820b05a9fdeb2835ea1d..884605903fca8128026717e81019ee9db35df4eb 100755 (executable)
@@ -48,7 +48,8 @@ Authors:
                 position: absolute;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
     <div data-role="page" id="main">
         <div data-role="header">
index 64bab76fef18e8ee4f31ff3404a8f78c0fca5831..8f24b72603a132df78ae846e8bb21d153d1b85ec 100755 (executable)
@@ -90,7 +90,8 @@ Authors:
                 color: red;
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index e0d4ee7df83a28f3d63703c53d7fbd1b3f714ee1..8cda38e6ab08c675943bcb26ba8dfb3654671cbc 100755 (executable)
@@ -49,7 +49,8 @@ Authors:
                 text-align: left
             }
         </style>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index 9d06ddebfabb2045256a1e1743672a19038969bc..efb000e8e592259a0391cb24c648c736ea27e437 100755 (executable)
@@ -38,7 +38,8 @@ Authors:
         <script src="../../js/thirdparty/jquery.js"></script>
         <script src="../../js/thirdparty/jquery.mobile.js"></script>
         <script src="../../js/tests.js"></script>
-    </head>
+    
+</head>
     <body bgcolor="FFFFFF" >
         <div data-role="header">
             <h1 id="main_page_title"></h1>
index e4ca45c618a0abcdf001d040ea42dd86510005e1..0f85bb6ea44c1ae76aa96cdfe8795c29bf2674e4 100755 (executable)
@@ -53,7 +53,8 @@ Authors:
             width: 100%;
         }
     </style>
-  </head>
+  
+</head>
   <body>
     <script type="text/javascript">
         tizen.systeminfo.getPropertyValue("DISPLAY", function(property) {
index 2286a161dafa64f1dbdbc0d6818fc249220be920..48a8d4ef203ef4e29e6a0d60e0c51b2686598d31 100755 (executable)
@@ -53,7 +53,8 @@ Authors:
             width: 160px;
         }
     </style>
-  </head>
+  
+</head>
   <body>
     <script type="text/javascript">
         tizen.systeminfo.getPropertyValue("DISPLAY", function(property) {
index ee92af305e9f72e6aae6316ed44ef10ab78c7402..eaf15742bc46c8a1b28a9b190e3ed2d6dd64bf1c 100755 (executable)
@@ -67,7 +67,8 @@ Authors:
             }
         }
     </script>
-  </head>
+  
+</head>
   <body>
     <div>
       <p>EnableScale: you can scale the screen</p><br>
index 424a5108692ee5564df4ee993c5fb89ca0ed8303..dd506b088289a9a94b393ba75145caa326aafb1b 100755 (executable)
@@ -28,6 +28,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 Authors:
         Feng, GangX <gangx.feng@intel.com>
         SRC-NJ Ran Wang <ran22.wang@samsung.com>
+        SRC-NJ Weixia Fu <weixia12.fu@samsung.com>
 
 -->
 <html>
@@ -114,6 +115,76 @@ Authors:
                         <h2>security-permission</h2>
                     </a>
                 </li>
+                <li id="TC_UPER_FullScreen_L_Req2.2">
+                    <a href="javascript:goToApp('res/TC_UPER_FullScreen_L_Req2.2.html')" data-transition="slide" style="">
+                        <h2>FullScreen_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_FullScreen_LP_Req2.2">
+                    <a href="javascript:goToApp('res/TC_UPER_FullScreen_LP_Req2.2.html')" data-transition="slide" style="">
+                        <h2>FullScreen_Local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_Geoloc_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_Geoloc_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>Geoloc_Local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_GetUserMedia_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_GetUserMedia_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>GetUserMedia_local_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_H_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_H_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Remote_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_HP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_HP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Remote_withprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_L_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_L_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Local_withoutprivilege</h2>
+                    </a>
+                </li>
+                <li id="TC_UPER_WebNotify_LP_Req2.3">
+                    <a href="javascript:goToApp('res/TC_UPER_WebNotify_LP_Req2.3.html')" data-transition="slide" style="">
+                        <h2>WebNotify_Local_withprivilege</h2>
+                    </a>
+                </li>
                 <li id="protection-encryption-check">
                     <a href="javascript:goToApp('res/protection-encryption-check.html')" data-transition="slide" style="">
                         <h2>protection-encryption-check</h2>
index e46bc49867eb1d494d10fc996559c90a929489fa..5eda10e79b2f0eb459d847824ed4a368dc3ab70e 100755 (executable)
@@ -27,6 +27,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 Authors:
         Feng, GangX <gangx.feng@intel.com>
         SRC-NJ Ran Wang <ran22.wang@samsung.com>
+        SRC-NJ Weixia Fu <weixia12.fu@samsung.com>
 
 */
 var allId=new Array('wrt3lue021',
@@ -41,7 +42,21 @@ var allId=new Array('wrt3lue021',
                     'wrturla004',
                     'wrturla005',
                     'wrturla006',
-                    'wrt5pec119');
+                    'wrt5pec119',
+                    'FULL00010L',
+                    'FULL0000LP',
+                    'Zy38WGeo4H',
+                    'Zy39WGeoHP',
+                    'Zy40WGeo4L',
+                    'Zy41WGeoLP',
+                    'Zy44SGet4H',
+                    'Zy45SGetHP',
+                    'Qj5162RiTb',
+                    'UE52s9HrGz',
+                    'Zy81WNot4L',
+                    'Zy99WNotHP',
+                    'Zy79WNot4L',
+                    'Zyj599otLP');
 
 var installedId = new Array();
 var resultXML, tests;
@@ -298,4 +313,4 @@ function reportResult(res) {
     successBackAppsHome();
 }
 
-window.addEventListener('load', initTests, false);
+window.addEventListener('load', initTests, false);
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.html
new file mode 100755 (executable)
index 0000000..3dc4910
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_FullScreen_LP_Req2">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_FullScreen_LP_Req2.2"/>
+                <input type="hidden" id="app_id" value="FULL0000LP.UPERFULLSCREEN"/>
+                <input type="hidden" id="package_id" value="FULL0000LP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should switch to full screen mode".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt
new file mode 100755 (executable)
index 0000000..f7cb27c
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_LP_Req2.2.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.html
new file mode 100755 (executable)
index 0000000..bd2b575
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_FullScreen_L_Req2">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_FullScreen_L_Req2.2"/>
+                <input type="hidden" id="app_id" value="FULL00010L.UPERFULLSCREEN"/>
+                <input type="hidden" id="package_id" value="FULL00010L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should not switch to full screen mode".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt
new file mode 100755 (executable)
index 0000000..f88e00c
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_FullScreen_L_Req2.2.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..d4056ae
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy39WGeoHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy39WGeoHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..2793b0f
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_HP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..4207650
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy38WGeo4H.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy38WGeo4H"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can not get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..cd9ccbc
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_H_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..001e3a0
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy41WGeoLP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy41WGeoLP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..15f52e3
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_LP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..340cd44
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_Geoloc_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_Geoloc_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy40WGeo4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy40WGeo4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It can not get location".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..0a5802b
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_Geoloc_L_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..47355d6
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy45SGetHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy45SGetHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.
+</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..263ad84
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_HP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..7e6b093
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy44SGet4H.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy44SGet4H"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..be9e181
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_H_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..6d12740
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="UE52s9HrGz.SelfCamera1"/>
+                <input type="hidden" id="package_id" value="UE52s9HrGz"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.
+.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..d49e57c
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_LP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..1f96b65
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_GetUserMedia_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_GetUserMedia_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Qj5162RiTb.Selfcamera"/>
+                <input type="hidden" id="package_id" value="Qj5162RiTb"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS.</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..54fb120
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_GetUserMedia_L_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.html
new file mode 100755 (executable)
index 0000000..0fa2c94
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_HP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_HP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy99WNotHP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy99WNotHP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' and should display email received notification within APP view.".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..bdabfad
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_HP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.html
new file mode 100755 (executable)
index 0000000..3f99074
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_H_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_H_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy81WNot4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy81WNot4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' and should display email received notification within APP view."</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..51d2e2b
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_H_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.html
new file mode 100755 (executable)
index 0000000..07c774b
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_LP_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_LP_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zyj599otLP.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zyj599otLP"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if it displayed PASS".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..03cbb7d
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_LP_Req2.3.wgt differ
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.html
new file mode 100755 (executable)
index 0000000..bc94344
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<!--
+Copyright (c) 2015 Samsung Electronics Co., Ltd.
+
+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.
+
+Authors:
+        Weixia Fu <weixia12.fu@samsung.com>
+
+-->
+<html>
+  <head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/jquery.mobile.css"/>
+    <link rel="stylesheet" type="text/css" href="../../../css/main.css"/>
+    <script src="../../../js/thirdparty/jquery.js"></script>
+    <script src="../../../js/thirdparty/jquery.mobile.js"></script>
+    <script src="../../../js/tests.js"></script>
+    <script src="../js/tests.js"></script>
+  </head>
+  <body>
+    <div data-role="page" id="TC_UPER_WebNotify_L_Req2.3">
+        <div id="content">
+            <div>
+                <input type="hidden" id="wgt_name" value="TC_UPER_WebNotify_L_Req2.3"/>
+                <input type="hidden" id="app_id" value="Zy79WNot4L.DynamicSample1"/>
+                <input type="hidden" id="package_id" value="Zy79WNot4L"/>
+            </div>
+            <ul data-role="listview">
+                <li data-role="list-divider">Package Install</li>
+                <li>
+                    <div data-role="button" id="install" class="wgtButton">Install</div>
+                </li>
+                <li data-role="list-divider">Package Launch</li>
+                <li>
+                    <div data-role="button" id="launch" class="wgtButton">Launch</div>
+                </li>
+                <li data-role="list-divider">Package Uninstall</li>
+                <li>
+                    <div data-role="button" id="uninstall" class="wgtButton">Uninstall</div>
+                </li>
+            </ul>
+        </div>
+        <div data-role="footer" data-position="fixed" data-tap-toggle="false">
+        </div>
+        <div data-role="popup" id="popup_info" data-theme="a">
+          <font class="fontSize">
+            <p>Test Step: </p>
+            <ol>
+              <li>Click the "Install" button to install the widget.</li>
+              <li>Click the "Launch" button to launch the widget.</li>
+              <li>Click the "Uninstall" button to uninstall the widget.</li>
+            </ol>
+            <p>Expected Result: </p>
+            <p>Test passes if It should show a pop up 'This application wants to use your media' with 'Deny',  'Allow', And 'Remember Preference' options within APP view.".</p>
+          </font>
+        </div>
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt
new file mode 100755 (executable)
index 0000000..3c468fb
Binary files /dev/null and b/wearable/tests/WRTSupport/res/TC_UPER_WebNotify_L_Req2.3.wgt differ
index 3df8be552cd1570e3ac00845ed2fe86b029b753f..26d972970195843dcd0bf786aca326ecdbb66d7d 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="debug-web-inspector-ubuntu">
         <div id="content">
index 584c453b3df963201a142d6e13ac2a7439264587..212f66028991de130347ae81ad6ba480a0aae18b 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="debug-web-inspector-windows7">
         <div id="content">
index c70d34617b7aea3cfec5b43d4b0b3538e8c1d55f..dfc6168578b2d8a679c1500963626f7d242c02be 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="lifecycle-unload-event">
         <div id="content">
index bd16fe2196d65ee2e16d2a5f7ea20236be2ea263..cd18d5c31cb682801fd19d1ac3f32e7a8fafddce 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="other-localization">
         <div id="content">
index 4d00293a865ad82838c8904a2b4cfae0b8d57c8c..b70ebe9dfb35c0e3771a12901f87103fa4676f7b 100755 (executable)
@@ -30,7 +30,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="other-uri-schemes-mailto-groups">
         <div id="content">
index 8f8319abd80339e2898587e06bfaacc556b1ad13..0712dbcc446fd6ad27337ebc6288de452a4d3eaa 100755 (executable)
@@ -30,7 +30,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="other-uri-schemes-mailto-tel">
         <div id="content">
index 9e1422f38ec779782e9b2d4661c5e3eed078af1b..caf043caf0236179d9598a7f9ff3c4bb2c2d918c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="protection-encryption-check">
         <div id="content">
index d46b1764d0d95c242cc8fc9f7ded0a0ddb3d11e8..3f4ac192a54eff1469fc923ecf24b25e2d71789c 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="security-permission">
         <div id="content">
index 93c90e526816e1cab9e7675c30ed9e558c42f40f..6ed062c46a43067793198beb2551fec9d6c35ba5 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="security-policy">
         <div id="content">
index f36ef5aa54ea47eb7093415616f5f5aac1067534..197ea8d3c40d9cafd38d4a516c28a7aa0f0639f5 100755 (executable)
@@ -29,7 +29,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="url-access-multi-all-ports">
         <div id="content">
index 2695f68e5a46cbb9cdef3d4969c26d2921a8d5e3..a2dd7ff7bfd3682b08561f0901172acdeb06ead9 100755 (executable)
@@ -29,7 +29,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="url-access-multi-https-all">
         <div id="content">
index 6c06ff2be1d62f4efca044960ea2baf8f1a81157..969e4dbea511080f3d113f3a6fc11b5877358183 100755 (executable)
@@ -29,7 +29,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="url-access-multi-https-subdomains">
         <div id="content">
index 5551395ddf937f895f4da3ffa805b2b0cba86def..22f8f252413dd3774e398b7b1be591d7e4e5955f 100755 (executable)
@@ -29,7 +29,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="url-access-multi-https">
         <div id="content">
index 9a40c3bb3903992498b3fd0fd9ead5f48aa416a7..3734f2b75125abb1e5d9524efc1a387719b6c39a 100755 (executable)
@@ -40,7 +40,8 @@ Authors:
     <script src="../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../js/tests.js"></script>
     <script src="js/main.js"></script>
-  </head>
+  
+</head>
   <body bgcolor="FFFFFF" >
     <div data-role="page" id="main">
         <div data-role="header" data-position="fixed" data-tap-toggle="false">
index 6ee475b21bc33a6e4a2af1309f76cd59b0be55fb..f089ab89b3ce3f4a62f5697eb731073a4ca1ca69 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="application-rotation-sensor-enable">
         <div id="content">
index 8fb3aa55578edfbbdbbcb64e1dc4656824a1eb0f..75ea77d27217fd7c50fd92cef8538a16c25e659a 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-mode-allow-navigation-access">
         <div id="content">
index 17a435596c0fb0594ce98e29f12d93827347313c..b010097b9c616a99fd3e047c9630e6c5de664714 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="csp-mode-not-navigation-access">
         <div id="content">
index 7f488d5ffadf03dbedf27f1604b83fb61c185884..428bec72fda465702e0744fa21019e647eb03f04 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="multiple-browsing-context">
         <div id="content">
index cdf0233bb9c54eafd29aefddbdd81829932223c5..5e6cffc92f9e703a46b5b2f8e371b4f65bf5fd66 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="not-csp-allow-navigation-access">
         <div id="content">
index 9962666fb29dd2c736f63320318e31e1e1da32d4..f1165851c4441a639966693ec5ea50b362278c40 100755 (executable)
@@ -28,7 +28,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="not-csp-not-allow-navigation-access">
         <div id="content">
index 9f220499ff82a75697c3effce40036b66c89ee07..5bb5e6e145249467385b9b543b438226f5456378 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="view-mode-fullscreen-rotation">
         <div id="content">
index 59c4b76eca09e4f66a500c88d358990cc4d15ec6..76822ebece391acb956b238ffb9fa409755bbbbd 100755 (executable)
@@ -39,7 +39,8 @@ Authors:
     <script src="../../../js/thirdparty/jquery.mobile.js"></script>
     <script src="../../../js/tests.js"></script>
     <script src="../js/tests.js"></script>
-  </head>
+  
+</head>
   <body>
     <div data-role="page" id="view-mode-maximized-rotation">
         <div id="content">
diff --git a/wearable/tests/circle.js b/wearable/tests/circle.js
new file mode 100755 (executable)
index 0000000..2f32202
--- /dev/null
@@ -0,0 +1,20 @@
+$(function(){
+    try {
+        // Checks if a device supports bluetooth API or not
+        var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape.circle");
+        console.log("Shape = " + shape);
+    } catch (error) {
+        //alert("Error name: " + error.name + ", message: " + error.message);
+        console.log("Error name: " + error.name + ", message: " + error.message);
+    }
+
+    if(shape==true){
+        $('body').css('max-width', '100%');
+        $('body').css('max-height', '100%');
+        $('body').css('background-color', 'white');
+        $('body').css('margin-top', '20%');
+        $('body').css('margin-bottom', '20%');
+        $('body').css('margin-left', '20%');
+        $('body').css('margin-right', '20%');
+    }
+});
diff --git a/wearable/tests/jquery-1.10.2.min.js b/wearable/tests/jquery-1.10.2.min.js
new file mode 100755 (executable)
index 0000000..da41706
--- /dev/null
@@ -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/wearable/tests/jquery.mobile-1.4.5.css b/wearable/tests/jquery.mobile-1.4.5.css
new file mode 100755 (executable)
index 0000000..3502e3a
--- /dev/null
@@ -0,0 +1,4716 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* SVG icons */
+.ui-icon-action:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-alert:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-audio:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-back:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bars:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bullets:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-calendar:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-camera:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-d:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-u:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-clock:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-cloud:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-comment:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-delete:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-edit:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-eye:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forbidden:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forward:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-gear:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-grid:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-heart:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-home:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-info:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-location:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-lock:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-mail:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-minus:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-navigation:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-phone:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-plus:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-power:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-recycle:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-refresh:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-search:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-shop:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-star:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-tag:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-user:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-video:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+       background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* PNG icons */
+.ui-nosvg .ui-icon-action:after {
+       background-image: url(images/icons-png/action-white.png);
+}
+.ui-nosvg .ui-icon-alert:after {
+       background-image: url(images/icons-png/alert-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d-l:after {
+       background-image: url(images/icons-png/arrow-d-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d-r:after {
+       background-image: url(images/icons-png/arrow-d-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d:after {
+       background-image: url(images/icons-png/arrow-d-white.png);
+}
+.ui-nosvg .ui-icon-arrow-l:after {
+       background-image: url(images/icons-png/arrow-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-r:after {
+       background-image: url(images/icons-png/arrow-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u-l:after {
+       background-image: url(images/icons-png/arrow-u-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u-r:after {
+       background-image: url(images/icons-png/arrow-u-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u:after {
+       background-image: url(images/icons-png/arrow-u-white.png);
+}
+.ui-nosvg .ui-icon-audio:after {
+       background-image: url(images/icons-png/audio-white.png);
+}
+.ui-nosvg .ui-icon-back:after {
+       background-image: url(images/icons-png/back-white.png);
+}
+.ui-nosvg .ui-icon-bars:after {
+       background-image: url(images/icons-png/bars-white.png);
+}
+.ui-nosvg .ui-icon-bullets:after {
+       background-image: url(images/icons-png/bullets-white.png);
+}
+.ui-nosvg .ui-icon-calendar:after {
+       background-image: url(images/icons-png/calendar-white.png);
+}
+.ui-nosvg .ui-icon-camera:after {
+       background-image: url(images/icons-png/camera-white.png);
+}
+.ui-nosvg .ui-icon-carat-d:after {
+       background-image: url(images/icons-png/carat-d-white.png);
+}
+.ui-nosvg .ui-icon-carat-l:after {
+       background-image: url(images/icons-png/carat-l-white.png);
+}
+.ui-nosvg .ui-icon-carat-r:after {
+       background-image: url(images/icons-png/carat-r-white.png);
+}
+.ui-nosvg .ui-icon-carat-u:after {
+       background-image: url(images/icons-png/carat-u-white.png);
+}
+.ui-nosvg .ui-icon-check:after,
+html.ui-nosvg .ui-btn.ui-checkbox-on:after {
+       background-image: url(images/icons-png/check-white.png);
+}
+.ui-nosvg .ui-icon-clock:after {
+       background-image: url(images/icons-png/clock-white.png);
+}
+.ui-nosvg .ui-icon-cloud:after {
+       background-image: url(images/icons-png/cloud-white.png);
+}
+.ui-nosvg .ui-icon-comment:after {
+       background-image: url(images/icons-png/comment-white.png);
+}
+.ui-nosvg .ui-icon-delete:after {
+       background-image: url(images/icons-png/delete-white.png);
+}
+.ui-nosvg .ui-icon-edit:after {
+       background-image: url(images/icons-png/edit-white.png);
+}
+.ui-nosvg .ui-icon-eye:after {
+       background-image: url(images/icons-png/eye-white.png);
+}
+.ui-nosvg .ui-icon-forbidden:after {
+       background-image: url(images/icons-png/forbidden-white.png);
+}
+.ui-nosvg .ui-icon-forward:after {
+       background-image: url(images/icons-png/forward-white.png);
+}
+.ui-nosvg .ui-icon-gear:after {
+       background-image: url(images/icons-png/gear-white.png);
+}
+.ui-nosvg .ui-icon-grid:after {
+       background-image: url(images/icons-png/grid-white.png);
+}
+.ui-nosvg .ui-icon-heart:after {
+       background-image: url(images/icons-png/heart-white.png);
+}
+.ui-nosvg .ui-icon-home:after {
+       background-image: url(images/icons-png/home-white.png);
+}
+.ui-nosvg .ui-icon-info:after {
+       background-image: url(images/icons-png/info-white.png);
+}
+.ui-nosvg .ui-icon-location:after {
+       background-image: url(images/icons-png/location-white.png);
+}
+.ui-nosvg .ui-icon-lock:after {
+       background-image: url(images/icons-png/lock-white.png);
+}
+.ui-nosvg .ui-icon-mail:after {
+       background-image: url(images/icons-png/mail-white.png);
+}
+.ui-nosvg .ui-icon-minus:after {
+       background-image: url(images/icons-png/minus-white.png);
+}
+.ui-nosvg .ui-icon-navigation:after {
+       background-image: url(images/icons-png/navigation-white.png);
+}
+.ui-nosvg .ui-icon-phone:after {
+       background-image: url(images/icons-png/phone-white.png);
+}
+.ui-nosvg .ui-icon-plus:after {
+       background-image: url(images/icons-png/plus-white.png);
+}
+.ui-nosvg .ui-icon-power:after {
+       background-image: url(images/icons-png/power-white.png);
+}
+.ui-nosvg .ui-icon-recycle:after {
+       background-image: url(images/icons-png/recycle-white.png);
+}
+.ui-nosvg .ui-icon-refresh:after {
+       background-image: url(images/icons-png/refresh-white.png);
+}
+.ui-nosvg .ui-icon-search:after {
+       background-image: url(images/icons-png/search-white.png);
+}
+.ui-nosvg .ui-icon-shop:after {
+       background-image: url(images/icons-png/shop-white.png);
+}
+.ui-nosvg .ui-icon-star:after {
+       background-image: url(images/icons-png/star-white.png);
+}
+.ui-nosvg .ui-icon-tag:after {
+       background-image: url(images/icons-png/tag-white.png);
+}
+.ui-nosvg .ui-icon-user:after {
+       background-image: url(images/icons-png/user-white.png);
+}
+.ui-nosvg .ui-icon-video:after {
+       background-image: url(images/icons-png/video-white.png);
+}
+/* Alt icons */
+.ui-nosvg .ui-alt-icon.ui-icon-action:after,
+.ui-nosvg .ui-alt-icon .ui-icon-action:after {
+       background-image: url(images/icons-png/action-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-alert:after,
+.ui-nosvg .ui-alt-icon .ui-icon-alert:after {
+       background-image: url(images/icons-png/alert-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d:after {
+       background-image: url(images/icons-png/arrow-d-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-l:after {
+       background-image: url(images/icons-png/arrow-d-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-r:after {
+       background-image: url(images/icons-png/arrow-d-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-l:after {
+       background-image: url(images/icons-png/arrow-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-r:after {
+       background-image: url(images/icons-png/arrow-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u:after {
+       background-image: url(images/icons-png/arrow-u-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-l:after {
+       background-image: url(images/icons-png/arrow-u-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-r:after {
+       background-image: url(images/icons-png/arrow-u-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-audio:after,
+.ui-nosvg .ui-alt-icon .ui-icon-audio:after {
+       background-image: url(images/icons-png/audio-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-back:after,
+.ui-nosvg .ui-alt-icon .ui-icon-back:after {
+       background-image: url(images/icons-png/back-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bars:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bars:after {
+       background-image: url(images/icons-png/bars-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bullets:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bullets:after {
+       background-image: url(images/icons-png/bullets-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-calendar:after,
+.ui-nosvg .ui-alt-icon .ui-icon-calendar:after {
+       background-image: url(images/icons-png/calendar-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-camera:after,
+.ui-nosvg .ui-alt-icon .ui-icon-camera:after {
+       background-image: url(images/icons-png/camera-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-d:after {
+       background-image: url(images/icons-png/carat-d-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-l:after {
+       background-image: url(images/icons-png/carat-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-r:after {
+       background-image: url(images/icons-png/carat-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-u:after {
+       background-image: url(images/icons-png/carat-u-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-check:after,
+.ui-nosvg .ui-alt-icon .ui-icon-check:after,
+.ui-nosvg .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+.ui-nosvg .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+       background-image: url(images/icons-png/check-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-clock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-clock:after {
+       background-image: url(images/icons-png/clock-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-cloud:after,
+.ui-nosvg .ui-alt-icon .ui-icon-cloud:after {
+       background-image: url(images/icons-png/cloud-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-comment:after,
+.ui-nosvg .ui-alt-icon .ui-icon-comment:after {
+       background-image: url(images/icons-png/comment-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-delete:after,
+.ui-nosvg .ui-alt-icon .ui-icon-delete:after {
+       background-image: url(images/icons-png/delete-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-edit:after,
+.ui-nosvg .ui-alt-icon .ui-icon-edit:after {
+       background-image: url(images/icons-png/edit-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-eye:after,
+.ui-nosvg .ui-alt-icon .ui-icon-eye:after {
+       background-image: url(images/icons-png/eye-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forbidden:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forbidden:after {
+       background-image: url(images/icons-png/forbidden-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forward:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forward:after {
+       background-image: url(images/icons-png/forward-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-gear:after,
+.ui-nosvg .ui-alt-icon .ui-icon-gear:after {
+       background-image: url(images/icons-png/gear-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-grid:after,
+.ui-nosvg .ui-alt-icon .ui-icon-grid:after {
+       background-image: url(images/icons-png/grid-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-heart:after,
+.ui-nosvg .ui-alt-icon .ui-icon-heart:after {
+       background-image: url(images/icons-png/heart-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-home:after,
+.ui-nosvg .ui-alt-icon .ui-icon-home:after {
+       background-image: url(images/icons-png/home-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-info:after,
+.ui-nosvg .ui-alt-icon .ui-icon-info:after {
+       background-image: url(images/icons-png/info-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-location:after,
+.ui-nosvg .ui-alt-icon .ui-icon-location:after {
+       background-image: url(images/icons-png/location-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-lock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-lock:after {
+       background-image: url(images/icons-png/lock-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-mail:after,
+.ui-nosvg .ui-alt-icon .ui-icon-mail:after {
+       background-image: url(images/icons-png/mail-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-minus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-minus:after {
+       background-image: url(images/icons-png/minus-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-navigation:after,
+.ui-nosvg .ui-alt-icon .ui-icon-navigation:after {
+       background-image: url(images/icons-png/navigation-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-phone:after,
+.ui-nosvg .ui-alt-icon .ui-icon-phone:after {
+       background-image: url(images/icons-png/phone-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-plus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-plus:after {
+       background-image: url(images/icons-png/plus-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-power:after,
+.ui-nosvg .ui-alt-icon .ui-icon-power:after {
+       background-image: url(images/icons-png/power-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-recycle:after,
+.ui-nosvg .ui-alt-icon .ui-icon-recycle:after {
+       background-image: url(images/icons-png/recycle-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-refresh:after,
+.ui-nosvg .ui-alt-icon .ui-icon-refresh:after {
+       background-image: url(images/icons-png/refresh-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-search:after,
+.ui-nosvg .ui-alt-icon .ui-icon-search:after,
+.ui-nosvg .ui-input-search:after {
+       background-image: url(images/icons-png/search-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-shop:after,
+.ui-nosvg .ui-alt-icon .ui-icon-shop:after {
+       background-image: url(images/icons-png/shop-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-star:after,
+.ui-nosvg .ui-alt-icon .ui-icon-star:after {
+       background-image: url(images/icons-png/star-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-tag:after,
+.ui-nosvg .ui-alt-icon .ui-icon-tag:after {
+       background-image: url(images/icons-png/tag-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-user:after,
+.ui-nosvg .ui-alt-icon .ui-icon-user:after {
+       background-image: url(images/icons-png/user-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-video:after,
+.ui-nosvg .ui-alt-icon .ui-icon-video:after {
+       background-image: url(images/icons-png/video-black.png);
+}
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+       font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+       font-size: 1em;
+       line-height: 1.3;
+       font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+       color: inherit;
+       text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+       font-weight: normal;
+       font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+       border-bottom-color: #828282;
+       border-bottom-color: rgba(0,0,0,.15);
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+       border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+       border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+       border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+       border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+       border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+       background-color: #eeeeee; /* non-RGBA fallback  */
+       background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+       font-weight: bold;
+       border-width: 1px;
+       border-style: solid;
+}
+.ui-btn {
+       text-decoration: none !important;
+}
+.ui-btn-active {
+       cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+       -webkit-border-radius:                          .3125em /*{global-radii-blocks}*/;
+       border-radius:                                          .3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+       -webkit-border-radius:                          .3125em /*{global-radii-buttons}*/;
+       border-radius:                                          .3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+       -webkit-border-radius: 1em;
+       border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+       -webkit-background-clip: padding;
+       background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+       left: .6em /*{global-radii-blocks}*/;
+       right: .6em /*{global-radii-blocks}*/;
+       top: .6em /*{global-radii-blocks}*/;
+       bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+       -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/              rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+       -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                 rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+       box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                              rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+       -webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/        rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       -moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/           rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/        rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+       -webkit-box-shadow: 0 0 12px            rgba(0,0,0,.6);
+       -moz-box-shadow: 0 0 12px                       rgba(0,0,0,.6);
+       box-shadow: 0 0 12px                            rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+       background-color:                                       #666 /*{global-icon-color}*/;
+       background-color:                                       rgba(0,0,0,.3) /*{global-icon-disc}*/;
+       background-position: center center;
+       background-repeat: no-repeat;
+       -webkit-border-radius: 1em;
+       border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+       background-color:                                       #666 /*{global-icon-color}*/;
+       background-color:                                       rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+       background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+       -webkit-box-shadow: 0 1px 0                     rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+       -moz-box-shadow: 0 1px 0                                rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+       box-shadow: 0 1px 0                                     rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+       display: block;
+       width: 18px;
+       height: 18px;
+       margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+       -webkit-border-radius: .1875em;
+       border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+       background-color: #666;
+       background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+       background-image: none;
+       background-color: #fff;
+       width: 8px;
+       height: 8px;
+       border-width: 5px;
+       border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+       background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+       background: url(images/ajax-loader.gif);
+       background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+       background-color:                       #e9e9e9 /*{a-bar-background-color}*/;
+       border-color:                   #ddd /*{a-bar-border}*/;
+       color:                                  #333 /*{a-bar-color}*/;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/        #eee /*{a-bar-shadow-color}*/;
+       font-weight: bold;
+}
+.ui-bar-a {
+       border-width: 1px;
+       border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+       background-color:                       #f9f9f9 /*{a-page-background-color}*/;
+       border-color:                   #bbb /*{a-page-border}*/;
+       color:                                  #333 /*{a-page-color}*/;
+       text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/     #f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+       background-color:                       #fff /*{a-body-background-color}*/;
+       border-color:                   #ddd /*{a-body-border}*/;
+       color:                                  #333 /*{a-body-color}*/;
+       text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/     #f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+       border-width: 1px;
+       border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+       color: #3388cc /*{a-link-color}*/;
+       font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+       color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+       color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+       background-color:                       #f6f6f6 /*{a-bup-background-color}*/;
+       border-color:                   #ddd /*{a-bup-border}*/;
+       color:                                  #333 /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+       background-color:                       #ededed /*{a-bhover-background-color}*/;
+       border-color:                   #ddd /*{a-bhover-border}*/;
+       color:                                  #333 /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+       background-color:                       #e8e8e8 /*{a-bdown-background-color}*/;
+       border-color:                   #ddd /*{a-bdown-border}*/;
+       color:                                  #333 /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+       background-color:               #3388cc /*{a-active-background-color}*/;
+       border-color:                   #3388cc /*{a-active-border}*/;
+       color:                                  #fff /*{a-active-color}*/;
+       text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+       border-color:                   #3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+       -webkit-box-shadow: 0 0 12px    #3388cc /*{a-active-background-color}*/;
+       -moz-box-shadow: 0 0 12px               #3388cc /*{a-active-background-color}*/;
+       box-shadow: 0 0 12px                    #3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+       background-color:                       #1d1d1d /*{b-bar-background-color}*/;
+       border-color:                   #1b1b1b /*{b-bar-border}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/        #111 /*{b-bar-shadow-color}*/;
+       font-weight: bold;
+}
+.ui-bar-b {
+       border-width: 1px;
+       border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+       background-color:                       #252525 /*{b-page-background-color}*/;
+       border-color:                   #454545 /*{b-page-border}*/;
+       color:                                  #fff /*{b-page-color}*/;
+       text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/     #111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+       background-color:                       #2a2a2a /*{b-body-background-color}*/;
+       border-color:                   #1d1d1d /*{b-body-border}*/;
+       color:                                  #fff /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/     #111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+       border-width: 1px;
+       border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+       color: #22aadd /*{b-link-color}*/;
+       font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+       color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+       color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+       background-color:                       #333 /*{b-bup-background-color}*/;
+       border-color:                   #1f1f1f /*{b-bup-border}*/;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+       background-color:                       #373737 /*{b-bhover-background-color}*/;
+       border-color:                   #1f1f1f /*{b-bhover-border}*/;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+       background-color:                       #404040 /*{b-bdown-background-color}*/;
+       border-color:                   #1f1f1f /*{b-bdown-border}*/;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+       background-color:               #22aadd /*{b-active-background-color}*/;
+       border-color:                   #22aadd /*{b-active-border}*/;
+       color:                                  #fff /*{b-active-color}*/;
+       text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+       border-color:                   #22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+       -webkit-box-shadow: 0 0 12px    #22aadd /*{b-active-background-color}*/;
+       -moz-box-shadow: 0 0 12px               #22aadd /*{b-active-background-color}*/;
+       box-shadow: 0 0 12px                    #22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+       cursor: default !important;
+       pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+       outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+       -webkit-box-shadow: none !important;
+       -moz-box-shadow: none !important;
+       box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+       outline-width: 1px;
+       outline-style: auto;
+}
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+       height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+       padding: 0;
+       margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+       border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+       min-width: 0;
+}
+@-moz-document url-prefix() {
+       .ui-mobile fieldset {
+               display: table-column;
+               vertical-align: middle;
+       }
+}
+/* Viewport */
+.ui-mobile-viewport {
+       margin: 0;
+       overflow-x: visible;
+       -webkit-text-size-adjust: 100%;
+       -ms-text-size-adjust:none;
+       -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+       overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+       top: 0;
+       left: 0;
+       width: 100%;
+       min-height: 100%;
+       position: absolute;
+       display: none;
+       border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+       outline: none;
+}
+.ui-mobile .ui-page-active {
+       display: block;
+       overflow: visible;
+       overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+       .ui-mobile .ui-page {
+               min-height: 420px;
+       }
+}
+@media screen and (orientation: landscape) {
+       .ui-mobile .ui-page {
+               min-height: 300px;
+       }
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+       visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+       display: block;
+}
+.ui-loader {
+       display: none;
+       z-index: 9999999;
+       position: fixed;
+       top: 50%;
+       left: 50%;
+       border:0;
+}
+.ui-loader-default {
+       background: none;
+       filter: Alpha(Opacity=18);
+       opacity: .18;
+       width: 2.875em;
+       height: 2.875em;
+       margin-left: -1.4375em;
+       margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+       width: 12.5em;
+       filter: Alpha(Opacity=88);
+       opacity: .88;
+       box-shadow: 0 1px 1px -1px #fff;
+       height: auto;
+       margin-left: -6.875em;
+       margin-top: -2.6875em;
+       padding: .625em;
+}
+.ui-loader-default h1 {
+       font-size: 0;
+       width: 0;
+       height: 0;
+       overflow: hidden;
+}
+.ui-loader-verbose h1 {
+       font-size: 1em;
+       margin: 0;
+       text-align: center;
+}
+.ui-loader .ui-icon-loading {
+       background-color: #000;
+       display: block;
+       margin: 0;
+       width: 2.75em;
+       height: 2.75em;
+       padding: .0625em;
+       -webkit-border-radius: 2.25em;
+       border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+       margin: 0 auto .625em;
+       filter: Alpha(Opacity=75);
+       opacity: .75;
+}
+.ui-loader-textonly {
+       padding: .9375em;
+       margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+       display: none;
+}
+.ui-loader-fakefix {
+       position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+       position: relative;
+       padding: .4em 1em;
+       overflow: hidden;
+       display: block;
+       clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+       margin: 0;
+       padding: 0;
+       font-size: 1em;
+       display: inline-block;
+}
+.ui-header,
+.ui-footer {
+       border-width: 1px 0;
+       border-style: solid;
+       position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+       min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+       font-size: 1em;
+       min-height: 1.1em;
+       text-align: center;
+       display: block;
+       margin: 0 30%;
+       padding: .7em 0;
+       text-overflow: ellipsis;
+       overflow: hidden;
+       white-space: nowrap;
+       outline: 0 !important;
+}
+.ui-footer .ui-title {
+       margin: 0 1em;
+}
+.ui-content {
+       border-width: 0;
+       overflow: visible;
+       overflow-x: hidden;
+       padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+       font-size: 16px;
+       margin: .5em 0;
+       padding: .7em 1em;
+       display: block;
+       position: relative;
+       text-align: center;
+       text-overflow: ellipsis;
+       overflow: hidden;
+       white-space: nowrap;
+       cursor: pointer;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+       padding: 0;
+       width: 1.75em;
+       height: 1.75em;
+       text-indent: -9999px;
+       white-space: nowrap !important;
+}
+.ui-mini {
+       font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+       font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+       font-size: 12.5px;
+       display: inline-block;
+       vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+       font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+       font-size: 16px;        
+       padding: 0;
+}
+.ui-btn-inline {
+       display: inline-block;
+       vertical-align: middle;
+       margin-right: .625em;
+}
+.ui-btn-icon-left {
+       padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+       padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+       padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+       padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+       padding-left: .3125em;
+       padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+       content: "";
+       position: absolute;
+       display: block;
+       width: 22px;
+       height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+       top: 50%;
+       margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+       left: .5625em;
+}
+.ui-btn-icon-right:after {
+       right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+       left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+       right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+       left: 50%;
+       margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+       top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+       top: auto;
+       bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+       margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+       position: absolute;
+       top: .24em;
+}
+.ui-btn-left {
+       left: .4em;
+}
+.ui-btn-right {
+       right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+       top: .3125em;
+       left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+       top: .3125em;
+       right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       -webkit-appearance: none;
+       -moz-appearance: none;
+       width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+       width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+       border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       box-sizing: content-box;
+       width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+       display: block;
+       margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+       display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+       animation-timing-function: ease-in;
+       animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+       animation-duration: 125ms;
+       animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+       animation-duration: 225ms;
+       animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+       transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -webkit-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: scale(1);
+       -moz-animation-name: popin;
+       -moz-animation-duration: 350ms;
+       transform: scale(1);
+       animation-name: popin;
+       animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+       opacity: 0;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-transform: scale(.8);
+       -moz-animation-name: popout;
+       transform: scale(.8);
+       animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translate3d(-100%,0,0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+       transform: translateX(0);
+       animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translate3d(100%,0,0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+       transform: translateX(0);
+       animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -moz-animation-duration: 225ms;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+       animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -moz-animation-duration: 200ms;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+       animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfromtop;
+       animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(-100%);
+       -moz-animation-name: slideouttotop;
+       -moz-animation-duration: 200ms;
+       transform: translateY(-100%);
+       animation-name: slideouttotop;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfrombottom;
+       animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(100%);
+       -moz-animation-name: slideouttobottom;
+       -moz-animation-duration: 200ms;
+       transform: translateY(100%);
+       animation-name: slideouttobottom;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-backface-visibility: hidden;
+       -moz-transform: translateX(0);
+       backface-visibility: hidden;
+       transform: translateX(0);
+}
+.flip.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 175ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 175ms;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+       animation-name: flipintoright;
+       animation-duration: 225ms;
+}
+.flip.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+       -webkit-perspective: 200px;
+       -moz-perspective: 200px;
+       -ms-perspective: 200px;
+       perspective: 200px;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -webkit-transform-origin: 0;
+       
+       -moz-backface-visibility: hidden;
+       -moz-transform: translateX(0);
+       -moz-transform-origin: 0;
+       
+       backface-visibility :hidden;
+       transform: translateX(0);
+       transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 125ms;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 250ms;
+       animation-name: flipintoright;
+       animation-duration: 250ms;
+       
+}
+.turn.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-transform-origin: 50% 30%; 
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       transform-origin: 50% 30%;      
+       box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -webkit-box-shadow: none;
+       -moz-transform-origin: none;    
+       -moz-box-shadow: none;
+       transform-origin: none; 
+       box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(-100%) scale(.7);
+       animation-name: flowouttoleft;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(0) scale(1);
+       animation-name: flowinfromright;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+       transform: translateX(100%);
+       animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+       animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+       display: block;
+       position: relative;
+       overflow: visible;
+       clear: both;
+       padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+       margin: 0;
+}
+.ui-field-contain:last-child {
+       border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+       .ui-field-contain,
+       .ui-mobile fieldset.ui-field-contain {
+               padding: 0;
+               margin: 1em 0;
+               border-bottom-width: 0;
+       }
+       .ui-field-contain:before,
+       .ui-field-contain:after {
+               content: "";
+               display: table;
+       }
+       .ui-field-contain:after {
+               clear: both;
+       }
+       .ui-field-contain > label,
+       .ui-field-contain .ui-controlgroup-label,
+       .ui-field-contain > .ui-rangeslider > label {
+               float: left;
+               width: 20%;
+               margin: .5em 2% 0 0;
+       }
+       .ui-popup .ui-field-contain > label,
+       .ui-popup .ui-field-contain .ui-controlgroup-label,
+       .ui-popup .ui-field-contain > .ui-rangeslider > label {
+               float: none;
+               width: auto;
+               margin: 0 0 .4em;
+       }
+       .ui-field-contain > label ~ [class*="ui-"],
+       .ui-field-contain .ui-controlgroup-controls {
+               float: left;
+               width: 78%;
+               -webkit-box-sizing: border-box;
+               -moz-box-sizing: border-box;
+               box-sizing: border-box;
+       }
+       /* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+       .ui-hide-label > label ~ [class*="ui-"],
+       .ui-hide-label .ui-controlgroup-controls,
+       .ui-popup .ui-field-contain > label ~ [class*="ui-"],
+       .ui-popup .ui-field-contain .ui-controlgroup-controls {
+               float: none;
+               width: 100%;
+       }
+       .ui-field-contain > label ~ .ui-btn-inline {
+               width: auto;
+               margin-right: .625em;
+       }
+       .ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+               width: 1.75em;
+       }
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+       overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       float: left;
+       min-height: 1px;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+       clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+       margin-left: 0;
+       margin-right: 0;
+       padding: 0;
+       list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+       margin-right: 0;
+       margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+       margin-right: .3125em;
+       margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+       /* width: 49.95%; IE7 */
+       /* margin-right: -.5px; BB5 */
+       width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+       /* width: 33.25%; IE7 */
+       /* margin-right: -.5px; BB5 */
+       width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+       /* width: 24.925%; IE7 */
+       /* margin-right: -.5px; BB5 */
+       width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+       /* width: 19.925%; IE7 */
+       width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+       width: 100%;
+       float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+       .ui-responsive > .ui-block-a,
+       .ui-responsive > .ui-block-b,
+       .ui-responsive > .ui-block-c,
+       .ui-responsive > .ui-block-d,
+       .ui-responsive > .ui-block-e {
+               width: 100%; 
+               float: none; 
+       }
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: -1px;
+       padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+       top: 0;
+       padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+       margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+       margin-top: 0;
+}
+.ui-footer-fixed {
+       bottom: -1px;
+       padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+       bottom: 0;
+       padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+       padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+       z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+       -webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+       max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+       content: "";
+       display: table;
+}
+.ui-navbar ul:after {
+       clear: both;
+}
+.ui-navbar ul {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+       position: relative;
+       display: block;
+       border: 0;
+       max-width: 100%;
+       overflow: visible;
+}
+.ui-navbar li .ui-btn {
+       font-size: 12.5px;
+       display: block;
+       margin: 0;
+       border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+       margin: 0;
+       width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+       z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+       margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+       margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+       border-right-width: 1px;
+       margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+       margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+       border-right-width: 1px;
+       margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+       margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+       border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+       border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+       border-top-width: 0;
+       border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+       border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+       border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 100%;
+       height: 100%;
+       padding: 0;
+       border: 0;
+       outline: 0;
+       -webkit-border-radius: inherit;
+       border-radius: inherit; 
+       -webkit-appearance: none;
+       -moz-appearance: none;
+       cursor: pointer;
+       background: #fff;
+       background: rgba(255,255,255,0);
+       filter: Alpha(Opacity=0);
+       opacity: .1;
+       font-size: 1px;
+       text-indent: -9999px;
+       z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+       margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+       margin: .5em 0;
+}
+.ui-collapsible-heading {
+       display: block;
+       margin: 0;
+       padding: 0;
+       position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+       text-align: left;
+       margin: 0;
+       border-left-width: 0;
+       border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+       text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+       border-right-width: 1px;
+       border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+       border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+       border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+       display: block;
+       margin: 0;      
+       padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top-width: 0;
+       border-bottom-width: 1px;
+       border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+       border-left-width: 1px;
+       border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+       margin: 0;
+}
+.ui-collapsible-content-collapsed {
+       display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+       -webkit-border-radius: inherit; 
+       border-radius: inherit; 
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+       -webkit-border-top-right-radius: inherit;       
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;        
+       border-top-left-radius: inherit;                
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;    
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;     
+       border-bottom-left-radius: inherit;             
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+       -webkit-border-bottom-right-radius: 0;  
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;   
+       border-bottom-left-radius: 0;           
+}
+.ui-collapsible-set .ui-collapsible {
+       margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+       margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+       margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+       padding: 0;
+       margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+       margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+       font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+       font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+       margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+       z-index: 1;
+}
+.ui-controlgroup-controls li {
+       list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+       display: inline-block;
+       vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+       content: "";
+       display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+       clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+       float: left;
+       clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+       width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+       width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+       height: auto;
+       padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+       border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+       border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+       border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+       border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+       max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 1em auto;
+       padding: 0;
+       position: relative;
+       top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+       display: block;
+       position: relative; 
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       overflow: hidden;
+       z-index: 10; 
+       padding: 0;
+       border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10; 
+       padding: 0 1em; 
+       border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+       background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-body-inherit {
+       border-width: 1px;
+       border-style: solid;
+}
+.ui-popup-hidden {
+       left: 0;
+       top: 0;
+       position: absolute !important;
+       visibility: hidden;
+}
+.ui-popup-truncate {
+       height: 1px;
+       width: 1px;
+       margin: -1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > .ui-header {
+       border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+       border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em .4375em;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+       position: absolute; 
+       top: -11px;
+       margin: 0;
+       z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+       left: -11px;
+}
+.ui-popup > .ui-btn-right {
+       right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+       width: 20px;
+       height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+       left: -10px;
+       clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+       top: -10px;
+       clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+       right: -10px;
+       clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+       bottom: -10px;
+       clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+       /* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+       width: 28.284271247px;
+       height: 28.284271247px;
+       border-width: 1px;
+       border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+       left: -4.142135623px;
+       top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+       left: -4.142135623px;
+       top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+       left: 5.857864376px;
+       top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+       left: -14.142135623px;
+       top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+       position: absolute;
+       left: 0;
+       right: 0;
+       top: 0;
+       bottom: 0;
+       visibility: hidden;
+}
+.ui-popup-arrow-container {
+       position: absolute;
+}
+.ui-popup-arrow {
+       -webkit-transform: rotate(45deg);
+       -moz-transform: rotate(45deg);
+       -ms-transform: rotate(45deg);
+       transform: rotate(45deg);
+       position: absolute;
+       overflow: hidden;
+       box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+       -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+       filter: progid:DXImageTransform.Microsoft.Matrix(
+               M11=0.7071067811865474,
+               M12=-0.7071067811865477,
+               M21=0.7071067811865477,
+               M22=0.7071067811865474,
+               SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+       margin: .5em 0;
+       position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+       margin: 0;
+       text-align: left;
+       white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+       z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+       z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+       text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+       content: none;
+       display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+       position: absolute;
+       left: .466em;
+       top: 50%;
+       width: 22px;
+       height: 22px;
+       margin: -11px 0 0 0;
+       outline: 0 !important;
+       z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+       left: 50%;
+       margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+       margin-top: .5em;
+       margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+       position: relative;
+}
+.ui-select > select {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+       margin: 0;
+       opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 100%;
+       min-height: 1.5em;
+       min-height: 100%;
+       height: 3em;
+       max-height: 100%;
+       outline: 0;
+       -webkit-border-radius: inherit;
+       border-radius: inherit; 
+       -webkit-appearance: none;
+       -moz-appearance: none;
+       cursor: pointer;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 2;
+}
+@-moz-document url-prefix() {
+       .ui-select .ui-btn select {
+               opacity: 0.0001;
+       }
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+       display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+       filter: Alpha(Opacity=100);
+       opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+       border-radius: 0;
+       border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+       opacity: 1;
+       text-indent: 0;
+       display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+       padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+       padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+       right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+       display: block;
+       text-overflow: ellipsis;
+       overflow: hidden !important;
+       white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+       min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+       overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+       margin: 0;
+       padding: 0;
+       border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+       z-index: 1;
+       position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+       content: '.';
+       visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+       margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+       overflow: visible;
+       z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+       margin: 0;
+       -webkit-border-radius: inherit;
+       border-radius: inherit; 
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+       -webkit-border-top-right-radius: 0;
+       border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 0;
+       border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+       border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+       border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+       cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+       display: none;
+}
+.ui-listview,
+.ui-listview > li {
+       margin: 0;
+       padding: 0;
+       list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+       margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+       margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+       margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+       margin: .5em 0;
+}
+.ui-listview > li {
+       display: block;
+       position: relative;
+       overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+       margin: 0;
+       display: block;
+       position: relative;
+       text-align: left;
+       text-overflow: ellipsis;
+       overflow: hidden;
+       white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+       z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+       border-width: 1px 0 0 0;
+       border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+       border-right-width: 1px;
+       border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+       border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+       border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+       border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+       -webkit-border-top-right-radius: inherit;       
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+       -webkit-border-top-right-radius: 0;
+       border-top-right-radius: 0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+       -webkit-border-top-left-radius: 0;      
+       border-top-left-radius: 0;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;        
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;     
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+       -webkit-border-radius: inherit;
+       border-radius: inherit; 
+}
+.ui-listview > .ui-li-static {
+       padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+       padding: .5em 1.143em;
+       font-size: 14px;
+       font-weight: bold;
+       cursor: default;
+       outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+       padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+       padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+       min-height: 3.625em;
+       padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+       min-height: 1.25em;
+       padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+       position: absolute;
+       font-size: 12.5px;
+       font-weight: bold;
+       text-align: center;
+       border-width: 1px;
+       border-style: solid;
+       padding: 0 .48em;
+       line-height: 1.6em;
+       min-height: 1.6em;
+       min-width: .64em;
+       right: .8em;
+       top: 50%;
+       margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+       right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+       position: absolute;
+       left: 0;
+       top: 0;
+       max-height: 5em;
+       max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+       position: absolute;
+       left: .625em;
+       top: .9em;
+       max-height: 1em;
+       max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+       font-size: 1em;
+       font-weight: bold;
+       display: block;
+       margin: .45em 0;
+       text-overflow: ellipsis;
+       overflow: hidden;
+       white-space: nowrap;
+}
+.ui-listview > li p {
+       font-size: .75em;
+       font-weight: normal;
+       display: block;
+       margin: .6em 0;
+       text-overflow: ellipsis;
+       overflow: hidden;
+       white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+       position: absolute;
+       top: 1em;
+       right: 3.333em;
+       margin: 0;
+       text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+       margin-right: 2.5em;
+       border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+       position: absolute;
+       width: 2.5em;
+       height: 100%;
+       min-height: auto;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       border-left-width: 1px;
+       top: 0;
+       right: 0;
+       margin: 0;
+       padding: 0;
+       z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+       border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+       z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+       counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+       vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+       display: inline-block;
+       font-size: .9em;
+       font-weight: normal;
+       padding-right: .3em;
+       min-width: 1.4em;
+       line-height: 1.5;
+       vertical-align: middle;
+       counter-increment: listnumbering;
+       content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+       content: none;
+       display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+       display: inline-block;
+       vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+       margin-top: 0;
+       text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+       margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+       margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+       margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+       border-top-width: 1px;
+}
+div.ui-slider {
+       height: 30px;
+       margin: .5em 0;
+       padding: 0;
+       -ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+       content: "";
+       display: table;
+}
+div.ui-slider:after {
+       clear: both;
+}
+input.ui-slider-input {
+       display: block;
+       float: left;
+       font-size: 14px;
+       font-weight: bold;
+       margin: 0;
+       padding: 4px;
+       width: 40px;
+       height: 20px;
+       line-height: 20px;
+       border-width: 1px;
+       border-style: solid;
+       outline: 0;
+       text-align: center;
+       vertical-align: text-bottom;
+       -webkit-appearance: none;
+       -moz-appearance: none;
+       appearance: none;
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.ui-slider-track {
+       position: relative;
+       overflow: visible;
+       border-width: 1px;
+       border-style: solid;
+       height: 15px;
+       margin: 0 15px 0 68px;
+       top: 6px;
+}
+.ui-slider-track.ui-mini {
+       height: 12px;
+       top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+       height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+       position: absolute;
+       z-index: 1;
+       top: 50%;
+       width: 28px;
+       height: 28px;
+       margin: -15px 0 0 -15px;
+       outline: 0;
+       padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+       height: 14px;
+       width: 14px;
+       margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+       display: inline-block;
+       height: 32px;
+       width: 5.8em;
+       top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+       display: none;
+       clear: none;
+}
+div.ui-slider-switch.ui-mini {
+       height: 29px;
+       top: 0;
+}
+.ui-slider-inneroffset {
+       margin: 0 16px;
+       position: relative;
+       z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+       margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+       width: 25px;
+       height: 25px;
+       margin: 1px 0 0 -13px;
+       padding: 0;
+}
+.ui-slider-handle-snapping {
+       -webkit-transition: left 70ms linear;
+       -moz-transition: left 70ms linear;
+       transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+       position: absolute;
+       text-align: center;
+       width: 100%;
+       overflow: hidden;
+       font-size: 16px;
+       top: 0;
+       line-height: 2;
+       min-height: 100%;
+       white-space: nowrap;
+       cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+       font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+       z-index: 1;
+       left: 0;
+       text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+       z-index: 0;
+       right: 0;
+       text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+       margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+       display: inline-block;
+       width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+       width: 64px;
+       height: 64px;
+       font-size: 36px;
+       padding-top: 14px;
+       opacity: 0.8;
+}
+.ui-slider-popup {
+       position: absolute !important;
+       text-align: center;
+       z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+       font-size: .9em;
+       line-height: 30px;
+}
+.ui-rangeslider {
+       margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+       content: "";
+       display: table;
+}
+.ui-rangeslider:after {
+       clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+       float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+       position: relative;
+       overflow: visible;
+       height: 30px;
+       margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+       position: absolute;
+       top: 6px;
+       right: 0;
+       left: 0;
+       margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+       top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+       display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       background-color: transparent;
+       background: none;
+       border-width: 0;
+       height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 15px;
+       border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+       position: absolute !important;
+       height: 1px;
+       width: 1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+       margin: .5em 0;
+       border-width: 1px;
+       border-style: solid;
+}
+.ui-mini {
+       margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+       padding: .4em;
+       line-height: 1.4em;
+       display: block;
+       width: 100%;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+       margin: 0;
+       min-height: 2.2em;
+       text-align: left; /* Opera aligns type="date" right by default */
+       border: 0;
+       background: transparent none;
+       -webkit-appearance: none;
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+textarea.ui-input-text {
+       overflow: auto;
+       resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+       font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+       margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+       position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+       padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+       padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+       padding-right: 0;
+       /* Autofill on Chrome has bg color so we unset corners right as well. */
+       -webkit-border-top-right-radius: 0;
+       border-top-right-radius: 0;
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+       padding-left: 1.75em;
+}
+.ui-input-search:after {
+       position: absolute;
+       left: .3125em;
+       top: 50%;
+       margin-top: -7px;
+       content: "";
+       background-position: center center;
+       background-repeat: no-repeat;
+       width: 14px;
+       height: 14px;
+       filter: Alpha(Opacity=50);
+       opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+       position: absolute;
+       right: 0;
+       top: 50%;
+       margin: -14px .3125em 0;
+       border: 0;
+       background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+       display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+       color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+       color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+       margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+       display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+       box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+       overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+       -webkit-transition: height 0.25s;
+       -o-transition: height 0.25s;
+       -moz-transition: height 0.25s;
+       transition: height 0.25s;
+}
+.ui-flipswitch {
+       display: inline-block;
+       vertical-align: middle;
+       width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+       height: 1.875em;
+       border-width: 1px;
+       border-style: solid;
+       margin: .5em 0;
+       overflow: hidden;
+       -webkit-transition-property: padding, width, background-color, color, border-color;
+       -moz-transition-property: padding, width, background-color, color, border-color;
+       -o-transition-property: padding, width, background-color, color, border-color;
+       transition-property: padding, width, background-color, color, border-color;
+       -webkit-transition-duration: 100ms;
+       -moz-transition-duration: 100ms;
+       -o-transition-duration: 100ms;
+       transition-duration: 100ms;
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+       padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+       width: 1.875em;
+}
+.ui-flipswitch-input {
+       position: absolute;
+       height: 1px;
+       width: 1px;
+       margin: -1px;
+       overflow: hidden;
+       clip: rect(1px,1px,1px,1px);
+       border: 0;
+       outline: 0;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+       float: left;
+       height: 1.75em;
+       margin: .0625em;
+       line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+       width: 1.75em;
+       padding: 0;
+       text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+       text-align: left;
+       border-width: 1px;
+       border-style: solid;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       border-radius: inherit;
+       overflow: visible;
+       color: inherit;
+       text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+       padding: 1px;
+       text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+       display: inline-block;
+       width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+       width: 1.875em;
+}
+.ui-table {
+       border: 0;
+       border-collapse: collapse;
+       padding: 0;
+       width: 100%;
+}
+.ui-table th,
+.ui-table td {
+       line-height: 1.5em;
+       text-align: left;
+       padding: .4em .5em;
+       vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+       line-height: normal;
+}
+.ui-table th {
+       font-weight: bold;
+}
+.ui-table caption {
+       text-align: left;
+       margin-bottom: 1.4em;
+       opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+       float: right;
+       margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+       margin:0;
+}
+.ui-table-columntoggle {
+       clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+       th.ui-table-priority-6,
+       td.ui-table-priority-6,
+       th.ui-table-priority-5,
+       td.ui-table-priority-5,
+       th.ui-table-priority-4,
+       td.ui-table-priority-4,
+       th.ui-table-priority-3,
+       td.ui-table-priority-3,
+       th.ui-table-priority-2,
+       td.ui-table-priority-2,
+       th.ui-table-priority-1,
+       td.ui-table-priority-1 {
+               display: none;
+       }
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+               display: table-cell;
+       }
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+               display: table-cell;
+       }
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+               display: table-cell;
+       }
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+               display: table-cell;
+       }
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+               display: table-cell;
+       }
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+               display: table-cell;
+       }
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+       display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+       display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+       display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+       /* Hide the table headers */ 
+       .ui-table-reflow thead td, 
+       .ui-table-reflow thead th {
+               display: none;
+       }
+       /* Show the table cells as a block level element */ 
+       .ui-table-reflow td,
+       .ui-table-reflow th { 
+               text-align: left;
+               display: block;
+       }
+       /* Add a fair amount of top margin to visually separate each row when stacked */  
+       .ui-table-reflow tbody th {
+               margin-top: 3em;
+       }
+       /* Make the label elements a percentage width */ 
+       .ui-table-reflow td .ui-table-cell-label,
+       .ui-table-reflow th .ui-table-cell-label { 
+               padding: .4em; 
+               min-width: 30%; 
+               display: inline-block;
+               margin: -.4em 1em -.4em -.4em;
+       }
+       /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+       .ui-table-reflow th .ui-table-cell-label-top,
+       .ui-table-reflow td .ui-table-cell-label-top {
+               display: block;
+               padding: .4em 0;
+               margin: .4em 0;
+               text-transform: uppercase;
+               font-size: .9em;
+               font-weight: normal;
+       }
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+       /* Show the table header rows */ 
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th,
+       .ui-table-reflow.ui-responsive tbody th,
+       .ui-table-reflow.ui-responsive tbody td,
+       .ui-table-reflow.ui-responsive thead td,
+       .ui-table-reflow.ui-responsive thead th {
+               display: table-cell;
+               margin: 0;
+       }
+       /* Hide the labels in each cell */ 
+       .ui-table-reflow.ui-responsive td .ui-table-cell-label,
+       .ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+               display: none;
+       }
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th {
+               width: 100%;
+               -webkit-box-sizing: border-box;
+               -moz-box-sizing: border-box;
+               box-sizing: border-box;
+               float: left;
+               clear: left;
+       }
+}
+/* Panel */
+.ui-panel {
+       width: 17em;
+       min-height: 100%;
+       max-height: none;
+       border-width: 0;
+       position: absolute;
+       top: 0;
+       display: block;
+}
+.ui-panel-closed {
+       width: 0;
+       max-height: 100%;
+       overflow: hidden;
+       visibility: hidden;
+       left: 0;
+       clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+       position: fixed;
+       bottom: -1px; /* Fixes gap on Chrome for Android */
+       padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+       z-index: 1;
+}
+.ui-panel-display-push {
+       z-index: 999;
+}
+.ui-panel-display-overlay {
+       z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+       padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+       overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+       background: none;
+}
+.ui-panel-wrapper {
+       position: relative;
+       min-height: inherit;
+       border: 0;
+       overflow-x: hidden;
+       z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+       overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       height: 100%;
+       z-index: 1002;
+       display: none;
+}
+.ui-panel-dismiss-open {
+       display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+       -webkit-transition: -webkit-transform 300ms ease;
+       -webkit-transition-duration: 300ms;
+       -moz-transition: -moz-transform 300ms ease;
+       transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+       .ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+       .ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+       .ui-panel-animate.ui-panel-fixed-toolbar {
+               -ms-transition: none;
+       }
+       /* We need a transitionend event ... */
+       .ui-panel-animate.ui-panel-fixed-toolbar {
+               -ms-transition: -ms-transform 1ms;
+               -ms-transform: rotate(0deg);
+       }
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+       left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+       left: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+       left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+       right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+       right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+       left: 17em;
+       right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+       left: -17em;
+       right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+       left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+       right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+       -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+       -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+       -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+       -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+       border-right-width: 1px;
+       margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+       margin-left: 1px;
+       width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+       border-left-width: 1px;
+       margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+       margin-right: 1px;
+       width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+       .ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+               margin-right: 17em;
+       }
+       .ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+               margin-left: 17em;
+       }
+       .ui-responsive-panel .ui-panel-page-content-open {
+               width: auto;    
+       }
+       .ui-responsive-panel .ui-panel-dismiss-display-push,
+       .ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+               display: none;
+       }
+}
+.ui-tabs {
+       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+       padding: .2em;
+}
diff --git a/wearable/tests/jquery.mobile-1.4.5.js b/wearable/tests/jquery.mobile-1.4.5.js
new file mode 100755 (executable)
index 0000000..937dfa5
--- /dev/null
@@ -0,0 +1,15454 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+(function ( root, doc, factory ) {
+       if ( typeof define === "function" && define.amd ) {
+               // AMD. Register as an anonymous module.
+               define( [ "jquery" ], function ( $ ) {
+                       factory( $, root, doc );
+                       return $.mobile;
+               });
+       } else {
+               // Browser globals
+               factory( root.jQuery, root, doc );
+       }
+}( this, document, function ( jQuery, window, document, undefined ) {
+(function( $ ) {
+       $.mobile = {};
+}( jQuery ));
+
+/*!
+ * jQuery UI Core c0ab71056b936627e8a7821f03c044aec6280a40
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/ui-core/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+       runiqueId = /^ui-id-\d+$/;
+
+// $.ui might exist from components with no dependencies, e.g., $.ui.position
+$.ui = $.ui || {};
+
+$.extend( $.ui, {
+       version: "c0ab71056b936627e8a7821f03c044aec6280a40",
+
+       keyCode: {
+               BACKSPACE: 8,
+               COMMA: 188,
+               DELETE: 46,
+               DOWN: 40,
+               END: 35,
+               ENTER: 13,
+               ESCAPE: 27,
+               HOME: 36,
+               LEFT: 37,
+               PAGE_DOWN: 34,
+               PAGE_UP: 33,
+               PERIOD: 190,
+               RIGHT: 39,
+               SPACE: 32,
+               TAB: 9,
+               UP: 38
+       }
+});
+
+// plugins
+$.fn.extend({
+       focus: (function( orig ) {
+               return function( delay, fn ) {
+                       return typeof delay === "number" ?
+                               this.each(function() {
+                                       var elem = this;
+                                       setTimeout(function() {
+                                               $( elem ).focus();
+                                               if ( fn ) {
+                                                       fn.call( elem );
+                                               }
+                                       }, delay );
+                               }) :
+                               orig.apply( this, arguments );
+               };
+       })( $.fn.focus ),
+
+       scrollParent: function() {
+               var scrollParent;
+               if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+                       scrollParent = this.parents().filter(function() {
+                               return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+                       }).eq(0);
+               } else {
+                       scrollParent = this.parents().filter(function() {
+                               return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+                       }).eq(0);
+               }
+
+               return ( /fixed/ ).test( this.css( "position") ) || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
+       },
+
+       uniqueId: function() {
+               return this.each(function() {
+                       if ( !this.id ) {
+                               this.id = "ui-id-" + (++uuid);
+                       }
+               });
+       },
+
+       removeUniqueId: function() {
+               return this.each(function() {
+                       if ( runiqueId.test( this.id ) ) {
+                               $( this ).removeAttr( "id" );
+                       }
+               });
+       }
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+       var map, mapName, img,
+               nodeName = element.nodeName.toLowerCase();
+       if ( "area" === nodeName ) {
+               map = element.parentNode;
+               mapName = map.name;
+               if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+                       return false;
+               }
+               img = $( "img[usemap=#" + mapName + "]" )[0];
+               return !!img && visible( img );
+       }
+       return ( /input|select|textarea|button|object/.test( nodeName ) ?
+               !element.disabled :
+               "a" === nodeName ?
+                       element.href || isTabIndexNotNaN :
+                       isTabIndexNotNaN) &&
+               // the element and all of its ancestors must be visible
+               visible( element );
+}
+
+function visible( element ) {
+       return $.expr.filters.visible( element ) &&
+               !$( element ).parents().addBack().filter(function() {
+                       return $.css( this, "visibility" ) === "hidden";
+               }).length;
+}
+
+$.extend( $.expr[ ":" ], {
+       data: $.expr.createPseudo ?
+               $.expr.createPseudo(function( dataName ) {
+                       return function( elem ) {
+                               return !!$.data( elem, dataName );
+                       };
+               }) :
+               // support: jQuery <1.8
+               function( elem, i, match ) {
+                       return !!$.data( elem, match[ 3 ] );
+               },
+
+       focusable: function( element ) {
+               return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+       },
+
+       tabbable: function( element ) {
+               var tabIndex = $.attr( element, "tabindex" ),
+                       isTabIndexNaN = isNaN( tabIndex );
+               return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+       }
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+       $.each( [ "Width", "Height" ], function( i, name ) {
+               var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+                       type = name.toLowerCase(),
+                       orig = {
+                               innerWidth: $.fn.innerWidth,
+                               innerHeight: $.fn.innerHeight,
+                               outerWidth: $.fn.outerWidth,
+                               outerHeight: $.fn.outerHeight
+                       };
+
+               function reduce( elem, size, border, margin ) {
+                       $.each( side, function() {
+                               size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+                               if ( border ) {
+                                       size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+                               }
+                               if ( margin ) {
+                                       size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+                               }
+                       });
+                       return size;
+               }
+
+               $.fn[ "inner" + name ] = function( size ) {
+                       if ( size === undefined ) {
+                               return orig[ "inner" + name ].call( this );
+                       }
+
+                       return this.each(function() {
+                               $( this ).css( type, reduce( this, size ) + "px" );
+                       });
+               };
+
+               $.fn[ "outer" + name] = function( size, margin ) {
+                       if ( typeof size !== "number" ) {
+                               return orig[ "outer" + name ].call( this, size );
+                       }
+
+                       return this.each(function() {
+                               $( this).css( type, reduce( this, size, true, margin ) + "px" );
+                       });
+               };
+       });
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+       $.fn.addBack = function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter( selector )
+               );
+       };
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+       $.fn.removeData = (function( removeData ) {
+               return function( key ) {
+                       if ( arguments.length ) {
+                               return removeData.call( this, $.camelCase( key ) );
+                       } else {
+                               return removeData.call( this );
+                       }
+               };
+       })( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+       disableSelection: function() {
+               return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+                       ".ui-disableSelection", function( event ) {
+                               event.preventDefault();
+                       });
+       },
+
+       enableSelection: function() {
+               return this.unbind( ".ui-disableSelection" );
+       },
+
+       zIndex: function( zIndex ) {
+               if ( zIndex !== undefined ) {
+                       return this.css( "zIndex", zIndex );
+               }
+
+               if ( this.length ) {
+                       var elem = $( this[ 0 ] ), position, value;
+                       while ( elem.length && elem[ 0 ] !== document ) {
+                               // Ignore z-index if position is set to a value where z-index is ignored by the browser
+                               // This makes behavior of this function consistent across browsers
+                               // WebKit always returns auto if the element is positioned
+                               position = elem.css( "position" );
+                               if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+                                       // IE returns 0 when zIndex is not specified
+                                       // other browsers return a string
+                                       // we ignore the case of nested elements with an explicit value of 0
+                                       // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+                                       value = parseInt( elem.css( "zIndex" ), 10 );
+                                       if ( !isNaN( value ) && value !== 0 ) {
+                                               return value;
+                                       }
+                               }
+                               elem = elem.parent();
+                       }
+               }
+
+               return 0;
+       }
+});
+
+// $.ui.plugin is deprecated. Use $.widget() extensions instead.
+$.ui.plugin = {
+       add: function( module, option, set ) {
+               var i,
+                       proto = $.ui[ module ].prototype;
+               for ( i in set ) {
+                       proto.plugins[ i ] = proto.plugins[ i ] || [];
+                       proto.plugins[ i ].push( [ option, set[ i ] ] );
+               }
+       },
+       call: function( instance, name, args, allowDisconnected ) {
+               var i,
+                       set = instance.plugins[ name ];
+
+               if ( !set ) {
+                       return;
+               }
+
+               if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
+                       return;
+               }
+
+               for ( i = 0; i < set.length; i++ ) {
+                       if ( instance.options[ set[ i ][ 0 ] ] ) {
+                               set[ i ][ 1 ].apply( instance.element, args );
+                       }
+               }
+       }
+};
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+
+       // Subtract the height of external toolbars from the page height, if the page does not have
+       // internal toolbars of the same type. We take care to use the widget options if we find a
+       // widget instance and the element's data-attributes otherwise.
+       var compensateToolbars = function( page, desiredHeight ) {
+               var pageParent = page.parent(),
+                       toolbarsAffectingHeight = [],
+
+                       // We use this function to filter fixed toolbars with option updatePagePadding set to
+                       // true (which is the default) from our height subtraction, because fixed toolbars with
+                       // option updatePagePadding set to true compensate for their presence by adding padding
+                       // to the active page. We want to avoid double-counting by also subtracting their
+                       // height from the desired page height.
+                       noPadders = function() {
+                               var theElement = $( this ),
+                                       widgetOptions = $.mobile.toolbar && theElement.data( "mobile-toolbar" ) ?
+                                               theElement.toolbar( "option" ) : {
+                                                       position: theElement.attr( "data-" + $.mobile.ns + "position" ),
+                                                       updatePagePadding: ( theElement.attr( "data-" + $.mobile.ns +
+                                                               "update-page-padding" ) !== false )
+                                               };
+
+                               return !( widgetOptions.position === "fixed" &&
+                                       widgetOptions.updatePagePadding === true );
+                       },
+                       externalHeaders = pageParent.children( ":jqmData(role='header')" ).filter( noPadders ),
+                       internalHeaders = page.children( ":jqmData(role='header')" ),
+                       externalFooters = pageParent.children( ":jqmData(role='footer')" ).filter( noPadders ),
+                       internalFooters = page.children( ":jqmData(role='footer')" );
+
+               // If we have no internal headers, but we do have external headers, then their height
+               // reduces the page height
+               if ( internalHeaders.length === 0 && externalHeaders.length > 0 ) {
+                       toolbarsAffectingHeight = toolbarsAffectingHeight.concat( externalHeaders.toArray() );
+               }
+
+               // If we have no internal footers, but we do have external footers, then their height
+               // reduces the page height
+               if ( internalFooters.length === 0 && externalFooters.length > 0 ) {
+                       toolbarsAffectingHeight = toolbarsAffectingHeight.concat( externalFooters.toArray() );
+               }
+
+               $.each( toolbarsAffectingHeight, function( index, value ) {
+                       desiredHeight -= $( value ).outerHeight();
+               });
+
+               // Height must be at least zero
+               return Math.max( 0, desiredHeight );
+       };
+
+       $.extend( $.mobile, {
+               // define the window and the document objects
+               window: $( window ),
+               document: $( document ),
+
+               // TODO: Remove and use $.ui.keyCode directly
+               keyCode: $.ui.keyCode,
+
+               // Place to store various widget extensions
+               behaviors: {},
+
+               // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value
+               silentScroll: function( ypos ) {
+                       if ( $.type( ypos ) !== "number" ) {
+                               ypos = $.mobile.defaultHomeScroll;
+                       }
+
+                       // prevent scrollstart and scrollstop events
+                       $.event.special.scrollstart.enabled = false;
+
+                       setTimeout(function() {
+                               window.scrollTo( 0, ypos );
+                               $.mobile.document.trigger( "silentscroll", { x: 0, y: ypos });
+                       }, 20 );
+
+                       setTimeout(function() {
+                               $.event.special.scrollstart.enabled = true;
+                       }, 150 );
+               },
+
+               getClosestBaseUrl: function( ele )      {
+                       // Find the closest page and extract out its url.
+                       var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ),
+                               base = $.mobile.path.documentBase.hrefNoHash;
+
+                       if ( !$.mobile.dynamicBaseEnabled || !url || !$.mobile.path.isPath( url ) ) {
+                               url = base;
+                       }
+
+                       return $.mobile.path.makeUrlAbsolute( url, base );
+               },
+               removeActiveLinkClass: function( forceRemoval ) {
+                       if ( !!$.mobile.activeClickedLink &&
+                               ( !$.mobile.activeClickedLink.closest( "." + $.mobile.activePageClass ).length ||
+                                       forceRemoval ) ) {
+
+                               $.mobile.activeClickedLink.removeClass( $.mobile.activeBtnClass );
+                       }
+                       $.mobile.activeClickedLink = null;
+               },
+
+               // DEPRECATED in 1.4
+               // Find the closest parent with a theme class on it. Note that
+               // we are not using $.fn.closest() on purpose here because this
+               // method gets called quite a bit and we need it to be as fast
+               // as possible.
+               getInheritedTheme: function( el, defaultTheme ) {
+                       var e = el[ 0 ],
+                               ltr = "",
+                               re = /ui-(bar|body|overlay)-([a-z])\b/,
+                               c, m;
+                       while ( e ) {
+                               c = e.className || "";
+                               if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) {
+                                       // We found a parent with a theme class
+                                       // on it so bail from this loop.
+                                       break;
+                               }
+
+                               e = e.parentNode;
+                       }
+                       // Return the theme letter we found, if none, return the
+                       // specified default.
+                       return ltr || defaultTheme || "a";
+               },
+
+               enhanceable: function( elements ) {
+                       return this.haveParents( elements, "enhance" );
+               },
+
+               hijackable: function( elements ) {
+                       return this.haveParents( elements, "ajax" );
+               },
+
+               haveParents: function( elements, attr ) {
+                       if ( !$.mobile.ignoreContentEnabled ) {
+                               return elements;
+                       }
+
+                       var count = elements.length,
+                               $newSet = $(),
+                               e, $element, excluded,
+                               i, c;
+
+                       for ( i = 0; i < count; i++ ) {
+                               $element = elements.eq( i );
+                               excluded = false;
+                               e = elements[ i ];
+
+                               while ( e ) {
+                                       c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : "";
+
+                                       if ( c === "false" ) {
+                                               excluded = true;
+                                               break;
+                                       }
+
+                                       e = e.parentNode;
+                               }
+
+                               if ( !excluded ) {
+                                       $newSet = $newSet.add( $element );
+                               }
+                       }
+
+                       return $newSet;
+               },
+
+               getScreenHeight: function() {
+                       // Native innerHeight returns more accurate value for this across platforms,
+                       // jQuery version is here as a normalized fallback for platforms like Symbian
+                       return window.innerHeight || $.mobile.window.height();
+               },
+
+               //simply set the active page's minimum height to screen height, depending on orientation
+               resetActivePageHeight: function( height ) {
+                       var page = $( "." + $.mobile.activePageClass ),
+                               pageHeight = page.height(),
+                               pageOuterHeight = page.outerHeight( true );
+
+                       height = compensateToolbars( page,
+                               ( typeof height === "number" ) ? height : $.mobile.getScreenHeight() );
+
+                       // Remove any previous min-height setting
+                       page.css( "min-height", "" );
+
+                       // Set the minimum height only if the height as determined by CSS is insufficient
+                       if ( page.height() < height ) {
+                               page.css( "min-height", height - ( pageOuterHeight - pageHeight ) );
+                       }
+               },
+
+               loading: function() {
+                       // If this is the first call to this function, instantiate a loader widget
+                       var loader = this.loading._widget || $( $.mobile.loader.prototype.defaultHtml ).loader(),
+
+                               // Call the appropriate method on the loader
+                               returnValue = loader.loader.apply( loader, arguments );
+
+                       // Make sure the loader is retained for future calls to this function.
+                       this.loading._widget = loader;
+
+                       return returnValue;
+               }
+       });
+
+       $.addDependents = function( elem, newDependents ) {
+               var $elem = $( elem ),
+                       dependents = $elem.jqmData( "dependents" ) || $();
+
+               $elem.jqmData( "dependents", $( dependents ).add( newDependents ) );
+       };
+
+       // plugins
+       $.fn.extend({
+               removeWithDependents: function() {
+                       $.removeWithDependents( this );
+               },
+
+               // Enhance child elements
+               enhanceWithin: function() {
+                       var index,
+                               widgetElements = {},
+                               keepNative = $.mobile.page.prototype.keepNativeSelector(),
+                               that = this;
+
+                       // Add no js class to elements
+                       if ( $.mobile.nojs ) {
+                               $.mobile.nojs( this );
+                       }
+
+                       // Bind links for ajax nav
+                       if ( $.mobile.links ) {
+                               $.mobile.links( this );
+                       }
+
+                       // Degrade inputs for styleing
+                       if ( $.mobile.degradeInputsWithin ) {
+                               $.mobile.degradeInputsWithin( this );
+                       }
+
+                       // Run buttonmarkup
+                       if ( $.fn.buttonMarkup ) {
+                               this.find( $.fn.buttonMarkup.initSelector ).not( keepNative )
+                               .jqmEnhanceable().buttonMarkup();
+                       }
+
+                       // Add classes for fieldContain
+                       if ( $.fn.fieldcontain ) {
+                               this.find( ":jqmData(role='fieldcontain')" ).not( keepNative )
+                               .jqmEnhanceable().fieldcontain();
+                       }
+
+                       // Enhance widgets
+                       $.each( $.mobile.widgets, function( name, constructor ) {
+
+                               // If initSelector not false find elements
+                               if ( constructor.initSelector ) {
+
+                                       // Filter elements that should not be enhanced based on parents
+                                       var elements = $.mobile.enhanceable( that.find( constructor.initSelector ) );
+
+                                       // If any matching elements remain filter ones with keepNativeSelector
+                                       if ( elements.length > 0 ) {
+
+                                               // $.mobile.page.prototype.keepNativeSelector is deprecated this is just for backcompat
+                                               // Switch to $.mobile.keepNative in 1.5 which is just a value not a function
+                                               elements = elements.not( keepNative );
+                                       }
+
+                                       // Enhance whatever is left
+                                       if ( elements.length > 0 ) {
+                                               widgetElements[ constructor.prototype.widgetName ] = elements;
+                                       }
+                               }
+                       });
+
+                       for ( index in widgetElements ) {
+                               widgetElements[ index ][ index ]();
+                       }
+
+                       return this;
+               },
+
+               addDependents: function( newDependents ) {
+                       $.addDependents( this, newDependents );
+               },
+
+               // note that this helper doesn't attempt to handle the callback
+               // or setting of an html element's text, its only purpose is
+               // to return the html encoded version of the text in all cases. (thus the name)
+               getEncodedText: function() {
+                       return $( "<a>" ).text( this.text() ).html();
+               },
+
+               // fluent helper function for the mobile namespaced equivalent
+               jqmEnhanceable: function() {
+                       return $.mobile.enhanceable( this );
+               },
+
+               jqmHijackable: function() {
+                       return $.mobile.hijackable( this );
+               }
+       });
+
+       $.removeWithDependents = function( nativeElement ) {
+               var element = $( nativeElement );
+
+               ( element.jqmData( "dependents" ) || $() ).remove();
+               element.remove();
+       };
+       $.addDependents = function( nativeElement, newDependents ) {
+               var element = $( nativeElement ),
+                       dependents = element.jqmData( "dependents" ) || $();
+
+               element.jqmData( "dependents", $( dependents ).add( newDependents ) );
+       };
+
+       $.find.matches = function( expr, set ) {
+               return $.find( expr, null, null, set );
+       };
+
+       $.find.matchesSelector = function( node, expr ) {
+               return $.find( expr, null, null, [ node ] ).length > 0;
+       };
+
+})( jQuery, this );
+
+(function( $, window, undefined ) {
+       $.extend( $.mobile, {
+
+               // Version of the jQuery Mobile Framework
+               version: "1.4.5",
+
+               // Deprecated and no longer used in 1.4 remove in 1.5
+               // Define the url parameter used for referencing widget-generated sub-pages.
+               // Translates to example.html&ui-page=subpageIdentifier
+               // hash segment before &ui-page= is used to make Ajax request
+               subPageUrlKey: "ui-page",
+
+               hideUrlBar: true,
+
+               // Keepnative Selector
+               keepNative: ":jqmData(role='none'), :jqmData(role='nojs')",
+
+               // Deprecated in 1.4 remove in 1.5
+               // Class assigned to page currently in view, and during transitions
+               activePageClass: "ui-page-active",
+
+               // Deprecated in 1.4 remove in 1.5
+               // Class used for "active" button state, from CSS framework
+               activeBtnClass: "ui-btn-active",
+
+               // Deprecated in 1.4 remove in 1.5
+               // Class used for "focus" form element state, from CSS framework
+               focusClass: "ui-focus",
+
+               // Automatically handle clicks and form submissions through Ajax, when same-domain
+               ajaxEnabled: true,
+
+               // Automatically load and show pages based on location.hash
+               hashListeningEnabled: true,
+
+               // disable to prevent jquery from bothering with links
+               linkBindingEnabled: true,
+
+               // Set default page transition - 'none' for no transitions
+               defaultPageTransition: "fade",
+
+               // Set maximum window width for transitions to apply - 'false' for no limit
+               maxTransitionWidth: false,
+
+               // Minimum scroll distance that will be remembered when returning to a page
+               // Deprecated remove in 1.5
+               minScrollBack: 0,
+
+               // Set default dialog transition - 'none' for no transitions
+               defaultDialogTransition: "pop",
+
+               // Error response message - appears when an Ajax page request fails
+               pageLoadErrorMessage: "Error Loading Page",
+
+               // For error messages, which theme does the box use?
+               pageLoadErrorMessageTheme: "a",
+
+               // replace calls to window.history.back with phonegaps navigation helper
+               // where it is provided on the window object
+               phonegapNavigationEnabled: false,
+
+               //automatically initialize the DOM when it's ready
+               autoInitializePage: true,
+
+               pushStateEnabled: true,
+
+               // allows users to opt in to ignoring content by marking a parent element as
+               // data-ignored
+               ignoreContentEnabled: false,
+
+               buttonMarkup: {
+                       hoverDelay: 200
+               },
+
+               // disable the alteration of the dynamic base tag or links in the case
+               // that a dynamic base tag isn't supported
+               dynamicBaseEnabled: true,
+
+               // default the property to remove dependency on assignment in init module
+               pageContainer: $(),
+
+               //enable cross-domain page support
+               allowCrossDomainPages: false,
+
+               dialogHashKey: "&ui-state=dialog"
+       });
+})( jQuery, this );
+
+/*!
+ * jQuery UI Widget c0ab71056b936627e8a7821f03c044aec6280a40
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+       slice = Array.prototype.slice,
+       _cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+       for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+               try {
+                       $( elem ).triggerHandler( "remove" );
+               // http://bugs.jquery.com/ticket/8235
+               } catch( e ) {}
+       }
+       _cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+       var fullName, existingConstructor, constructor, basePrototype,
+               // proxiedPrototype allows the provided prototype to remain unmodified
+               // so that it can be used as a mixin for multiple widgets (#8876)
+               proxiedPrototype = {},
+               namespace = name.split( "." )[ 0 ];
+
+       name = name.split( "." )[ 1 ];
+       fullName = namespace + "-" + name;
+
+       if ( !prototype ) {
+               prototype = base;
+               base = $.Widget;
+       }
+
+       // create selector for plugin
+       $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+               return !!$.data( elem, fullName );
+       };
+
+       $[ namespace ] = $[ namespace ] || {};
+       existingConstructor = $[ namespace ][ name ];
+       constructor = $[ namespace ][ name ] = function( options, element ) {
+               // allow instantiation without "new" keyword
+               if ( !this._createWidget ) {
+                       return new constructor( options, element );
+               }
+
+               // allow instantiation without initializing for simple inheritance
+               // must use "new" keyword (the code above always passes args)
+               if ( arguments.length ) {
+                       this._createWidget( options, element );
+               }
+       };
+       // extend with the existing constructor to carry over any static properties
+       $.extend( constructor, existingConstructor, {
+               version: prototype.version,
+               // copy the object used to create the prototype in case we need to
+               // redefine the widget later
+               _proto: $.extend( {}, prototype ),
+               // track widgets that inherit from this widget in case this widget is
+               // redefined after a widget inherits from it
+               _childConstructors: []
+       });
+
+       basePrototype = new base();
+       // we need to make the options hash a property directly on the new instance
+       // otherwise we'll modify the options hash on the prototype that we're
+       // inheriting from
+       basePrototype.options = $.widget.extend( {}, basePrototype.options );
+       $.each( prototype, function( prop, value ) {
+               if ( !$.isFunction( value ) ) {
+                       proxiedPrototype[ prop ] = value;
+                       return;
+               }
+               proxiedPrototype[ prop ] = (function() {
+                       var _super = function() {
+                                       return base.prototype[ prop ].apply( this, arguments );
+                               },
+                               _superApply = function( args ) {
+                                       return base.prototype[ prop ].apply( this, args );
+                               };
+                       return function() {
+                               var __super = this._super,
+                                       __superApply = this._superApply,
+                                       returnValue;
+
+                               this._super = _super;
+                               this._superApply = _superApply;
+
+                               returnValue = value.apply( this, arguments );
+
+                               this._super = __super;
+                               this._superApply = __superApply;
+
+                               return returnValue;
+                       };
+               })();
+       });
+       constructor.prototype = $.widget.extend( basePrototype, {
+               // TODO: remove support for widgetEventPrefix
+               // always use the name + a colon as the prefix, e.g., draggable:start
+               // don't prefix for widgets that aren't DOM-based
+               widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
+       }, proxiedPrototype, {
+               constructor: constructor,
+               namespace: namespace,
+               widgetName: name,
+               widgetFullName: fullName
+       });
+
+       // If this widget is being redefined then we need to find all widgets that
+       // are inheriting from it and redefine all of them so that they inherit from
+       // the new version of this widget. We're essentially trying to replace one
+       // level in the prototype chain.
+       if ( existingConstructor ) {
+               $.each( existingConstructor._childConstructors, function( i, child ) {
+                       var childPrototype = child.prototype;
+
+                       // redefine the child widget using the same prototype that was
+                       // originally used, but inherit from the new version of the base
+                       $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+               });
+               // remove the list of existing child constructors from the old constructor
+               // so the old child constructors can be garbage collected
+               delete existingConstructor._childConstructors;
+       } else {
+               base._childConstructors.push( constructor );
+       }
+
+       $.widget.bridge( name, constructor );
+
+       return constructor;
+};
+
+$.widget.extend = function( target ) {
+       var input = slice.call( arguments, 1 ),
+               inputIndex = 0,
+               inputLength = input.length,
+               key,
+               value;
+       for ( ; inputIndex < inputLength; inputIndex++ ) {
+               for ( key in input[ inputIndex ] ) {
+                       value = input[ inputIndex ][ key ];
+                       if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+                               // Clone objects
+                               if ( $.isPlainObject( value ) ) {
+                                       target[ key ] = $.isPlainObject( target[ key ] ) ?
+                                               $.widget.extend( {}, target[ key ], value ) :
+                                               // Don't extend strings, arrays, etc. with objects
+                                               $.widget.extend( {}, value );
+                               // Copy everything else by reference
+                               } else {
+                                       target[ key ] = value;
+                               }
+                       }
+               }
+       }
+       return target;
+};
+
+$.widget.bridge = function( name, object ) {
+       var fullName = object.prototype.widgetFullName || name;
+       $.fn[ name ] = function( options ) {
+               var isMethodCall = typeof options === "string",
+                       args = slice.call( arguments, 1 ),
+                       returnValue = this;
+
+               // allow multiple hashes to be passed on init
+               options = !isMethodCall && args.length ?
+                       $.widget.extend.apply( null, [ options ].concat(args) ) :
+                       options;
+
+               if ( isMethodCall ) {
+                       this.each(function() {
+                               var methodValue,
+                                       instance = $.data( this, fullName );
+                               if ( options === "instance" ) {
+                                       returnValue = instance;
+                                       return false;
+                               }
+                               if ( !instance ) {
+                                       return $.error( "cannot call methods on " + name + " prior to initialization; " +
+                                               "attempted to call method '" + options + "'" );
+                               }
+                               if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+                                       return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+                               }
+                               methodValue = instance[ options ].apply( instance, args );
+                               if ( methodValue !== instance && methodValue !== undefined ) {
+                                       returnValue = methodValue && methodValue.jquery ?
+                                               returnValue.pushStack( methodValue.get() ) :
+                                               methodValue;
+                                       return false;
+                               }
+                       });
+               } else {
+                       this.each(function() {
+                               var instance = $.data( this, fullName );
+                               if ( instance ) {
+                                       instance.option( options || {} )._init();
+                               } else {
+                                       $.data( this, fullName, new object( options, this ) );
+                               }
+                       });
+               }
+
+               return returnValue;
+       };
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+       widgetName: "widget",
+       widgetEventPrefix: "",
+       defaultElement: "<div>",
+       options: {
+               disabled: false,
+
+               // callbacks
+               create: null
+       },
+       _createWidget: function( options, element ) {
+               element = $( element || this.defaultElement || this )[ 0 ];
+               this.element = $( element );
+               this.uuid = uuid++;
+               this.eventNamespace = "." + this.widgetName + this.uuid;
+               this.options = $.widget.extend( {},
+                       this.options,
+                       this._getCreateOptions(),
+                       options );
+
+               this.bindings = $();
+               this.hoverable = $();
+               this.focusable = $();
+
+               if ( element !== this ) {
+                       $.data( element, this.widgetFullName, this );
+                       this._on( true, this.element, {
+                               remove: function( event ) {
+                                       if ( event.target === element ) {
+                                               this.destroy();
+                                       }
+                               }
+                       });
+                       this.document = $( element.style ?
+                               // element within the document
+                               element.ownerDocument :
+                               // element is window or document
+                               element.document || element );
+                       this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+               }
+
+               this._create();
+               this._trigger( "create", null, this._getCreateEventData() );
+               this._init();
+       },
+       _getCreateOptions: $.noop,
+       _getCreateEventData: $.noop,
+       _create: $.noop,
+       _init: $.noop,
+
+       destroy: function() {
+               this._destroy();
+               // we can probably remove the unbind calls in 2.0
+               // all event bindings should go through this._on()
+               this.element
+                       .unbind( this.eventNamespace )
+                       .removeData( this.widgetFullName )
+                       // support: jquery <1.6.3
+                       // http://bugs.jquery.com/ticket/9413
+                       .removeData( $.camelCase( this.widgetFullName ) );
+               this.widget()
+                       .unbind( this.eventNamespace )
+                       .removeAttr( "aria-disabled" )
+                       .removeClass(
+                               this.widgetFullName + "-disabled " +
+                               "ui-state-disabled" );
+
+               // clean up events and states
+               this.bindings.unbind( this.eventNamespace );
+               this.hoverable.removeClass( "ui-state-hover" );
+               this.focusable.removeClass( "ui-state-focus" );
+       },
+       _destroy: $.noop,
+
+       widget: function() {
+               return this.element;
+       },
+
+       option: function( key, value ) {
+               var options = key,
+                       parts,
+                       curOption,
+                       i;
+
+               if ( arguments.length === 0 ) {
+                       // don't return a reference to the internal hash
+                       return $.widget.extend( {}, this.options );
+               }
+
+               if ( typeof key === "string" ) {
+                       // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+                       options = {};
+                       parts = key.split( "." );
+                       key = parts.shift();
+                       if ( parts.length ) {
+                               curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+                               for ( i = 0; i < parts.length - 1; i++ ) {
+                                       curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+                                       curOption = curOption[ parts[ i ] ];
+                               }
+                               key = parts.pop();
+                               if ( value === undefined ) {
+                                       return curOption[ key ] === undefined ? null : curOption[ key ];
+                               }
+                               curOption[ key ] = value;
+                       } else {
+                               if ( value === undefined ) {
+                                       return this.options[ key ] === undefined ? null : this.options[ key ];
+                               }
+                               options[ key ] = value;
+                       }
+               }
+
+               this._setOptions( options );
+
+               return this;
+       },
+       _setOptions: function( options ) {
+               var key;
+
+               for ( key in options ) {
+                       this._setOption( key, options[ key ] );
+               }
+
+               return this;
+       },
+       _setOption: function( key, value ) {
+               this.options[ key ] = value;
+
+               if ( key === "disabled" ) {
+                       this.widget()
+                               .toggleClass( this.widgetFullName + "-disabled", !!value );
+                       this.hoverable.removeClass( "ui-state-hover" );
+                       this.focusable.removeClass( "ui-state-focus" );
+               }
+
+               return this;
+       },
+
+       enable: function() {
+               return this._setOptions({ disabled: false });
+       },
+       disable: function() {
+               return this._setOptions({ disabled: true });
+       },
+
+       _on: function( suppressDisabledCheck, element, handlers ) {
+               var delegateElement,
+                       instance = this;
+
+               // no suppressDisabledCheck flag, shuffle arguments
+               if ( typeof suppressDisabledCheck !== "boolean" ) {
+                       handlers = element;
+                       element = suppressDisabledCheck;
+                       suppressDisabledCheck = false;
+               }
+
+               // no element argument, shuffle and use this.element
+               if ( !handlers ) {
+                       handlers = element;
+                       element = this.element;
+                       delegateElement = this.widget();
+               } else {
+                       // accept selectors, DOM elements
+                       element = delegateElement = $( element );
+                       this.bindings = this.bindings.add( element );
+               }
+
+               $.each( handlers, function( event, handler ) {
+                       function handlerProxy() {
+                               // allow widgets to customize the disabled handling
+                               // - disabled as an array instead of boolean
+                               // - disabled class as method for disabling individual parts
+                               if ( !suppressDisabledCheck &&
+                                               ( instance.options.disabled === true ||
+                                                       $( this ).hasClass( "ui-state-disabled" ) ) ) {
+                                       return;
+                               }
+                               return ( typeof handler === "string" ? instance[ handler ] : handler )
+                                       .apply( instance, arguments );
+                       }
+
+                       // copy the guid so direct unbinding works
+                       if ( typeof handler !== "string" ) {
+                               handlerProxy.guid = handler.guid =
+                                       handler.guid || handlerProxy.guid || $.guid++;
+                       }
+
+                       var match = event.match( /^(\w+)\s*(.*)$/ ),
+                               eventName = match[1] + instance.eventNamespace,
+                               selector = match[2];
+                       if ( selector ) {
+                               delegateElement.delegate( selector, eventName, handlerProxy );
+                       } else {
+                               element.bind( eventName, handlerProxy );
+                       }
+               });
+       },
+
+       _off: function( element, eventName ) {
+               eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+               element.unbind( eventName ).undelegate( eventName );
+       },
+
+       _delay: function( handler, delay ) {
+               function handlerProxy() {
+                       return ( typeof handler === "string" ? instance[ handler ] : handler )
+                               .apply( instance, arguments );
+               }
+               var instance = this;
+               return setTimeout( handlerProxy, delay || 0 );
+       },
+
+       _hoverable: function( element ) {
+               this.hoverable = this.hoverable.add( element );
+               this._on( element, {
+                       mouseenter: function( event ) {
+                               $( event.currentTarget ).addClass( "ui-state-hover" );
+                       },
+                       mouseleave: function( event ) {
+                               $( event.currentTarget ).removeClass( "ui-state-hover" );
+                       }
+               });
+       },
+
+       _focusable: function( element ) {
+               this.focusable = this.focusable.add( element );
+               this._on( element, {
+                       focusin: function( event ) {
+                               $( event.currentTarget ).addClass( "ui-state-focus" );
+                       },
+                       focusout: function( event ) {
+                               $( event.currentTarget ).removeClass( "ui-state-focus" );
+                       }
+               });
+       },
+
+       _trigger: function( type, event, data ) {
+               var prop, orig,
+                       callback = this.options[ type ];
+
+               data = data || {};
+               event = $.Event( event );
+               event.type = ( type === this.widgetEventPrefix ?
+                       type :
+                       this.widgetEventPrefix + type ).toLowerCase();
+               // the original event may come from any element
+               // so we need to reset the target on the new event
+               event.target = this.element[ 0 ];
+
+               // copy original event properties over to the new event
+               orig = event.originalEvent;
+               if ( orig ) {
+                       for ( prop in orig ) {
+                               if ( !( prop in event ) ) {
+                                       event[ prop ] = orig[ prop ];
+                               }
+                       }
+               }
+
+               this.element.trigger( event, data );
+               return !( $.isFunction( callback ) &&
+                       callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+                       event.isDefaultPrevented() );
+       }
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+       $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+               if ( typeof options === "string" ) {
+                       options = { effect: options };
+               }
+               var hasOptions,
+                       effectName = !options ?
+                               method :
+                               options === true || typeof options === "number" ?
+                                       defaultEffect :
+                                       options.effect || defaultEffect;
+               options = options || {};
+               if ( typeof options === "number" ) {
+                       options = { duration: options };
+               }
+               hasOptions = !$.isEmptyObject( options );
+               options.complete = callback;
+               if ( options.delay ) {
+                       element.delay( options.delay );
+               }
+               if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+                       element[ method ]( options );
+               } else if ( effectName !== method && element[ effectName ] ) {
+                       element[ effectName ]( options.duration, options.easing, callback );
+               } else {
+                       element.queue(function( next ) {
+                               $( this )[ method ]();
+                               if ( callback ) {
+                                       callback.call( element[ 0 ] );
+                               }
+                               next();
+                       });
+               }
+       };
+});
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+       var nsNormalizeDict = {},
+               oldFind = $.find,
+               rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+               jqmDataRE = /:jqmData\(([^)]*)\)/g;
+
+       $.extend( $.mobile, {
+
+               // Namespace used framework-wide for data-attrs. Default is no namespace
+
+               ns: "",
+
+               // Retrieve an attribute from an element and perform some massaging of the value
+
+               getAttribute: function( element, key ) {
+                       var data;
+
+                       element = element.jquery ? element[0] : element;
+
+                       if ( element && element.getAttribute ) {
+                               data = element.getAttribute( "data-" + $.mobile.ns + key );
+                       }
+
+                       // Copied from core's src/data.js:dataAttr()
+                       // Convert from a string to a proper data type
+                       try {
+                               data = data === "true" ? true :
+                                       data === "false" ? false :
+                                       data === "null" ? null :
+                                       // Only convert to a number if it doesn't change the string
+                                       +data + "" === data ? +data :
+                                       rbrace.test( data ) ? JSON.parse( data ) :
+                                       data;
+                       } catch( err ) {}
+
+                       return data;
+               },
+
+               // Expose our cache for testing purposes.
+               nsNormalizeDict: nsNormalizeDict,
+
+               // Take a data attribute property, prepend the namespace
+               // and then camel case the attribute string. Add the result
+               // to our nsNormalizeDict so we don't have to do this again.
+               nsNormalize: function( prop ) {
+                       return nsNormalizeDict[ prop ] ||
+                               ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) );
+               },
+
+               // Find the closest javascript page element to gather settings data jsperf test
+               // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit
+               // possibly naive, but it shows that the parsing overhead for *just* the page selector vs
+               // the page and dialog selector is negligable. This could probably be speed up by
+               // doing a similar parent node traversal to the one found in the inherited theme code above
+               closestPageData: function( $target ) {
+                       return $target
+                               .closest( ":jqmData(role='page'), :jqmData(role='dialog')" )
+                               .data( "mobile-page" );
+               }
+
+       });
+
+       // Mobile version of data and removeData and hasData methods
+       // ensures all data is set and retrieved using jQuery Mobile's data namespace
+       $.fn.jqmData = function( prop, value ) {
+               var result;
+               if ( typeof prop !== "undefined" ) {
+                       if ( prop ) {
+                               prop = $.mobile.nsNormalize( prop );
+                       }
+
+                       // undefined is permitted as an explicit input for the second param
+                       // in this case it returns the value and does not set it to undefined
+                       if ( arguments.length < 2 || value === undefined ) {
+                               result = this.data( prop );
+                       } else {
+                               result = this.data( prop, value );
+                       }
+               }
+               return result;
+       };
+
+       $.jqmData = function( elem, prop, value ) {
+               var result;
+               if ( typeof prop !== "undefined" ) {
+                       result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value );
+               }
+               return result;
+       };
+
+       $.fn.jqmRemoveData = function( prop ) {
+               return this.removeData( $.mobile.nsNormalize( prop ) );
+       };
+
+       $.jqmRemoveData = function( elem, prop ) {
+               return $.removeData( elem, $.mobile.nsNormalize( prop ) );
+       };
+
+       $.find = function( selector, context, ret, extra ) {
+               if ( selector.indexOf( ":jqmData" ) > -1 ) {
+                       selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" );
+               }
+
+               return oldFind.call( this, selector, context, ret, extra );
+       };
+
+       $.extend( $.find, oldFind );
+
+})( jQuery, this );
+
+(function( $, undefined ) {
+
+var rcapitals = /[A-Z]/g,
+       replaceFunction = function( c ) {
+               return "-" + c.toLowerCase();
+       };
+
+$.extend( $.Widget.prototype, {
+       _getCreateOptions: function() {
+               var option, value,
+                       elem = this.element[ 0 ],
+                       options = {};
+
+               //
+               if ( !$.mobile.getAttribute( elem, "defaults" ) ) {
+                       for ( option in this.options ) {
+                               value = $.mobile.getAttribute( elem, option.replace( rcapitals, replaceFunction ) );
+
+                               if ( value != null ) {
+                                       options[ option ] = value;
+                               }
+                       }
+               }
+
+               return options;
+       }
+});
+
+//TODO: Remove in 1.5 for backcompat only
+$.mobile.widget = $.Widget;
+
+})( jQuery );
+
+
+(function( $ ) {
+       // TODO move loader class down into the widget settings
+       var loaderClass = "ui-loader", $html = $( "html" );
+
+       $.widget( "mobile.loader", {
+               // NOTE if the global config settings are defined they will override these
+               //      options
+               options: {
+                       // the theme for the loading message
+                       theme: "a",
+
+                       // whether the text in the loading message is shown
+                       textVisible: false,
+
+                       // custom html for the inner content of the loading message
+                       html: "",
+
+                       // the text to be displayed when the popup is shown
+                       text: "loading"
+               },
+
+               defaultHtml: "<div class='" + loaderClass + "'>" +
+                       "<span class='ui-icon-loading'></span>" +
+                       "<h1></h1>" +
+                       "</div>",
+
+               // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top
+               fakeFixLoader: function() {
+                       var activeBtn = $( "." + $.mobile.activeBtnClass ).first();
+
+                       this.element
+                               .css({
+                                       top: $.support.scrollTop && this.window.scrollTop() + this.window.height() / 2 ||
+                                               activeBtn.length && activeBtn.offset().top || 100
+                               });
+               },
+
+               // check position of loader to see if it appears to be "fixed" to center
+               // if not, use abs positioning
+               checkLoaderPosition: function() {
+                       var offset = this.element.offset(),
+                               scrollTop = this.window.scrollTop(),
+                               screenHeight = $.mobile.getScreenHeight();
+
+                       if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) {
+                               this.element.addClass( "ui-loader-fakefix" );
+                               this.fakeFixLoader();
+                               this.window
+                                       .unbind( "scroll", this.checkLoaderPosition )
+                                       .bind( "scroll", $.proxy( this.fakeFixLoader, this ) );
+                       }
+               },
+
+               resetHtml: function() {
+                       this.element.html( $( this.defaultHtml ).html() );
+               },
+
+               // Turn on/off page loading message. Theme doubles as an object argument
+               // with the following shape: { theme: '', text: '', html: '', textVisible: '' }
+               // NOTE that the $.mobile.loading* settings and params past the first are deprecated
+               // TODO sweet jesus we need to break some of this out
+               show: function( theme, msgText, textonly ) {
+                       var textVisible, message, loadSettings;
+
+                       this.resetHtml();
+
+                       // use the prototype options so that people can set them globally at
+                       // mobile init. Consistency, it's what's for dinner
+                       if ( $.type( theme ) === "object" ) {
+                               loadSettings = $.extend( {}, this.options, theme );
+
+                               theme = loadSettings.theme;
+                       } else {
+                               loadSettings = this.options;
+
+                               // here we prefer the theme value passed as a string argument, then
+                               // we prefer the global option because we can't use undefined default
+                               // prototype options, then the prototype option
+                               theme = theme || loadSettings.theme;
+                       }
+
+                       // set the message text, prefer the param, then the settings object
+                       // then loading message
+                       message = msgText || ( loadSettings.text === false ? "" : loadSettings.text );
+
+                       // prepare the dom
+                       $html.addClass( "ui-loading" );
+
+                       textVisible = loadSettings.textVisible;
+
+                       // add the proper css given the options (theme, text, etc)
+                       // Force text visibility if the second argument was supplied, or
+                       // if the text was explicitly set in the object args
+                       this.element.attr("class", loaderClass +
+                               " ui-corner-all ui-body-" + theme +
+                               " ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) +
+                               ( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) );
+
+                       // TODO verify that jquery.fn.html is ok to use in both cases here
+                       //      this might be overly defensive in preventing unknowing xss
+                       // if the html attribute is defined on the loading settings, use that
+                       // otherwise use the fallbacks from above
+                       if ( loadSettings.html ) {
+                               this.element.html( loadSettings.html );
+                       } else {
+                               this.element.find( "h1" ).text( message );
+                       }
+
+                       // If the pagecontainer widget has been defined we may use the :mobile-pagecontainer
+                       // and attach to the element on which the pagecontainer widget has been defined. If not,
+                       // we attach to the body.
+                       this.element.appendTo( $.mobile.pagecontainer ?
+                               $( ":mobile-pagecontainer" ) : $( "body" ) );
+
+                       // check that the loader is visible
+                       this.checkLoaderPosition();
+
+                       // on scroll check the loader position
+                       this.window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) );
+               },
+
+               hide: function() {
+                       $html.removeClass( "ui-loading" );
+
+                       if ( this.options.text ) {
+                               this.element.removeClass( "ui-loader-fakefix" );
+                       }
+
+                       this.window.unbind( "scroll", this.fakeFixLoader );
+                       this.window.unbind( "scroll", this.checkLoaderPosition );
+               }
+       });
+
+})(jQuery, this);
+
+
+/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+
+// Script: jQuery hashchange event
+//
+// *Version: 1.3, Last updated: 7/21/2010*
+// 
+// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
+// GitHub       - http://github.com/cowboy/jquery-hashchange/
+// Source       - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
+// (Minified)   - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
+// 
+// About: License
+// 
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+// 
+// About: Examples
+// 
+// These working examples, complete with fully commented code, illustrate a few
+// ways in which this plugin can be used.
+// 
+// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
+// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
+// 
+// About: Support and Testing
+// 
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+// 
+// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
+//                   Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
+// Unit Tests      - http://benalman.com/code/projects/jquery-hashchange/unit/
+// 
+// About: Known issues
+// 
+// While this jQuery hashchange event implementation is quite stable and
+// robust, there are a few unfortunate browser bugs surrounding expected
+// hashchange event-based behaviors, independent of any JavaScript
+// window.onhashchange abstraction. See the following examples for more
+// information:
+// 
+// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
+// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
+// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
+// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
+// 
+// Also note that should a browser natively support the window.onhashchange 
+// event, but not report that it does, the fallback polling loop will be used.
+// 
+// About: Release History
+// 
+// 1.3   - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
+//         "removable" for mobile-only development. Added IE6/7 document.title
+//         support. Attempted to make Iframe as hidden as possible by using
+//         techniques from http://www.paciellogroup.com/blog/?p=604. Added 
+//         support for the "shortcut" format $(window).hashchange( fn ) and
+//         $(window).hashchange() like jQuery provides for built-in events.
+//         Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and
+//         lowered its default value to 50. Added <jQuery.fn.hashchange.domain>
+//         and <jQuery.fn.hashchange.src> properties plus document-domain.html
+//         file to address access denied issues when setting document.domain in
+//         IE6/7.
+// 1.2   - (2/11/2010) Fixed a bug where coming back to a page using this plugin
+//         from a page on another domain would cause an error in Safari 4. Also,
+//         IE6/7 Iframe is now inserted after the body (this actually works),
+//         which prevents the page from scrolling when the event is first bound.
+//         Event can also now be bound before DOM ready, but it won't be usable
+//         before then in IE6/7.
+// 1.1   - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
+//         where browser version is incorrectly reported as 8.0, despite
+//         inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
+// 1.0   - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
+//         window.onhashchange functionality into a separate plugin for users
+//         who want just the basic event & back button support, without all the
+//         extra awesomeness that BBQ provides. This plugin will be included as
+//         part of jQuery BBQ, but also be available separately.
+
+(function($,window,undefined){
+  '$:nomunge'; // Used by YUI compressor.
+  
+  // Reused string.
+  var str_hashchange = 'hashchange',
+    
+    // Method / object references.
+    doc = document,
+    fake_onhashchange,
+    special = $.event.special,
+    
+    // Does the browser support window.onhashchange? Note that IE8 running in
+    // IE7 compatibility mode reports true for 'onhashchange' in window, even
+    // though the event isn't supported, so also test document.documentMode.
+    doc_mode = doc.documentMode,
+    supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
+  
+  // Get location.hash (or what you'd expect location.hash to be) sans any
+  // leading #. Thanks for making this necessary, Firefox!
+  function get_fragment( url ) {
+    url = url || location.href;
+    return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
+  };
+  
+  // Method: jQuery.fn.hashchange
+  // 
+  // Bind a handler to the window.onhashchange event or trigger all bound
+  // window.onhashchange event handlers. This behavior is consistent with
+  // jQuery's built-in event handlers.
+  // 
+  // Usage:
+  // 
+  // > jQuery(window).hashchange( [ handler ] );
+  // 
+  // Arguments:
+  // 
+  //  handler - (Function) Optional handler to be bound to the hashchange
+  //    event. This is a "shortcut" for the more verbose form:
+  //    jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
+  //    all bound window.onhashchange event handlers will be triggered. This
+  //    is a shortcut for the more verbose
+  //    jQuery(window).trigger( 'hashchange' ). These forms are described in
+  //    the <hashchange event> section.
+  // 
+  // Returns:
+  // 
+  //  (jQuery) The initial jQuery collection of elements.
+  
+  // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
+  // $(elem).hashchange() for triggering, like jQuery does for built-in events.
+  $.fn[ str_hashchange ] = function( fn ) {
+    return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
+  };
+  
+  // Property: jQuery.fn.hashchange.delay
+  // 
+  // The numeric interval (in milliseconds) at which the <hashchange event>
+  // polling loop executes. Defaults to 50.
+  
+  // Property: jQuery.fn.hashchange.domain
+  // 
+  // If you're setting document.domain in your JavaScript, and you want hash
+  // history to work in IE6/7, not only must this property be set, but you must
+  // also set document.domain BEFORE jQuery is loaded into the page. This
+  // property is only applicable if you are supporting IE6/7 (or IE8 operating
+  // in "IE7 compatibility" mode).
+  // 
+  // In addition, the <jQuery.fn.hashchange.src> property must be set to the
+  // path of the included "document-domain.html" file, which can be renamed or
+  // modified if necessary (note that the document.domain specified must be the
+  // same in both your main JavaScript as well as in this file).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.domain = document.domain;
+  
+  // Property: jQuery.fn.hashchange.src
+  // 
+  // If, for some reason, you need to specify an Iframe src file (for example,
+  // when setting document.domain as in <jQuery.fn.hashchange.domain>), you can
+  // do so using this property. Note that when using this property, history
+  // won't be recorded in IE6/7 until the Iframe src file loads. This property
+  // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
+  // compatibility" mode).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.src = 'path/to/file.html';
+  
+  $.fn[ str_hashchange ].delay = 50;
+  /*
+  $.fn[ str_hashchange ].domain = null;
+  $.fn[ str_hashchange ].src = null;
+  */
+  
+  // Event: hashchange event
+  // 
+  // Fired when location.hash changes. In browsers that support it, the native
+  // HTML5 window.onhashchange event is used, otherwise a polling loop is
+  // initialized, running every <jQuery.fn.hashchange.delay> milliseconds to
+  // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
+  // compatibility" mode), a hidden Iframe is created to allow the back button
+  // and hash-based history to work.
+  // 
+  // Usage as described in <jQuery.fn.hashchange>:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).hashchange( function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).hashchange();
+  // 
+  // A more verbose usage that allows for event namespacing:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).bind( 'hashchange', function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).trigger( 'hashchange' );
+  // 
+  // Additional Notes:
+  // 
+  // * The polling loop and Iframe are not created until at least one handler
+  //   is actually bound to the 'hashchange' event.
+  // * If you need the bound handler(s) to execute immediately, in cases where
+  //   a location.hash exists on page load, via bookmark or page refresh for
+  //   example, use jQuery(window).hashchange() or the more verbose 
+  //   jQuery(window).trigger( 'hashchange' ).
+  // * The event can be bound before DOM ready, but since it won't be usable
+  //   before then in IE6/7 (due to the necessary Iframe), recommended usage is
+  //   to bind it inside a DOM ready handler.
+  
+  // Override existing $.event.special.hashchange methods (allowing this plugin
+  // to be defined after jQuery BBQ in BBQ's source code).
+  special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
+    
+    // Called only when the first 'hashchange' event is bound to window.
+    setup: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to create our own. And we don't want to call this
+      // until the user binds to the event, just in case they never do, since it
+      // will create a polling loop and possibly even a hidden Iframe.
+      $( fake_onhashchange.start );
+    },
+    
+    // Called only when the last 'hashchange' event is unbound from window.
+    teardown: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to stop ours (if possible).
+      $( fake_onhashchange.stop );
+    }
+    
+  });
+  
+  // fake_onhashchange does all the work of triggering the window.onhashchange
+  // event for browsers that don't natively support it, including creating a
+  // polling loop to watch for hash changes and in IE 6/7 creating a hidden
+  // Iframe to enable back and forward.
+  fake_onhashchange = (function(){
+    var self = {},
+      timeout_id,
+      
+      // Remember the initial hash so it doesn't get triggered immediately.
+      last_hash = get_fragment(),
+      
+      fn_retval = function(val){ return val; },
+      history_set = fn_retval,
+      history_get = fn_retval;
+    
+    // Start the polling loop.
+    self.start = function() {
+      timeout_id || poll();
+    };
+    
+    // Stop the polling loop.
+    self.stop = function() {
+      timeout_id && clearTimeout( timeout_id );
+      timeout_id = undefined;
+    };
+    
+    // This polling loop checks every $.fn.hashchange.delay milliseconds to see
+    // if location.hash has changed, and triggers the 'hashchange' event on
+    // window when necessary.
+    function poll() {
+      var hash = get_fragment(),
+        history_hash = history_get( last_hash );
+      
+      if ( hash !== last_hash ) {
+        history_set( last_hash = hash, history_hash );
+        
+        $(window).trigger( str_hashchange );
+        
+      } else if ( history_hash !== last_hash ) {
+        location.href = location.href.replace( /#.*/, '' ) + history_hash;
+      }
+      
+      timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
+    };
+    
+    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+    // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv
+    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+    window.attachEvent && !window.addEventListener && !supports_onhashchange && (function(){
+      // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8
+      // when running in "IE7 compatibility" mode.
+      
+      var iframe,
+        iframe_src;
+      
+      // When the event is bound and polling starts in IE 6/7, create a hidden
+      // Iframe for history handling.
+      self.start = function(){
+        if ( !iframe ) {
+          iframe_src = $.fn[ str_hashchange ].src;
+          iframe_src = iframe_src && iframe_src + get_fragment();
+          
+          // Create hidden Iframe. Attempt to make Iframe as hidden as possible
+          // by using techniques from http://www.paciellogroup.com/blog/?p=604.
+          iframe = $('<iframe tabindex="-1" title="empty"/>').hide()
+            
+            // When Iframe has completely loaded, initialize the history and
+            // start polling.
+            .one( 'load', function(){
+              iframe_src || history_set( get_fragment() );
+              poll();
+            })
+            
+            // Load Iframe src if specified, otherwise nothing.
+            .attr( 'src', iframe_src || 'javascript:0' )
+            
+            // Append Iframe after the end of the body to prevent unnecessary
+            // initial page scrolling (yes, this works).
+            .insertAfter( 'body' )[0].contentWindow;
+          
+          // Whenever `document.title` changes, update the Iframe's title to
+          // prettify the back/next history menu entries. Since IE sometimes
+          // errors with "Unspecified error" the very first time this is set
+          // (yes, very useful) wrap this with a try/catch block.
+          doc.onpropertychange = function(){
+            try {
+              if ( event.propertyName === 'title' ) {
+                iframe.document.title = doc.title;
+              }
+            } catch(e) {}
+          };
+          
+        }
+      };
+      
+      // Override the "stop" method since an IE6/7 Iframe was created. Even
+      // if there are no longer any bound event handlers, the polling loop
+      // is still necessary for back/next to work at all!
+      self.stop = fn_retval;
+      
+      // Get history by looking at the hidden Iframe's location.hash.
+      history_get = function() {
+        return get_fragment( iframe.location.href );
+      };
+      
+      // Set a new history item by opening and then closing the Iframe
+      // document, *then* setting its location.hash. If document.domain has
+      // been set, update that as well.
+      history_set = function( hash, history_hash ) {
+        var iframe_doc = iframe.document,
+          domain = $.fn[ str_hashchange ].domain;
+        
+        if ( hash !== history_hash ) {
+          // Update Iframe with any initial `document.title` that might be set.
+          iframe_doc.title = doc.title;
+          
+          // Opening the Iframe's document after it has been closed is what
+          // actually adds a history entry.
+          iframe_doc.open();
+          
+          // Set document.domain for the Iframe document as well, if necessary.
+          domain && iframe_doc.write( '\x3cscript>document.domain="' + domain + '"\x3c/script>' );
+          
+          iframe_doc.close();
+          
+          // Update the Iframe's hash, for great justice.
+          iframe.location.hash = hash;
+        }
+      };
+      
+    })();
+    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^
+    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    
+    return self;
+  })();
+  
+})(jQuery,this);
+
+
+(function( $, undefined ) {
+
+       /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+       window.matchMedia = window.matchMedia || (function( doc, undefined ) {
+
+               var bool,
+                       docElem = doc.documentElement,
+                       refNode = docElem.firstElementChild || docElem.firstChild,
+                       // fakeBody required for <FF4 when executed in <head>
+                       fakeBody = doc.createElement( "body" ),
+                       div = doc.createElement( "div" );
+
+               div.id = "mq-test-1";
+               div.style.cssText = "position:absolute;top:-100em";
+               fakeBody.style.background = "none";
+               fakeBody.appendChild(div);
+
+               return function(q){
+
+                       div.innerHTML = "&shy;<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>";
+
+                       docElem.insertBefore( fakeBody, refNode );
+                       bool = div.offsetWidth === 42;
+                       docElem.removeChild( fakeBody );
+
+                       return {
+                               matches: bool,
+                               media: q
+                       };
+
+               };
+
+       }( document ));
+
+       // $.mobile.media uses matchMedia to return a boolean.
+       $.mobile.media = function( q ) {
+               return window.matchMedia( q ).matches;
+       };
+
+})(jQuery);
+
+       (function( $, undefined ) {
+               var support = {
+                       touch: "ontouchend" in document
+               };
+
+               $.mobile.support = $.mobile.support || {};
+               $.extend( $.support, support );
+               $.extend( $.mobile.support, support );
+       }( jQuery ));
+
+       (function( $, undefined ) {
+               $.extend( $.support, {
+                       orientation: "orientation" in window && "onorientationchange" in window
+               });
+       }( jQuery ));
+
+(function( $, undefined ) {
+
+// thx Modernizr
+function propExists( prop ) {
+       var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ),
+               props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ),
+               v;
+
+       for ( v in props ) {
+               if ( fbCSS[ props[ v ] ] !== undefined ) {
+                       return true;
+               }
+       }
+}
+
+var fakeBody = $( "<body>" ).prependTo( "html" ),
+       fbCSS = fakeBody[ 0 ].style,
+       vendors = [ "Webkit", "Moz", "O" ],
+       webos = "palmGetResource" in window, //only used to rule out scrollTop
+       operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]",
+       bb = window.blackberry && !propExists( "-webkit-transform" ), //only used to rule out box shadow, as it's filled opaque on BB 5 and lower
+       nokiaLTE7_3;
+
+// inline SVG support test
+function inlineSVG() {
+       // Thanks Modernizr & Erik Dahlstrom
+       var w = window,
+               svg = !!w.document.createElementNS && !!w.document.createElementNS( "http://www.w3.org/2000/svg", "svg" ).createSVGRect && !( w.opera && navigator.userAgent.indexOf( "Chrome" ) === -1 ),
+               support = function( data ) {
+                       if ( !( data && svg ) ) {
+                               $( "html" ).addClass( "ui-nosvg" );
+                       }
+               },
+               img = new w.Image();
+
+       img.onerror = function() {
+               support( false );
+       };
+       img.onload = function() {
+               support( img.width === 1 && img.height === 1 );
+       };
+       img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+}
+
+function transform3dTest() {
+       var mqProp = "transform-3d",
+               // Because the `translate3d` test below throws false positives in Android:
+               ret = $.mobile.media( "(-" + vendors.join( "-" + mqProp + "),(-" ) + "-" + mqProp + "),(" + mqProp + ")" ),
+               el, transforms, t;
+
+       if ( ret ) {
+               return !!ret;
+       }
+
+       el = document.createElement( "div" );
+       transforms = {
+               // We’re omitting Opera for the time being; MS uses unprefixed.
+               "MozTransform": "-moz-transform",
+               "transform": "transform"
+       };
+
+       fakeBody.append( el );
+
+       for ( t in transforms ) {
+               if ( el.style[ t ] !== undefined ) {
+                       el.style[ t ] = "translate3d( 100px, 1px, 1px )";
+                       ret = window.getComputedStyle( el ).getPropertyValue( transforms[ t ] );
+               }
+       }
+       return ( !!ret && ret !== "none" );
+}
+
+// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting )
+function baseTagTest() {
+       var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/",
+               base = $( "head base" ),
+               fauxEle = null,
+               href = "",
+               link, rebase;
+
+       if ( !base.length ) {
+               base = fauxEle = $( "<base>", { "href": fauxBase }).appendTo( "head" );
+       } else {
+               href = base.attr( "href" );
+       }
+
+       link = $( "<a href='testurl' />" ).prependTo( fakeBody );
+       rebase = link[ 0 ].href;
+       base[ 0 ].href = href || location.pathname;
+
+       if ( fauxEle ) {
+               fauxEle.remove();
+       }
+       return rebase.indexOf( fauxBase ) === 0;
+}
+
+// Thanks Modernizr
+function cssPointerEventsTest() {
+       var element = document.createElement( "x" ),
+               documentElement = document.documentElement,
+               getComputedStyle = window.getComputedStyle,
+               supports;
+
+       if ( !( "pointerEvents" in element.style ) ) {
+               return false;
+       }
+
+       element.style.pointerEvents = "auto";
+       element.style.pointerEvents = "x";
+       documentElement.appendChild( element );
+       supports = getComputedStyle &&
+       getComputedStyle( element, "" ).pointerEvents === "auto";
+       documentElement.removeChild( element );
+       return !!supports;
+}
+
+function boundingRect() {
+       var div = document.createElement( "div" );
+       return typeof div.getBoundingClientRect !== "undefined";
+}
+
+// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683
+// allows for inclusion of IE 6+, including Windows Mobile 7
+$.extend( $.mobile, { browser: {} } );
+$.mobile.browser.oldIE = (function() {
+       var v = 3,
+               div = document.createElement( "div" ),
+               a = div.all || [];
+
+       do {
+               div.innerHTML = "<!--[if gt IE " + ( ++v ) + "]><br><![endif]-->";
+       } while( a[0] );
+
+       return v > 4 ? v : !v;
+})();
+
+function fixedPosition() {
+       var w = window,
+               ua = navigator.userAgent,
+               platform = navigator.platform,
+               // Rendering engine is Webkit, and capture major version
+               wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
+               wkversion = !!wkmatch && wkmatch[ 1 ],
+               ffmatch = ua.match( /Fennec\/([0-9]+)/ ),
+               ffversion = !!ffmatch && ffmatch[ 1 ],
+               operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ),
+               omversion = !!operammobilematch && operammobilematch[ 1 ];
+
+       if (
+               // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
+               ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) ||
+               // Opera Mini
+               ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) ||
+               ( operammobilematch && omversion < 7458 )       ||
+               //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
+               ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) ||
+               // Firefox Mobile before 6.0 -
+               ( ffversion && ffversion < 6 ) ||
+               // WebOS less than 3
+               ( "palmGetResource" in window && wkversion && wkversion < 534 ) ||
+               // MeeGo
+               ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) ) {
+               return false;
+       }
+
+       return true;
+}
+
+$.extend( $.support, {
+       // Note, Chrome for iOS has an extremely quirky implementation of popstate.
+       // We've chosen to take the shortest path to a bug fix here for issue #5426
+       // See the following link for information about the regex chosen
+       // https://developers.google.com/chrome/mobile/docs/user-agent#chrome_for_ios_user-agent
+       pushState: "pushState" in history &&
+               "replaceState" in history &&
+               // When running inside a FF iframe, calling replaceState causes an error
+               !( window.navigator.userAgent.indexOf( "Firefox" ) >= 0 && window.top !== window ) &&
+               ( window.navigator.userAgent.search(/CriOS/) === -1 ),
+
+       mediaquery: $.mobile.media( "only all" ),
+       cssPseudoElement: !!propExists( "content" ),
+       touchOverflow: !!propExists( "overflowScrolling" ),
+       cssTransform3d: transform3dTest(),
+       boxShadow: !!propExists( "boxShadow" ) && !bb,
+       fixedPosition: fixedPosition(),
+       scrollTop: ("pageXOffset" in window ||
+               "scrollTop" in document.documentElement ||
+               "scrollTop" in fakeBody[ 0 ]) && !webos && !operamini,
+
+       dynamicBaseTag: baseTagTest(),
+       cssPointerEvents: cssPointerEventsTest(),
+       boundingRect: boundingRect(),
+       inlineSVG: inlineSVG
+});
+
+fakeBody.remove();
+
+// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian)
+// or that generally work better browsing in regular http for full page refreshes (Opera Mini)
+// Note: This detection below is used as a last resort.
+// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible
+nokiaLTE7_3 = (function() {
+
+       var ua = window.navigator.userAgent;
+
+       //The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older
+       return ua.indexOf( "Nokia" ) > -1 &&
+                       ( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) &&
+                       ua.indexOf( "AppleWebKit" ) > -1 &&
+                       ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ );
+})();
+
+// Support conditions that must be met in order to proceed
+// default enhanced qualifications are media query support OR IE 7+
+
+$.mobile.gradeA = function() {
+       return ( ( $.support.mediaquery && $.support.cssPseudoElement ) || $.mobile.browser.oldIE && $.mobile.browser.oldIE >= 8 ) && ( $.support.boundingRect || $.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/) !== null );
+};
+
+$.mobile.ajaxBlacklist =
+                       // BlackBerry browsers, pre-webkit
+                       window.blackberry && !window.WebKitPoint ||
+                       // Opera Mini
+                       operamini ||
+                       // Symbian webkits pre 7.3
+                       nokiaLTE7_3;
+
+// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices
+// to render the stylesheets when they're referenced before this script, as we'd recommend doing.
+// This simply reappends the CSS in place, which for some reason makes it apply
+if ( nokiaLTE7_3 ) {
+       $(function() {
+               $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" );
+       });
+}
+
+// For ruling out shadows via css
+if ( !$.support.boxShadow ) {
+       $( "html" ).addClass( "ui-noboxshadow" );
+}
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+       var $win = $.mobile.window, self,
+               dummyFnToInitNavigate = function() {
+               };
+
+       $.event.special.beforenavigate = {
+               setup: function() {
+                       $win.on( "navigate", dummyFnToInitNavigate );
+               },
+
+               teardown: function() {
+                       $win.off( "navigate", dummyFnToInitNavigate );
+               }
+       };
+
+       $.event.special.navigate = self = {
+               bound: false,
+
+               pushStateEnabled: true,
+
+               originalEventName: undefined,
+
+               // If pushstate support is present and push state support is defined to
+               // be true on the mobile namespace.
+               isPushStateEnabled: function() {
+                       return $.support.pushState &&
+                               $.mobile.pushStateEnabled === true &&
+                               this.isHashChangeEnabled();
+               },
+
+               // !! assumes mobile namespace is present
+               isHashChangeEnabled: function() {
+                       return $.mobile.hashListeningEnabled === true;
+               },
+
+               // TODO a lot of duplication between popstate and hashchange
+               popstate: function( event ) {
+                       var newEvent = new $.Event( "navigate" ),
+                               beforeNavigate = new $.Event( "beforenavigate" ),
+                               state = event.originalEvent.state || {};
+
+                       beforeNavigate.originalEvent = event;
+                       $win.trigger( beforeNavigate );
+
+                       if ( beforeNavigate.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       if ( event.historyState ) {
+                               $.extend(state, event.historyState);
+                       }
+
+                       // Make sure the original event is tracked for the end
+                       // user to inspect incase they want to do something special
+                       newEvent.originalEvent = event;
+
+                       // NOTE we let the current stack unwind because any assignment to
+                       //      location.hash will stop the world and run this event handler. By
+                       //      doing this we create a similar behavior to hashchange on hash
+                       //      assignment
+                       setTimeout(function() {
+                               $win.trigger( newEvent, {
+                                       state: state
+                               });
+                       }, 0);
+               },
+
+               hashchange: function( event /*, data */ ) {
+                       var newEvent = new $.Event( "navigate" ),
+                               beforeNavigate = new $.Event( "beforenavigate" );
+
+                       beforeNavigate.originalEvent = event;
+                       $win.trigger( beforeNavigate );
+
+                       if ( beforeNavigate.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       // Make sure the original event is tracked for the end
+                       // user to inspect incase they want to do something special
+                       newEvent.originalEvent = event;
+
+                       // Trigger the hashchange with state provided by the user
+                       // that altered the hash
+                       $win.trigger( newEvent, {
+                               // Users that want to fully normalize the two events
+                               // will need to do history management down the stack and
+                               // add the state to the event before this binding is fired
+                               // TODO consider allowing for the explicit addition of callbacks
+                               //      to be fired before this value is set to avoid event timing issues
+                               state: event.hashchangeState || {}
+                       });
+               },
+
+               // TODO We really only want to set this up once
+               //      but I'm not clear if there's a beter way to achieve
+               //      this with the jQuery special event structure
+               setup: function( /* data, namespaces */ ) {
+                       if ( self.bound ) {
+                               return;
+                       }
+
+                       self.bound = true;
+
+                       if ( self.isPushStateEnabled() ) {
+                               self.originalEventName = "popstate";
+                               $win.bind( "popstate.navigate", self.popstate );
+                       } else if ( self.isHashChangeEnabled() ) {
+                               self.originalEventName = "hashchange";
+                               $win.bind( "hashchange.navigate", self.hashchange );
+                       }
+               }
+       };
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+               var path, $base, dialogHashKey = "&ui-state=dialog";
+
+               $.mobile.path = path = {
+                       uiStateKey: "&ui-state",
+
+                       // This scary looking regular expression parses an absolute URL or its relative
+                       // variants (protocol, site, document, query, and hash), into the various
+                       // components (protocol, host, path, query, fragment, etc that make up the
+                       // URL as well as some other commonly used sub-parts. When used with RegExp.exec()
+                       // or String.match, it parses the URL into a results array that looks like this:
+                       //
+                       //     [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content
+                       //     [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread
+                       //     [2]: http://jblas:password@mycompany.com:8080/mail/inbox
+                       //     [3]: http://jblas:password@mycompany.com:8080
+                       //     [4]: http:
+                       //     [5]: //
+                       //     [6]: jblas:password@mycompany.com:8080
+                       //     [7]: jblas:password
+                       //     [8]: jblas
+                       //     [9]: password
+                       //    [10]: mycompany.com:8080
+                       //    [11]: mycompany.com
+                       //    [12]: 8080
+                       //    [13]: /mail/inbox
+                       //    [14]: /mail/
+                       //    [15]: inbox
+                       //    [16]: ?msg=1234&type=unread
+                       //    [17]: #msg-content
+                       //
+                       urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
+
+                       // Abstraction to address xss (Issue #4787) by removing the authority in
+                       // browsers that auto-decode it. All references to location.href should be
+                       // replaced with a call to this method so that it can be dealt with properly here
+                       getLocation: function( url ) {
+                               var parsedUrl = this.parseUrl( url || location.href ),
+                                       uri = url ? parsedUrl : location,
+
+                                       // Make sure to parse the url or the location object for the hash because using
+                                       // location.hash is autodecoded in firefox, the rest of the url should be from
+                                       // the object (location unless we're testing) to avoid the inclusion of the
+                                       // authority
+                                       hash = parsedUrl.hash;
+
+                               // mimic the browser with an empty string when the hash is empty
+                               hash = hash === "#" ? "" : hash;
+
+                               return uri.protocol +
+                                       parsedUrl.doubleSlash +
+                                       uri.host +
+
+                                       // The pathname must start with a slash if there's a protocol, because you
+                                       // can't have a protocol followed by a relative path. Also, it's impossible to
+                                       // calculate absolute URLs from relative ones if the absolute one doesn't have
+                                       // a leading "/".
+                                       ( ( uri.protocol !== "" && uri.pathname.substring( 0, 1 ) !== "/" ) ?
+                                               "/" : "" ) +
+                                       uri.pathname +
+                                       uri.search +
+                                       hash;
+                       },
+
+                       //return the original document url
+                       getDocumentUrl: function( asParsedObject ) {
+                               return asParsedObject ? $.extend( {}, path.documentUrl ) : path.documentUrl.href;
+                       },
+
+                       parseLocation: function() {
+                               return this.parseUrl( this.getLocation() );
+                       },
+
+                       //Parse a URL into a structure that allows easy access to
+                       //all of the URL components by name.
+                       parseUrl: function( url ) {
+                               // If we're passed an object, we'll assume that it is
+                               // a parsed url object and just return it back to the caller.
+                               if ( $.type( url ) === "object" ) {
+                                       return url;
+                               }
+
+                               var matches = path.urlParseRE.exec( url || "" ) || [];
+
+                                       // Create an object that allows the caller to access the sub-matches
+                                       // by name. Note that IE returns an empty string instead of undefined,
+                                       // like all other browsers do, so we normalize everything so its consistent
+                                       // no matter what browser we're running on.
+                                       return {
+                                               href:         matches[  0 ] || "",
+                                               hrefNoHash:   matches[  1 ] || "",
+                                               hrefNoSearch: matches[  2 ] || "",
+                                               domain:       matches[  3 ] || "",
+                                               protocol:     matches[  4 ] || "",
+                                               doubleSlash:  matches[  5 ] || "",
+                                               authority:    matches[  6 ] || "",
+                                               username:     matches[  8 ] || "",
+                                               password:     matches[  9 ] || "",
+                                               host:         matches[ 10 ] || "",
+                                               hostname:     matches[ 11 ] || "",
+                                               port:         matches[ 12 ] || "",
+                                               pathname:     matches[ 13 ] || "",
+                                               directory:    matches[ 14 ] || "",
+                                               filename:     matches[ 15 ] || "",
+                                               search:       matches[ 16 ] || "",
+                                               hash:         matches[ 17 ] || ""
+                                       };
+                       },
+
+                       //Turn relPath into an asbolute path. absPath is
+                       //an optional absolute path which describes what
+                       //relPath is relative to.
+                       makePathAbsolute: function( relPath, absPath ) {
+                               var absStack,
+                                       relStack,
+                                       i, d;
+
+                               if ( relPath && relPath.charAt( 0 ) === "/" ) {
+                                       return relPath;
+                               }
+
+                               relPath = relPath || "";
+                               absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : "";
+
+                               absStack = absPath ? absPath.split( "/" ) : [];
+                               relStack = relPath.split( "/" );
+
+                               for ( i = 0; i < relStack.length; i++ ) {
+                                       d = relStack[ i ];
+                                       switch ( d ) {
+                                               case ".":
+                                                       break;
+                                               case "..":
+                                                       if ( absStack.length ) {
+                                                               absStack.pop();
+                                                       }
+                                                       break;
+                                               default:
+                                                       absStack.push( d );
+                                                       break;
+                                       }
+                               }
+                               return "/" + absStack.join( "/" );
+                       },
+
+                       //Returns true if both urls have the same domain.
+                       isSameDomain: function( absUrl1, absUrl2 ) {
+                               return path.parseUrl( absUrl1 ).domain.toLowerCase() ===
+                                       path.parseUrl( absUrl2 ).domain.toLowerCase();
+                       },
+
+                       //Returns true for any relative variant.
+                       isRelativeUrl: function( url ) {
+                               // All relative Url variants have one thing in common, no protocol.
+                               return path.parseUrl( url ).protocol === "";
+                       },
+
+                       //Returns true for an absolute url.
+                       isAbsoluteUrl: function( url ) {
+                               return path.parseUrl( url ).protocol !== "";
+                       },
+
+                       //Turn the specified realtive URL into an absolute one. This function
+                       //can handle all relative variants (protocol, site, document, query, fragment).
+                       makeUrlAbsolute: function( relUrl, absUrl ) {
+                               if ( !path.isRelativeUrl( relUrl ) ) {
+                                       return relUrl;
+                               }
+
+                               if ( absUrl === undefined ) {
+                                       absUrl = this.documentBase;
+                               }
+
+                               var relObj = path.parseUrl( relUrl ),
+                                       absObj = path.parseUrl( absUrl ),
+                                       protocol = relObj.protocol || absObj.protocol,
+                                       doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ),
+                                       authority = relObj.authority || absObj.authority,
+                                       hasPath = relObj.pathname !== "",
+                                       pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ),
+                                       search = relObj.search || ( !hasPath && absObj.search ) || "",
+                                       hash = relObj.hash;
+
+                               return protocol + doubleSlash + authority + pathname + search + hash;
+                       },
+
+                       //Add search (aka query) params to the specified url.
+                       addSearchParams: function( url, params ) {
+                               var u = path.parseUrl( url ),
+                                       p = ( typeof params === "object" ) ? $.param( params ) : params,
+                                       s = u.search || "?";
+                               return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" );
+                       },
+
+                       convertUrlToDataUrl: function( absUrl ) {
+                               var result = absUrl,
+                                       u = path.parseUrl( absUrl );
+
+                               if ( path.isEmbeddedPage( u ) ) {
+                                       // For embedded pages, remove the dialog hash key as in getFilePath(),
+                                       // and remove otherwise the Data Url won't match the id of the embedded Page.
+                                       result = u.hash
+                                               .split( dialogHashKey )[0]
+                                               .replace( /^#/, "" )
+                                               .replace( /\?.*$/, "" );
+                               } else if ( path.isSameDomain( u, this.documentBase ) ) {
+                                       result = u.hrefNoHash.replace( this.documentBase.domain, "" ).split( dialogHashKey )[0];
+                               }
+
+                               return window.decodeURIComponent( result );
+                       },
+
+                       //get path from current hash, or from a file path
+                       get: function( newPath ) {
+                               if ( newPath === undefined ) {
+                                       newPath = path.parseLocation().hash;
+                               }
+                               return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, "" );
+                       },
+
+                       //set location hash to path
+                       set: function( path ) {
+                               location.hash = path;
+                       },
+
+                       //test if a given url (string) is a path
+                       //NOTE might be exceptionally naive
+                       isPath: function( url ) {
+                               return ( /\// ).test( url );
+                       },
+
+                       //return a url path with the window's location protocol/hostname/pathname removed
+                       clean: function( url ) {
+                               return url.replace( this.documentBase.domain, "" );
+                       },
+
+                       //just return the url without an initial #
+                       stripHash: function( url ) {
+                               return url.replace( /^#/, "" );
+                       },
+
+                       stripQueryParams: function( url ) {
+                               return url.replace( /\?.*$/, "" );
+                       },
+
+                       //remove the preceding hash, any query params, and dialog notations
+                       cleanHash: function( hash ) {
+                               return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) );
+                       },
+
+                       isHashValid: function( hash ) {
+                               return ( /^#[^#]+$/ ).test( hash );
+                       },
+
+                       //check whether a url is referencing the same domain, or an external domain or different protocol
+                       //could be mailto, etc
+                       isExternal: function( url ) {
+                               var u = path.parseUrl( url );
+
+                               return !!( u.protocol &&
+                                       ( u.domain.toLowerCase() !== this.documentUrl.domain.toLowerCase() ) );
+                       },
+
+                       hasProtocol: function( url ) {
+                               return ( /^(:?\w+:)/ ).test( url );
+                       },
+
+                       isEmbeddedPage: function( url ) {
+                               var u = path.parseUrl( url );
+
+                               //if the path is absolute, then we need to compare the url against
+                               //both the this.documentUrl and the documentBase. The main reason for this
+                               //is that links embedded within external documents will refer to the
+                               //application document, whereas links embedded within the application
+                               //document will be resolved against the document base.
+                               if ( u.protocol !== "" ) {
+                                       return ( !this.isPath(u.hash) && u.hash && ( u.hrefNoHash === this.documentUrl.hrefNoHash || ( this.documentBaseDiffers && u.hrefNoHash === this.documentBase.hrefNoHash ) ) );
+                               }
+                               return ( /^#/ ).test( u.href );
+                       },
+
+                       squash: function( url, resolutionUrl ) {
+                               var href, cleanedUrl, search, stateIndex, docUrl,
+                                       isPath = this.isPath( url ),
+                                       uri = this.parseUrl( url ),
+                                       preservedHash = uri.hash,
+                                       uiState = "";
+
+                               // produce a url against which we can resolve the provided path
+                               if ( !resolutionUrl ) {
+                                       if ( isPath ) {
+                                               resolutionUrl = path.getLocation();
+                                       } else {
+                                               docUrl = path.getDocumentUrl( true );
+                                               if ( path.isPath( docUrl.hash ) ) {
+                                                       resolutionUrl = path.squash( docUrl.href );
+                                               } else {
+                                                       resolutionUrl = docUrl.href;
+                                               }
+                                       }
+                               }
+
+                               // If the url is anything but a simple string, remove any preceding hash
+                               // eg #foo/bar -> foo/bar
+                               //    #foo -> #foo
+                               cleanedUrl = isPath ? path.stripHash( url ) : url;
+
+                               // If the url is a full url with a hash check if the parsed hash is a path
+                               // if it is, strip the #, and use it otherwise continue without change
+                               cleanedUrl = path.isPath( uri.hash ) ? path.stripHash( uri.hash ) : cleanedUrl;
+
+                               // Split the UI State keys off the href
+                               stateIndex = cleanedUrl.indexOf( this.uiStateKey );
+
+                               // store the ui state keys for use
+                               if ( stateIndex > -1 ) {
+                                       uiState = cleanedUrl.slice( stateIndex );
+                                       cleanedUrl = cleanedUrl.slice( 0, stateIndex );
+                               }
+
+                               // make the cleanedUrl absolute relative to the resolution url
+                               href = path.makeUrlAbsolute( cleanedUrl, resolutionUrl );
+
+                               // grab the search from the resolved url since parsing from
+                               // the passed url may not yield the correct result
+                               search = this.parseUrl( href ).search;
+
+                               // TODO all this crap is terrible, clean it up
+                               if ( isPath ) {
+                                       // reject the hash if it's a path or it's just a dialog key
+                                       if ( path.isPath( preservedHash ) || preservedHash.replace("#", "").indexOf( this.uiStateKey ) === 0) {
+                                               preservedHash = "";
+                                       }
+
+                                       // Append the UI State keys where it exists and it's been removed
+                                       // from the url
+                                       if ( uiState && preservedHash.indexOf( this.uiStateKey ) === -1) {
+                                               preservedHash += uiState;
+                                       }
+
+                                       // make sure that pound is on the front of the hash
+                                       if ( preservedHash.indexOf( "#" ) === -1 && preservedHash !== "" ) {
+                                               preservedHash = "#" + preservedHash;
+                                       }
+
+                                       // reconstruct each of the pieces with the new search string and hash
+                                       href = path.parseUrl( href );
+                                       href = href.protocol + href.doubleSlash + href.host + href.pathname + search +
+                                               preservedHash;
+                               } else {
+                                       href += href.indexOf( "#" ) > -1 ? uiState : "#" + uiState;
+                               }
+
+                               return href;
+                       },
+
+                       isPreservableHash: function( hash ) {
+                               return hash.replace( "#", "" ).indexOf( this.uiStateKey ) === 0;
+                       },
+
+                       // Escape weird characters in the hash if it is to be used as a selector
+                       hashToSelector: function( hash ) {
+                               var hasHash = ( hash.substring( 0, 1 ) === "#" );
+                               if ( hasHash ) {
+                                       hash = hash.substring( 1 );
+                               }
+                               return ( hasHash ? "#" : "" ) + hash.replace( /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, "\\$1" );
+                       },
+
+                       // return the substring of a filepath before the dialogHashKey, for making a server
+                       // request
+                       getFilePath: function( path ) {
+                               return path && path.split( dialogHashKey )[0];
+                       },
+
+                       // check if the specified url refers to the first page in the main
+                       // application document.
+                       isFirstPageUrl: function( url ) {
+                               // We only deal with absolute paths.
+                               var u = path.parseUrl( path.makeUrlAbsolute( url, this.documentBase ) ),
+
+                                       // Does the url have the same path as the document?
+                                       samePath = u.hrefNoHash === this.documentUrl.hrefNoHash ||
+                                               ( this.documentBaseDiffers &&
+                                                       u.hrefNoHash === this.documentBase.hrefNoHash ),
+
+                                       // Get the first page element.
+                                       fp = $.mobile.firstPage,
+
+                                       // Get the id of the first page element if it has one.
+                                       fpId = fp && fp[0] ? fp[0].id : undefined;
+
+                               // The url refers to the first page if the path matches the document and
+                               // it either has no hash value, or the hash is exactly equal to the id
+                               // of the first page element.
+                               return samePath &&
+                                       ( !u.hash ||
+                                               u.hash === "#" ||
+                                               ( fpId && u.hash.replace( /^#/, "" ) === fpId ) );
+                       },
+
+                       // Some embedded browsers, like the web view in Phone Gap, allow
+                       // cross-domain XHR requests if the document doing the request was loaded
+                       // via the file:// protocol. This is usually to allow the application to
+                       // "phone home" and fetch app specific data. We normally let the browser
+                       // handle external/cross-domain urls, but if the allowCrossDomainPages
+                       // option is true, we will allow cross-domain http/https requests to go
+                       // through our page loading logic.
+                       isPermittedCrossDomainRequest: function( docUrl, reqUrl ) {
+                               return $.mobile.allowCrossDomainPages &&
+                                       (docUrl.protocol === "file:" || docUrl.protocol === "content:") &&
+                                       reqUrl.search( /^https?:/ ) !== -1;
+                       }
+               };
+
+               path.documentUrl = path.parseLocation();
+
+               $base = $( "head" ).find( "base" );
+
+               path.documentBase = $base.length ?
+                       path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), path.documentUrl.href ) ) :
+                       path.documentUrl;
+
+               path.documentBaseDiffers = (path.documentUrl.hrefNoHash !== path.documentBase.hrefNoHash);
+
+               //return the original document base url
+               path.getDocumentBase = function( asParsedObject ) {
+                       return asParsedObject ? $.extend( {}, path.documentBase ) : path.documentBase.href;
+               };
+
+               // DEPRECATED as of 1.4.0 - remove in 1.5.0
+               $.extend( $.mobile, {
+
+                       //return the original document url
+                       getDocumentUrl: path.getDocumentUrl,
+
+                       //return the original document base url
+                       getDocumentBase: path.getDocumentBase
+               });
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+       $.mobile.History = function( stack, index ) {
+               this.stack = stack || [];
+               this.activeIndex = index || 0;
+       };
+
+       $.extend($.mobile.History.prototype, {
+               getActive: function() {
+                       return this.stack[ this.activeIndex ];
+               },
+
+               getLast: function() {
+                       return this.stack[ this.previousIndex ];
+               },
+
+               getNext: function() {
+                       return this.stack[ this.activeIndex + 1 ];
+               },
+
+               getPrev: function() {
+                       return this.stack[ this.activeIndex - 1 ];
+               },
+
+               // addNew is used whenever a new page is added
+               add: function( url, data ) {
+                       data = data || {};
+
+                       //if there's forward history, wipe it
+                       if ( this.getNext() ) {
+                               this.clearForward();
+                       }
+
+                       // if the hash is included in the data make sure the shape
+                       // is consistent for comparison
+                       if ( data.hash && data.hash.indexOf( "#" ) === -1) {
+                               data.hash = "#" + data.hash;
+                       }
+
+                       data.url = url;
+                       this.stack.push( data );
+                       this.activeIndex = this.stack.length - 1;
+               },
+
+               //wipe urls ahead of active index
+               clearForward: function() {
+                       this.stack = this.stack.slice( 0, this.activeIndex + 1 );
+               },
+
+               find: function( url, stack, earlyReturn ) {
+                       stack = stack || this.stack;
+
+                       var entry, i, length = stack.length, index;
+
+                       for ( i = 0; i < length; i++ ) {
+                               entry = stack[i];
+
+                               if ( decodeURIComponent(url) === decodeURIComponent(entry.url) ||
+                                       decodeURIComponent(url) === decodeURIComponent(entry.hash) ) {
+                                       index = i;
+
+                                       if ( earlyReturn ) {
+                                               return index;
+                                       }
+                               }
+                       }
+
+                       return index;
+               },
+
+               closest: function( url ) {
+                       var closest, a = this.activeIndex;
+
+                       // First, take the slice of the history stack before the current index and search
+                       // for a url match. If one is found, we'll avoid avoid looking through forward history
+                       // NOTE the preference for backward history movement is driven by the fact that
+                       //      most mobile browsers only have a dedicated back button, and users rarely use
+                       //      the forward button in desktop browser anyhow
+                       closest = this.find( url, this.stack.slice(0, a) );
+
+                       // If nothing was found in backward history check forward. The `true`
+                       // value passed as the third parameter causes the find method to break
+                       // on the first match in the forward history slice. The starting index
+                       // of the slice must then be added to the result to get the element index
+                       // in the original history stack :( :(
+                       //
+                       // TODO this is hyper confusing and should be cleaned up (ugh so bad)
+                       if ( closest === undefined ) {
+                               closest = this.find( url, this.stack.slice(a), true );
+                               closest = closest === undefined ? closest : closest + a;
+                       }
+
+                       return closest;
+               },
+
+               direct: function( opts ) {
+                       var newActiveIndex = this.closest( opts.url ), a = this.activeIndex;
+
+                       // save new page index, null check to prevent falsey 0 result
+                       // record the previous index for reference
+                       if ( newActiveIndex !== undefined ) {
+                               this.activeIndex = newActiveIndex;
+                               this.previousIndex = a;
+                       }
+
+                       // invoke callbacks where appropriate
+                       //
+                       // TODO this is also convoluted and confusing
+                       if ( newActiveIndex < a ) {
+                               ( opts.present || opts.back || $.noop )( this.getActive(), "back" );
+                       } else if ( newActiveIndex > a ) {
+                               ( opts.present || opts.forward || $.noop )( this.getActive(), "forward" );
+                       } else if ( newActiveIndex === undefined && opts.missing ) {
+                               opts.missing( this.getActive() );
+                       }
+               }
+       });
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+       var path = $.mobile.path,
+               initialHref = location.href;
+
+       $.mobile.Navigator = function( history ) {
+               this.history = history;
+               this.ignoreInitialHashChange = true;
+
+               $.mobile.window.bind({
+                       "popstate.history": $.proxy( this.popstate, this ),
+                       "hashchange.history": $.proxy( this.hashchange, this )
+               });
+       };
+
+       $.extend($.mobile.Navigator.prototype, {
+               squash: function( url, data ) {
+                       var state, href, hash = path.isPath(url) ? path.stripHash(url) : url;
+
+                       href = path.squash( url );
+
+                       // make sure to provide this information when it isn't explicitly set in the
+                       // data object that was passed to the squash method
+                       state = $.extend({
+                               hash: hash,
+                               url: href
+                       }, data);
+
+                       // replace the current url with the new href and store the state
+                       // Note that in some cases we might be replacing an url with the
+                       // same url. We do this anyways because we need to make sure that
+                       // all of our history entries have a state object associated with
+                       // them. This allows us to work around the case where $.mobile.back()
+                       // is called to transition from an external page to an embedded page.
+                       // In that particular case, a hashchange event is *NOT* generated by the browser.
+                       // Ensuring each history entry has a state object means that onPopState()
+                       // will always trigger our hashchange callback even when a hashchange event
+                       // is not fired.
+                       window.history.replaceState( state, state.title || document.title, href );
+
+                       return state;
+               },
+
+               hash: function( url, href ) {
+                       var parsed, loc, hash, resolved;
+
+                       // Grab the hash for recording. If the passed url is a path
+                       // we used the parsed version of the squashed url to reconstruct,
+                       // otherwise we assume it's a hash and store it directly
+                       parsed = path.parseUrl( url );
+                       loc = path.parseLocation();
+
+                       if ( loc.pathname + loc.search === parsed.pathname + parsed.search ) {
+                               // If the pathname and search of the passed url is identical to the current loc
+                               // then we must use the hash. Otherwise there will be no event
+                               // eg, url = "/foo/bar?baz#bang", location.href = "http://example.com/foo/bar?baz"
+                               hash = parsed.hash ? parsed.hash : parsed.pathname + parsed.search;
+                       } else if ( path.isPath(url) ) {
+                               resolved = path.parseUrl( href );
+                               // If the passed url is a path, make it domain relative and remove any trailing hash
+                               hash = resolved.pathname + resolved.search + (path.isPreservableHash( resolved.hash )? resolved.hash.replace( "#", "" ) : "");
+                       } else {
+                               hash = url;
+                       }
+
+                       return hash;
+               },
+
+               // TODO reconsider name
+               go: function( url, data, noEvents ) {
+                       var state, href, hash, popstateEvent,
+                               isPopStateEvent = $.event.special.navigate.isPushStateEnabled();
+
+                       // Get the url as it would look squashed on to the current resolution url
+                       href = path.squash( url );
+
+                       // sort out what the hash sould be from the url
+                       hash = this.hash( url, href );
+
+                       // Here we prevent the next hash change or popstate event from doing any
+                       // history management. In the case of hashchange we don't swallow it
+                       // if there will be no hashchange fired (since that won't reset the value)
+                       // and will swallow the following hashchange
+                       if ( noEvents && hash !== path.stripHash(path.parseLocation().hash) ) {
+                               this.preventNextHashChange = noEvents;
+                       }
+
+                       // IMPORTANT in the case where popstate is supported the event will be triggered
+                       //      directly, stopping further execution - ie, interupting the flow of this
+                       //      method call to fire bindings at this expression. Below the navigate method
+                       //      there is a binding to catch this event and stop its propagation.
+                       //
+                       //      We then trigger a new popstate event on the window with a null state
+                       //      so that the navigate events can conclude their work properly
+                       //
+                       // if the url is a path we want to preserve the query params that are available on
+                       // the current url.
+                       this.preventHashAssignPopState = true;
+                       window.location.hash = hash;
+
+                       // If popstate is enabled and the browser triggers `popstate` events when the hash
+                       // is set (this often happens immediately in browsers like Chrome), then the
+                       // this flag will be set to false already. If it's a browser that does not trigger
+                       // a `popstate` on hash assignement or `replaceState` then we need avoid the branch
+                       // that swallows the event created by the popstate generated by the hash assignment
+                       // At the time of this writing this happens with Opera 12 and some version of IE
+                       this.preventHashAssignPopState = false;
+
+                       state = $.extend({
+                               url: href,
+                               hash: hash,
+                               title: document.title
+                       }, data);
+
+                       if ( isPopStateEvent ) {
+                               popstateEvent = new $.Event( "popstate" );
+                               popstateEvent.originalEvent = {
+                                       type: "popstate",
+                                       state: null
+                               };
+
+                               this.squash( url, state );
+
+                               // Trigger a new faux popstate event to replace the one that we
+                               // caught that was triggered by the hash setting above.
+                               if ( !noEvents ) {
+                                       this.ignorePopState = true;
+                                       $.mobile.window.trigger( popstateEvent );
+                               }
+                       }
+
+                       // record the history entry so that the information can be included
+                       // in hashchange event driven navigate events in a similar fashion to
+                       // the state that's provided by popstate
+                       this.history.add( state.url, state );
+               },
+
+               // This binding is intended to catch the popstate events that are fired
+               // when execution of the `$.navigate` method stops at window.location.hash = url;
+               // and completely prevent them from propagating. The popstate event will then be
+               // retriggered after execution resumes
+               //
+               // TODO grab the original event here and use it for the synthetic event in the
+               //      second half of the navigate execution that will follow this binding
+               popstate: function( event ) {
+                       var hash, state;
+
+                       // Partly to support our test suite which manually alters the support
+                       // value to test hashchange. Partly to prevent all around weirdness
+                       if ( !$.event.special.navigate.isPushStateEnabled() ) {
+                               return;
+                       }
+
+                       // If this is the popstate triggered by the actual alteration of the hash
+                       // prevent it completely. History is tracked manually
+                       if ( this.preventHashAssignPopState ) {
+                               this.preventHashAssignPopState = false;
+                               event.stopImmediatePropagation();
+                               return;
+                       }
+
+                       // if this is the popstate triggered after the `replaceState` call in the go
+                       // method, then simply ignore it. The history entry has already been captured
+                       if ( this.ignorePopState ) {
+                               this.ignorePopState = false;
+                               return;
+                       }
+
+                       // If there is no state, and the history stack length is one were
+                       // probably getting the page load popstate fired by browsers like chrome
+                       // avoid it and set the one time flag to false.
+                       // TODO: Do we really need all these conditions? Comparing location hrefs
+                       // should be sufficient.
+                       if ( !event.originalEvent.state &&
+                               this.history.stack.length === 1 &&
+                               this.ignoreInitialHashChange ) {
+                               this.ignoreInitialHashChange = false;
+
+                               if ( location.href === initialHref ) {
+                                       event.preventDefault();
+                                       return;
+                               }
+                       }
+
+                       // account for direct manipulation of the hash. That is, we will receive a popstate
+                       // when the hash is changed by assignment, and it won't have a state associated. We
+                       // then need to squash the hash. See below for handling of hash assignment that
+                       // matches an existing history entry
+                       // TODO it might be better to only add to the history stack
+                       //      when the hash is adjacent to the active history entry
+                       hash = path.parseLocation().hash;
+                       if ( !event.originalEvent.state && hash ) {
+                               // squash the hash that's been assigned on the URL with replaceState
+                               // also grab the resulting state object for storage
+                               state = this.squash( hash );
+
+                               // record the new hash as an additional history entry
+                               // to match the browser's treatment of hash assignment
+                               this.history.add( state.url, state );
+
+                               // pass the newly created state information
+                               // along with the event
+                               event.historyState = state;
+
+                               // do not alter history, we've added a new history entry
+                               // so we know where we are
+                               return;
+                       }
+
+                       // If all else fails this is a popstate that comes from the back or forward buttons
+                       // make sure to set the state of our history stack properly, and record the directionality
+                       this.history.direct({
+                               url: (event.originalEvent.state || {}).url || hash,
+
+                               // When the url is either forward or backward in history include the entry
+                               // as data on the event object for merging as data in the navigate event
+                               present: function( historyEntry, direction ) {
+                                       // make sure to create a new object to pass down as the navigate event data
+                                       event.historyState = $.extend({}, historyEntry);
+                                       event.historyState.direction = direction;
+                               }
+                       });
+               },
+
+               // NOTE must bind before `navigate` special event hashchange binding otherwise the
+               //      navigation data won't be attached to the hashchange event in time for those
+               //      bindings to attach it to the `navigate` special event
+               // TODO add a check here that `hashchange.navigate` is bound already otherwise it's
+               //      broken (exception?)
+               hashchange: function( event ) {
+                       var history, hash;
+
+                       // If hashchange listening is explicitly disabled or pushstate is supported
+                       // avoid making use of the hashchange handler.
+                       if (!$.event.special.navigate.isHashChangeEnabled() ||
+                               $.event.special.navigate.isPushStateEnabled() ) {
+                               return;
+                       }
+
+                       // On occasion explicitly want to prevent the next hash from propogating because we only
+                       // with to alter the url to represent the new state do so here
+                       if ( this.preventNextHashChange ) {
+                               this.preventNextHashChange = false;
+                               event.stopImmediatePropagation();
+                               return;
+                       }
+
+                       history = this.history;
+                       hash = path.parseLocation().hash;
+
+                       // If this is a hashchange caused by the back or forward button
+                       // make sure to set the state of our history stack properly
+                       this.history.direct({
+                               url: hash,
+
+                               // When the url is either forward or backward in history include the entry
+                               // as data on the event object for merging as data in the navigate event
+                               present: function( historyEntry, direction ) {
+                                       // make sure to create a new object to pass down as the navigate event data
+                                       event.hashchangeState = $.extend({}, historyEntry);
+                                       event.hashchangeState.direction = direction;
+                               },
+
+                               // When we don't find a hash in our history clearly we're aiming to go there
+                               // record the entry as new for future traversal
+                               //
+                               // NOTE it's not entirely clear that this is the right thing to do given that we
+                               //      can't know the users intention. It might be better to explicitly _not_
+                               //      support location.hash assignment in preference to $.navigate calls
+                               // TODO first arg to add should be the href, but it causes issues in identifying
+                               //      embeded pages
+                               missing: function() {
+                                       history.add( hash, {
+                                               hash: hash,
+                                               title: document.title
+                                       });
+                               }
+                       });
+               }
+       });
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+       // TODO consider queueing navigation activity until previous activities have completed
+       //      so that end users don't have to think about it. Punting for now
+       // TODO !! move the event bindings into callbacks on the navigate event
+       $.mobile.navigate = function( url, data, noEvents ) {
+               $.mobile.navigate.navigator.go( url, data, noEvents );
+       };
+
+       // expose the history on the navigate method in anticipation of full integration with
+       // existing navigation functionalty that is tightly coupled to the history information
+       $.mobile.navigate.history = new $.mobile.History();
+
+       // instantiate an instance of the navigator for use within the $.navigate method
+       $.mobile.navigate.navigator = new $.mobile.Navigator( $.mobile.navigate.history );
+
+       var loc = $.mobile.path.parseLocation();
+       $.mobile.navigate.history.add( loc.href, {hash: loc.hash} );
+})( jQuery );
+
+
+(function( $, undefined ) {
+       var props = {
+                       "animation": {},
+                       "transition": {}
+               },
+               testElement = document.createElement( "a" ),
+               vendorPrefixes = [ "", "webkit-", "moz-", "o-" ];
+
+       $.each( [ "animation", "transition" ], function( i, test ) {
+
+               // Get correct name for test
+               var testName = ( i === 0 ) ? test + "-" + "name" : test;
+
+               $.each( vendorPrefixes, function( j, prefix ) {
+                       if ( testElement.style[ $.camelCase( prefix + testName ) ] !== undefined ) {
+                                props[ test ][ "prefix" ] = prefix;
+                               return false;
+                       }
+               });
+
+               // Set event and duration names for later use
+               props[ test ][ "duration" ] =
+                       $.camelCase( props[ test ][ "prefix" ] + test + "-" + "duration" );
+               props[ test ][ "event" ] =
+                       $.camelCase( props[ test ][ "prefix" ] + test + "-" + "end" );
+
+               // All lower case if not a vendor prop
+               if ( props[ test ][ "prefix" ] === "" ) {
+                       props[ test ][ "event" ] = props[ test ][ "event" ].toLowerCase();
+               }
+       });
+
+       // If a valid prefix was found then the it is supported by the browser
+       $.support.cssTransitions = ( props[ "transition" ][ "prefix" ] !== undefined );
+       $.support.cssAnimations = ( props[ "animation" ][ "prefix" ] !== undefined );
+
+       // Remove the testElement
+       $( testElement ).remove();
+
+       // Animation complete callback
+       $.fn.animationComplete = function( callback, type, fallbackTime ) {
+               var timer, duration,
+                       that = this,
+                       eventBinding = function() {
+
+                               // Clear the timer so we don't call callback twice
+                               clearTimeout( timer );
+                               callback.apply( this, arguments );
+                       },
+                       animationType = ( !type || type === "animation" ) ? "animation" : "transition";
+
+               // Make sure selected type is supported by browser
+               if ( ( $.support.cssTransitions && animationType === "transition" ) ||
+                       ( $.support.cssAnimations && animationType === "animation" ) ) {
+
+                       // If a fallback time was not passed set one
+                       if ( fallbackTime === undefined ) {
+
+                               // Make sure the was not bound to document before checking .css
+                               if ( $( this ).context !== document ) {
+
+                                       // Parse the durration since its in second multiple by 1000 for milliseconds
+                                       // Multiply by 3 to make sure we give the animation plenty of time.
+                                       duration = parseFloat(
+                                               $( this ).css( props[ animationType ].duration )
+                                       ) * 3000;
+                               }
+
+                               // If we could not read a duration use the default
+                               if ( duration === 0 || duration === undefined || isNaN( duration ) ) {
+                                       duration = $.fn.animationComplete.defaultDuration;
+                               }
+                       }
+
+                       // Sets up the fallback if event never comes
+                       timer = setTimeout( function() {
+                               $( that ).off( props[ animationType ].event, eventBinding );
+                               callback.apply( that );
+                       }, duration );
+
+                       // Bind the event
+                       return $( this ).one( props[ animationType ].event, eventBinding );
+               } else {
+
+                       // CSS animation / transitions not supported
+                       // Defer execution for consistency between webkit/non webkit
+                       setTimeout( $.proxy( callback, this ), 0 );
+                       return $( this );
+               }
+       };
+
+       // Allow default callback to be configured on mobileInit
+       $.fn.animationComplete.defaultDuration = 1000;
+})( jQuery );
+
+// This plugin is an experiment for abstracting away the touch and mouse
+// events so that developers don't have to worry about which method of input
+// the device their document is loaded on supports.
+//
+// The idea here is to allow the developer to register listeners for the
+// basic mouse events, such as mousedown, mousemove, mouseup, and click,
+// and the plugin will take care of registering the correct listeners
+// behind the scenes to invoke the listener at the fastest possible time
+// for that device, while still retaining the order of event firing in
+// the traditional mouse environment, should multiple handlers be registered
+// on the same element for different events.
+//
+// The current version exposes the following virtual events to jQuery bind methods:
+// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"
+
+(function( $, window, document, undefined ) {
+
+var dataPropertyName = "virtualMouseBindings",
+       touchTargetPropertyName = "virtualTouchID",
+       virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ),
+       touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ),
+       mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [],
+       mouseEventProps = $.event.props.concat( mouseHookProps ),
+       activeDocHandlers = {},
+       resetTimerID = 0,
+       startX = 0,
+       startY = 0,
+       didScroll = false,
+       clickBlockList = [],
+       blockMouseTriggers = false,
+       blockTouchTriggers = false,
+       eventCaptureSupported = "addEventListener" in document,
+       $document = $( document ),
+       nextTouchID = 1,
+       lastTouchID = 0, threshold,
+       i;
+
+$.vmouse = {
+       moveDistanceThreshold: 10,
+       clickDistanceThreshold: 10,
+       resetTimerDuration: 1500
+};
+
+function getNativeEvent( event ) {
+
+       while ( event && typeof event.originalEvent !== "undefined" ) {
+               event = event.originalEvent;
+       }
+       return event;
+}
+
+function createVirtualEvent( event, eventType ) {
+
+       var t = event.type,
+               oe, props, ne, prop, ct, touch, i, j, len;
+
+       event = $.Event( event );
+       event.type = eventType;
+
+       oe = event.originalEvent;
+       props = $.event.props;
+
+       // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280
+       // https://github.com/jquery/jquery-mobile/issues/3280
+       if ( t.search( /^(mouse|click)/ ) > -1 ) {
+               props = mouseEventProps;
+       }
+
+       // copy original event properties over to the new event
+       // this would happen if we could call $.event.fix instead of $.Event
+       // but we don't have a way to force an event to be fixed multiple times
+       if ( oe ) {
+               for ( i = props.length, prop; i; ) {
+                       prop = props[ --i ];
+                       event[ prop ] = oe[ prop ];
+               }
+       }
+
+       // make sure that if the mouse and click virtual events are generated
+       // without a .which one is defined
+       if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) {
+               event.which = 1;
+       }
+
+       if ( t.search(/^touch/) !== -1 ) {
+               ne = getNativeEvent( oe );
+               t = ne.touches;
+               ct = ne.changedTouches;
+               touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined );
+
+               if ( touch ) {
+                       for ( j = 0, len = touchEventProps.length; j < len; j++) {
+                               prop = touchEventProps[ j ];
+                               event[ prop ] = touch[ prop ];
+                       }
+               }
+       }
+
+       return event;
+}
+
+function getVirtualBindingFlags( element ) {
+
+       var flags = {},
+               b, k;
+
+       while ( element ) {
+
+               b = $.data( element, dataPropertyName );
+
+               for (  k in b ) {
+                       if ( b[ k ] ) {
+                               flags[ k ] = flags.hasVirtualBinding = true;
+                       }
+               }
+               element = element.parentNode;
+       }
+       return flags;
+}
+
+function getClosestElementWithVirtualBinding( element, eventType ) {
+       var b;
+       while ( element ) {
+
+               b = $.data( element, dataPropertyName );
+
+               if ( b && ( !eventType || b[ eventType ] ) ) {
+                       return element;
+               }
+               element = element.parentNode;
+       }
+       return null;
+}
+
+function enableTouchBindings() {
+       blockTouchTriggers = false;
+}
+
+function disableTouchBindings() {
+       blockTouchTriggers = true;
+}
+
+function enableMouseBindings() {
+       lastTouchID = 0;
+       clickBlockList.length = 0;
+       blockMouseTriggers = false;
+
+       // When mouse bindings are enabled, our
+       // touch bindings are disabled.
+       disableTouchBindings();
+}
+
+function disableMouseBindings() {
+       // When mouse bindings are disabled, our
+       // touch bindings are enabled.
+       enableTouchBindings();
+}
+
+function startResetTimer() {
+       clearResetTimer();
+       resetTimerID = setTimeout( function() {
+               resetTimerID = 0;
+               enableMouseBindings();
+       }, $.vmouse.resetTimerDuration );
+}
+
+function clearResetTimer() {
+       if ( resetTimerID ) {
+               clearTimeout( resetTimerID );
+               resetTimerID = 0;
+       }
+}
+
+function triggerVirtualEvent( eventType, event, flags ) {
+       var ve;
+
+       if ( ( flags && flags[ eventType ] ) ||
+                               ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) {
+
+               ve = createVirtualEvent( event, eventType );
+
+               $( event.target).trigger( ve );
+       }
+
+       return ve;
+}
+
+function mouseEventCallback( event ) {
+       var touchID = $.data( event.target, touchTargetPropertyName ),
+               ve;
+
+       if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) {
+               ve = triggerVirtualEvent( "v" + event.type, event );
+               if ( ve ) {
+                       if ( ve.isDefaultPrevented() ) {
+                               event.preventDefault();
+                       }
+                       if ( ve.isPropagationStopped() ) {
+                               event.stopPropagation();
+                       }
+                       if ( ve.isImmediatePropagationStopped() ) {
+                               event.stopImmediatePropagation();
+                       }
+               }
+       }
+}
+
+function handleTouchStart( event ) {
+
+       var touches = getNativeEvent( event ).touches,
+               target, flags, t;
+
+       if ( touches && touches.length === 1 ) {
+
+               target = event.target;
+               flags = getVirtualBindingFlags( target );
+
+               if ( flags.hasVirtualBinding ) {
+
+                       lastTouchID = nextTouchID++;
+                       $.data( target, touchTargetPropertyName, lastTouchID );
+
+                       clearResetTimer();
+
+                       disableMouseBindings();
+                       didScroll = false;
+
+                       t = getNativeEvent( event ).touches[ 0 ];
+                       startX = t.pageX;
+                       startY = t.pageY;
+
+                       triggerVirtualEvent( "vmouseover", event, flags );
+                       triggerVirtualEvent( "vmousedown", event, flags );
+               }
+       }
+}
+
+function handleScroll( event ) {
+       if ( blockTouchTriggers ) {
+               return;
+       }
+
+       if ( !didScroll ) {
+               triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) );
+       }
+
+       didScroll = true;
+       startResetTimer();
+}
+
+function handleTouchMove( event ) {
+       if ( blockTouchTriggers ) {
+               return;
+       }
+
+       var t = getNativeEvent( event ).touches[ 0 ],
+               didCancel = didScroll,
+               moveThreshold = $.vmouse.moveDistanceThreshold,
+               flags = getVirtualBindingFlags( event.target );
+
+               didScroll = didScroll ||
+                       ( Math.abs( t.pageX - startX ) > moveThreshold ||
+                               Math.abs( t.pageY - startY ) > moveThreshold );
+
+       if ( didScroll && !didCancel ) {
+               triggerVirtualEvent( "vmousecancel", event, flags );
+       }
+
+       triggerVirtualEvent( "vmousemove", event, flags );
+       startResetTimer();
+}
+
+function handleTouchEnd( event ) {
+       if ( blockTouchTriggers ) {
+               return;
+       }
+
+       disableTouchBindings();
+
+       var flags = getVirtualBindingFlags( event.target ),
+               ve, t;
+       triggerVirtualEvent( "vmouseup", event, flags );
+
+       if ( !didScroll ) {
+               ve = triggerVirtualEvent( "vclick", event, flags );
+               if ( ve && ve.isDefaultPrevented() ) {
+                       // The target of the mouse events that follow the touchend
+                       // event don't necessarily match the target used during the
+                       // touch. This means we need to rely on coordinates for blocking
+                       // any click that is generated.
+                       t = getNativeEvent( event ).changedTouches[ 0 ];
+                       clickBlockList.push({
+                               touchID: lastTouchID,
+                               x: t.clientX,
+                               y: t.clientY
+                       });
+
+                       // Prevent any mouse events that follow from triggering
+                       // virtual event notifications.
+                       blockMouseTriggers = true;
+               }
+       }
+       triggerVirtualEvent( "vmouseout", event, flags);
+       didScroll = false;
+
+       startResetTimer();
+}
+
+function hasVirtualBindings( ele ) {
+       var bindings = $.data( ele, dataPropertyName ),
+               k;
+
+       if ( bindings ) {
+               for ( k in bindings ) {
+                       if ( bindings[ k ] ) {
+                               return true;
+                       }
+               }
+       }
+       return false;
+}
+
+function dummyMouseHandler() {}
+
+function getSpecialEventObject( eventType ) {
+       var realType = eventType.substr( 1 );
+
+       return {
+               setup: function(/* data, namespace */) {
+                       // If this is the first virtual mouse binding for this element,
+                       // add a bindings object to its data.
+
+                       if ( !hasVirtualBindings( this ) ) {
+                               $.data( this, dataPropertyName, {} );
+                       }
+
+                       // If setup is called, we know it is the first binding for this
+                       // eventType, so initialize the count for the eventType to zero.
+                       var bindings = $.data( this, dataPropertyName );
+                       bindings[ eventType ] = true;
+
+                       // If this is the first virtual mouse event for this type,
+                       // register a global handler on the document.
+
+                       activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1;
+
+                       if ( activeDocHandlers[ eventType ] === 1 ) {
+                               $document.bind( realType, mouseEventCallback );
+                       }
+
+                       // Some browsers, like Opera Mini, won't dispatch mouse/click events
+                       // for elements unless they actually have handlers registered on them.
+                       // To get around this, we register dummy handlers on the elements.
+
+                       $( this ).bind( realType, dummyMouseHandler );
+
+                       // For now, if event capture is not supported, we rely on mouse handlers.
+                       if ( eventCaptureSupported ) {
+                               // If this is the first virtual mouse binding for the document,
+                               // register our touchstart handler on the document.
+
+                               activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1;
+
+                               if ( activeDocHandlers[ "touchstart" ] === 1 ) {
+                                       $document.bind( "touchstart", handleTouchStart )
+                                               .bind( "touchend", handleTouchEnd )
+
+                                               // On touch platforms, touching the screen and then dragging your finger
+                                               // causes the window content to scroll after some distance threshold is
+                                               // exceeded. On these platforms, a scroll prevents a click event from being
+                                               // dispatched, and on some platforms, even the touchend is suppressed. To
+                                               // mimic the suppression of the click event, we need to watch for a scroll
+                                               // event. Unfortunately, some platforms like iOS don't dispatch scroll
+                                               // events until *AFTER* the user lifts their finger (touchend). This means
+                                               // we need to watch both scroll and touchmove events to figure out whether
+                                               // or not a scroll happenens before the touchend event is fired.
+
+                                               .bind( "touchmove", handleTouchMove )
+                                               .bind( "scroll", handleScroll );
+                               }
+                       }
+               },
+
+               teardown: function(/* data, namespace */) {
+                       // If this is the last virtual binding for this eventType,
+                       // remove its global handler from the document.
+
+                       --activeDocHandlers[ eventType ];
+
+                       if ( !activeDocHandlers[ eventType ] ) {
+                               $document.unbind( realType, mouseEventCallback );
+                       }
+
+                       if ( eventCaptureSupported ) {
+                               // If this is the last virtual mouse binding in existence,
+                               // remove our document touchstart listener.
+
+                               --activeDocHandlers[ "touchstart" ];
+
+                               if ( !activeDocHandlers[ "touchstart" ] ) {
+                                       $document.unbind( "touchstart", handleTouchStart )
+                                               .unbind( "touchmove", handleTouchMove )
+                                               .unbind( "touchend", handleTouchEnd )
+                                               .unbind( "scroll", handleScroll );
+                               }
+                       }
+
+                       var $this = $( this ),
+                               bindings = $.data( this, dataPropertyName );
+
+                       // teardown may be called when an element was
+                       // removed from the DOM. If this is the case,
+                       // jQuery core may have already stripped the element
+                       // of any data bindings so we need to check it before
+                       // using it.
+                       if ( bindings ) {
+                               bindings[ eventType ] = false;
+                       }
+
+                       // Unregister the dummy event handler.
+
+                       $this.unbind( realType, dummyMouseHandler );
+
+                       // If this is the last virtual mouse binding on the
+                       // element, remove the binding data from the element.
+
+                       if ( !hasVirtualBindings( this ) ) {
+                               $this.removeData( dataPropertyName );
+                       }
+               }
+       };
+}
+
+// Expose our custom events to the jQuery bind/unbind mechanism.
+
+for ( i = 0; i < virtualEventNames.length; i++ ) {
+       $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] );
+}
+
+// Add a capture click handler to block clicks.
+// Note that we require event capture support for this so if the device
+// doesn't support it, we punt for now and rely solely on mouse events.
+if ( eventCaptureSupported ) {
+       document.addEventListener( "click", function( e ) {
+               var cnt = clickBlockList.length,
+                       target = e.target,
+                       x, y, ele, i, o, touchID;
+
+               if ( cnt ) {
+                       x = e.clientX;
+                       y = e.clientY;
+                       threshold = $.vmouse.clickDistanceThreshold;
+
+                       // The idea here is to run through the clickBlockList to see if
+                       // the current click event is in the proximity of one of our
+                       // vclick events that had preventDefault() called on it. If we find
+                       // one, then we block the click.
+                       //
+                       // Why do we have to rely on proximity?
+                       //
+                       // Because the target of the touch event that triggered the vclick
+                       // can be different from the target of the click event synthesized
+                       // by the browser. The target of a mouse/click event that is synthesized
+                       // from a touch event seems to be implementation specific. For example,
+                       // some browsers will fire mouse/click events for a link that is near
+                       // a touch event, even though the target of the touchstart/touchend event
+                       // says the user touched outside the link. Also, it seems that with most
+                       // browsers, the target of the mouse/click event is not calculated until the
+                       // time it is dispatched, so if you replace an element that you touched
+                       // with another element, the target of the mouse/click will be the new
+                       // element underneath that point.
+                       //
+                       // Aside from proximity, we also check to see if the target and any
+                       // of its ancestors were the ones that blocked a click. This is necessary
+                       // because of the strange mouse/click target calculation done in the
+                       // Android 2.1 browser, where if you click on an element, and there is a
+                       // mouse/click handler on one of its ancestors, the target will be the
+                       // innermost child of the touched element, even if that child is no where
+                       // near the point of touch.
+
+                       ele = target;
+
+                       while ( ele ) {
+                               for ( i = 0; i < cnt; i++ ) {
+                                       o = clickBlockList[ i ];
+                                       touchID = 0;
+
+                                       if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||
+                                                               $.data( ele, touchTargetPropertyName ) === o.touchID ) {
+                                               // XXX: We may want to consider removing matches from the block list
+                                               //      instead of waiting for the reset timer to fire.
+                                               e.preventDefault();
+                                               e.stopPropagation();
+                                               return;
+                                       }
+                               }
+                               ele = ele.parentNode;
+                       }
+               }
+       }, true);
+}
+})( jQuery, window, document );
+
+
+(function( $, window, undefined ) {
+       var $document = $( document ),
+               supportTouch = $.mobile.support.touch,
+               scrollEvent = "touchmove scroll",
+               touchStartEvent = supportTouch ? "touchstart" : "mousedown",
+               touchStopEvent = supportTouch ? "touchend" : "mouseup",
+               touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
+
+       // setup new event shortcuts
+       $.each( ( "touchstart touchmove touchend " +
+               "tap taphold " +
+               "swipe swipeleft swiperight " +
+               "scrollstart scrollstop" ).split( " " ), function( i, name ) {
+
+               $.fn[ name ] = function( fn ) {
+                       return fn ? this.bind( name, fn ) : this.trigger( name );
+               };
+
+               // jQuery < 1.8
+               if ( $.attrFn ) {
+                       $.attrFn[ name ] = true;
+               }
+       });
+
+       function triggerCustomEvent( obj, eventType, event, bubble ) {
+               var originalType = event.type;
+               event.type = eventType;
+               if ( bubble ) {
+                       $.event.trigger( event, undefined, obj );
+               } else {
+                       $.event.dispatch.call( obj, event );
+               }
+               event.type = originalType;
+       }
+
+       // also handles scrollstop
+       $.event.special.scrollstart = {
+
+               enabled: true,
+               setup: function() {
+
+                       var thisObject = this,
+                               $this = $( thisObject ),
+                               scrolling,
+                               timer;
+
+                       function trigger( event, state ) {
+                               scrolling = state;
+                               triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event );
+                       }
+
+                       // iPhone triggers scroll after a small delay; use touchmove instead
+                       $this.bind( scrollEvent, function( event ) {
+
+                               if ( !$.event.special.scrollstart.enabled ) {
+                                       return;
+                               }
+
+                               if ( !scrolling ) {
+                                       trigger( event, true );
+                               }
+
+                               clearTimeout( timer );
+                               timer = setTimeout( function() {
+                                       trigger( event, false );
+                               }, 50 );
+                       });
+               },
+               teardown: function() {
+                       $( this ).unbind( scrollEvent );
+               }
+       };
+
+       // also handles taphold
+       $.event.special.tap = {
+               tapholdThreshold: 750,
+               emitTapOnTaphold: true,
+               setup: function() {
+                       var thisObject = this,
+                               $this = $( thisObject ),
+                               isTaphold = false;
+
+                       $this.bind( "vmousedown", function( event ) {
+                               isTaphold = false;
+                               if ( event.which && event.which !== 1 ) {
+                                       return false;
+                               }
+
+                               var origTarget = event.target,
+                                       timer;
+
+                               function clearTapTimer() {
+                                       clearTimeout( timer );
+                               }
+
+                               function clearTapHandlers() {
+                                       clearTapTimer();
+
+                                       $this.unbind( "vclick", clickHandler )
+                                               .unbind( "vmouseup", clearTapTimer );
+                                       $document.unbind( "vmousecancel", clearTapHandlers );
+                               }
+
+                               function clickHandler( event ) {
+                                       clearTapHandlers();
+
+                                       // ONLY trigger a 'tap' event if the start target is
+                                       // the same as the stop target.
+                                       if ( !isTaphold && origTarget === event.target ) {
+                                               triggerCustomEvent( thisObject, "tap", event );
+                                       } else if ( isTaphold ) {
+                                               event.preventDefault();
+                                       }
+                               }
+
+                               $this.bind( "vmouseup", clearTapTimer )
+                                       .bind( "vclick", clickHandler );
+                               $document.bind( "vmousecancel", clearTapHandlers );
+
+                               timer = setTimeout( function() {
+                                       if ( !$.event.special.tap.emitTapOnTaphold ) {
+                                               isTaphold = true;
+                                       }
+                                       triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) );
+                               }, $.event.special.tap.tapholdThreshold );
+                       });
+               },
+               teardown: function() {
+                       $( this ).unbind( "vmousedown" ).unbind( "vclick" ).unbind( "vmouseup" );
+                       $document.unbind( "vmousecancel" );
+               }
+       };
+
+       // Also handles swipeleft, swiperight
+       $.event.special.swipe = {
+
+               // More than this horizontal displacement, and we will suppress scrolling.
+               scrollSupressionThreshold: 30,
+
+               // More time than this, and it isn't a swipe.
+               durationThreshold: 1000,
+
+               // Swipe horizontal displacement must be more than this.
+               horizontalDistanceThreshold: 30,
+
+               // Swipe vertical displacement must be less than this.
+               verticalDistanceThreshold: 30,
+
+               getLocation: function ( event ) {
+                       var winPageX = window.pageXOffset,
+                               winPageY = window.pageYOffset,
+                               x = event.clientX,
+                               y = event.clientY;
+
+                       if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||
+                               event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {
+
+                               // iOS4 clientX/clientY have the value that should have been
+                               // in pageX/pageY. While pageX/page/ have the value 0
+                               x = x - winPageX;
+                               y = y - winPageY;
+                       } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {
+
+                               // Some Android browsers have totally bogus values for clientX/Y
+                               // when scrolling/zooming a page. Detectable since clientX/clientY
+                               // should never be smaller than pageX/pageY minus page scroll
+                               x = event.pageX - winPageX;
+                               y = event.pageY - winPageY;
+                       }
+
+                       return {
+                               x: x,
+                               y: y
+                       };
+               },
+
+               start: function( event ) {
+                       var data = event.originalEvent.touches ?
+                                       event.originalEvent.touches[ 0 ] : event,
+                               location = $.event.special.swipe.getLocation( data );
+                       return {
+                                               time: ( new Date() ).getTime(),
+                                               coords: [ location.x, location.y ],
+                                               origin: $( event.target )
+                                       };
+               },
+
+               stop: function( event ) {
+                       var data = event.originalEvent.touches ?
+                                       event.originalEvent.touches[ 0 ] : event,
+                               location = $.event.special.swipe.getLocation( data );
+                       return {
+                                               time: ( new Date() ).getTime(),
+                                               coords: [ location.x, location.y ]
+                                       };
+               },
+
+               handleSwipe: function( start, stop, thisObject, origTarget ) {
+                       if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
+                               Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
+                               Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
+                               var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";
+
+                               triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true );
+                               triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );
+                               return true;
+                       }
+                       return false;
+
+               },
+
+               // This serves as a flag to ensure that at most one swipe event event is
+               // in work at any given time
+               eventInProgress: false,
+
+               setup: function() {
+                       var events,
+                               thisObject = this,
+                               $this = $( thisObject ),
+                               context = {};
+
+                       // Retrieve the events data for this element and add the swipe context
+                       events = $.data( this, "mobile-events" );
+                       if ( !events ) {
+                               events = { length: 0 };
+                               $.data( this, "mobile-events", events );
+                       }
+                       events.length++;
+                       events.swipe = context;
+
+                       context.start = function( event ) {
+
+                               // Bail if we're already working on a swipe event
+                               if ( $.event.special.swipe.eventInProgress ) {
+                                       return;
+                               }
+                               $.event.special.swipe.eventInProgress = true;
+
+                               var stop,
+                                       start = $.event.special.swipe.start( event ),
+                                       origTarget = event.target,
+                                       emitted = false;
+
+                               context.move = function( event ) {
+                                       if ( !start || event.isDefaultPrevented() ) {
+                                               return;
+                                       }
+
+                                       stop = $.event.special.swipe.stop( event );
+                                       if ( !emitted ) {
+                                               emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
+                                               if ( emitted ) {
+
+                                                       // Reset the context to make way for the next swipe event
+                                                       $.event.special.swipe.eventInProgress = false;
+                                               }
+                                       }
+                                       // prevent scrolling
+                                       if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
+                                               event.preventDefault();
+                                       }
+                               };
+
+                               context.stop = function() {
+                                               emitted = true;
+
+                                               // Reset the context to make way for the next swipe event
+                                               $.event.special.swipe.eventInProgress = false;
+                                               $document.off( touchMoveEvent, context.move );
+                                               context.move = null;
+                               };
+
+                               $document.on( touchMoveEvent, context.move )
+                                       .one( touchStopEvent, context.stop );
+                       };
+                       $this.on( touchStartEvent, context.start );
+               },
+
+               teardown: function() {
+                       var events, context;
+
+                       events = $.data( this, "mobile-events" );
+                       if ( events ) {
+                               context = events.swipe;
+                               delete events.swipe;
+                               events.length--;
+                               if ( events.length === 0 ) {
+                                       $.removeData( this, "mobile-events" );
+                               }
+                       }
+
+                       if ( context ) {
+                               if ( context.start ) {
+                                       $( this ).off( touchStartEvent, context.start );
+                               }
+                               if ( context.move ) {
+                                       $document.off( touchMoveEvent, context.move );
+                               }
+                               if ( context.stop ) {
+                                       $document.off( touchStopEvent, context.stop );
+                               }
+                       }
+               }
+       };
+       $.each({
+               scrollstop: "scrollstart",
+               taphold: "tap",
+               swipeleft: "swipe.left",
+               swiperight: "swipe.right"
+       }, function( event, sourceEvent ) {
+
+               $.event.special[ event ] = {
+                       setup: function() {
+                               $( this ).bind( sourceEvent, $.noop );
+                       },
+                       teardown: function() {
+                               $( this ).unbind( sourceEvent );
+                       }
+               };
+       });
+
+})( jQuery, this );
+
+
+       // throttled resize event
+       (function( $ ) {
+               $.event.special.throttledresize = {
+                       setup: function() {
+                               $( this ).bind( "resize", handler );
+                       },
+                       teardown: function() {
+                               $( this ).unbind( "resize", handler );
+                       }
+               };
+
+               var throttle = 250,
+                       handler = function() {
+                               curr = ( new Date() ).getTime();
+                               diff = curr - lastCall;
+
+                               if ( diff >= throttle ) {
+
+                                       lastCall = curr;
+                                       $( this ).trigger( "throttledresize" );
+
+                               } else {
+
+                                       if ( heldCall ) {
+                                               clearTimeout( heldCall );
+                                       }
+
+                                       // Promise a held call will still execute
+                                       heldCall = setTimeout( handler, throttle - diff );
+                               }
+                       },
+                       lastCall = 0,
+                       heldCall,
+                       curr,
+                       diff;
+       })( jQuery );
+
+
+(function( $, window ) {
+       var win = $( window ),
+               event_name = "orientationchange",
+               get_orientation,
+               last_orientation,
+               initial_orientation_is_landscape,
+               initial_orientation_is_default,
+               portrait_map = { "0": true, "180": true },
+               ww, wh, landscape_threshold;
+
+       // It seems that some device/browser vendors use window.orientation values 0 and 180 to
+       // denote the "default" orientation. For iOS devices, and most other smart-phones tested,
+       // the default orientation is always "portrait", but in some Android and RIM based tablets,
+       // the default orientation is "landscape". The following code attempts to use the window
+       // dimensions to figure out what the current orientation is, and then makes adjustments
+       // to the to the portrait_map if necessary, so that we can properly decode the
+       // window.orientation value whenever get_orientation() is called.
+       //
+       // Note that we used to use a media query to figure out what the orientation the browser
+       // thinks it is in:
+       //
+       //     initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)");
+       //
+       // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1,
+       // where the browser *ALWAYS* applied the landscape media query. This bug does not
+       // happen on iPad.
+
+       if ( $.support.orientation ) {
+
+               // Check the window width and height to figure out what the current orientation
+               // of the device is at this moment. Note that we've initialized the portrait map
+               // values to 0 and 180, *AND* we purposely check for landscape so that if we guess
+               // wrong, , we default to the assumption that portrait is the default orientation.
+               // We use a threshold check below because on some platforms like iOS, the iPhone
+               // form-factor can report a larger width than height if the user turns on the
+               // developer console. The actual threshold value is somewhat arbitrary, we just
+               // need to make sure it is large enough to exclude the developer console case.
+
+               ww = window.innerWidth || win.width();
+               wh = window.innerHeight || win.height();
+               landscape_threshold = 50;
+
+               initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold;
+
+               // Now check to see if the current window.orientation is 0 or 180.
+               initial_orientation_is_default = portrait_map[ window.orientation ];
+
+               // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR*
+               // if the initial orientation is portrait, but window.orientation reports 90 or -90, we
+               // need to flip our portrait_map values because landscape is the default orientation for
+               // this device/browser.
+               if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) {
+                       portrait_map = { "-90": true, "90": true };
+               }
+       }
+
+       $.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, {
+               setup: function() {
+                       // If the event is supported natively, return false so that jQuery
+                       // will bind to the event using DOM methods.
+                       if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+                               return false;
+                       }
+
+                       // Get the current orientation to avoid initial double-triggering.
+                       last_orientation = get_orientation();
+
+                       // Because the orientationchange event doesn't exist, simulate the
+                       // event by testing window dimensions on resize.
+                       win.bind( "throttledresize", handler );
+               },
+               teardown: function() {
+                       // If the event is not supported natively, return false so that
+                       // jQuery will unbind the event using DOM methods.
+                       if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+                               return false;
+                       }
+
+                       // Because the orientationchange event doesn't exist, unbind the
+                       // resize event handler.
+                       win.unbind( "throttledresize", handler );
+               },
+               add: function( handleObj ) {
+                       // Save a reference to the bound event handler.
+                       var old_handler = handleObj.handler;
+
+                       handleObj.handler = function( event ) {
+                               // Modify event object, adding the .orientation property.
+                               event.orientation = get_orientation();
+
+                               // Call the originally-bound event handler and return its result.
+                               return old_handler.apply( this, arguments );
+                       };
+               }
+       });
+
+       // If the event is not supported natively, this handler will be bound to
+       // the window resize event to simulate the orientationchange event.
+       function handler() {
+               // Get the current orientation.
+               var orientation = get_orientation();
+
+               if ( orientation !== last_orientation ) {
+                       // The orientation has changed, so trigger the orientationchange event.
+                       last_orientation = orientation;
+                       win.trigger( event_name );
+               }
+       }
+
+       // Get the current page orientation. This method is exposed publicly, should it
+       // be needed, as jQuery.event.special.orientationchange.orientation()
+       $.event.special.orientationchange.orientation = get_orientation = function() {
+               var isPortrait = true, elem = document.documentElement;
+
+               // prefer window orientation to the calculation based on screensize as
+               // the actual screen resize takes place before or after the orientation change event
+               // has been fired depending on implementation (eg android 2.3 is before, iphone after).
+               // More testing is required to determine if a more reliable method of determining the new screensize
+               // is possible when orientationchange is fired. (eg, use media queries + element + opacity)
+               if ( $.support.orientation ) {
+                       // if the window orientation registers as 0 or 180 degrees report
+                       // portrait, otherwise landscape
+                       isPortrait = portrait_map[ window.orientation ];
+               } else {
+                       isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1;
+               }
+
+               return isPortrait ? "portrait" : "landscape";
+       };
+
+       $.fn[ event_name ] = function( fn ) {
+               return fn ? this.bind( event_name, fn ) : this.trigger( event_name );
+       };
+
+       // jQuery < 1.8
+       if ( $.attrFn ) {
+               $.attrFn[ event_name ] = true;
+       }
+
+}( jQuery, this ));
+
+
+
+
+(function( $, undefined ) {
+
+       // existing base tag?
+       var baseElement = $( "head" ).children( "base" ),
+
+       // base element management, defined depending on dynamic base tag support
+       // TODO move to external widget
+       base = {
+
+               // define base element, for use in routing asset urls that are referenced
+               // in Ajax-requested markup
+               element: ( baseElement.length ? baseElement :
+                       $( "<base>", { href: $.mobile.path.documentBase.hrefNoHash } ).prependTo( $( "head" ) ) ),
+
+               linkSelector: "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]",
+
+               // set the generated BASE element's href to a new page's base path
+               set: function( href ) {
+
+                       // we should do nothing if the user wants to manage their url base
+                       // manually
+                       if ( !$.mobile.dynamicBaseEnabled ) {
+                               return;
+                       }
+
+                       // we should use the base tag if we can manipulate it dynamically
+                       if ( $.support.dynamicBaseTag ) {
+                               base.element.attr( "href",
+                                       $.mobile.path.makeUrlAbsolute( href, $.mobile.path.documentBase ) );
+                       }
+               },
+
+               rewrite: function( href, page ) {
+                       var newPath = $.mobile.path.get( href );
+
+                       page.find( base.linkSelector ).each(function( i, link ) {
+                               var thisAttr = $( link ).is( "[href]" ) ? "href" :
+                                       $( link ).is( "[src]" ) ? "src" : "action",
+                               theLocation = $.mobile.path.parseLocation(),
+                               thisUrl = $( link ).attr( thisAttr );
+
+                               // XXX_jblas: We need to fix this so that it removes the document
+                               //            base URL, and then prepends with the new page URL.
+                               // if full path exists and is same, chop it - helps IE out
+                               thisUrl = thisUrl.replace( theLocation.protocol + theLocation.doubleSlash +
+                                       theLocation.host + theLocation.pathname, "" );
+
+                               if ( !/^(\w+:|#|\/)/.test( thisUrl ) ) {
+                                       $( link ).attr( thisAttr, newPath + thisUrl );
+                               }
+                       });
+               },
+
+               // set the generated BASE element's href to a new page's base path
+               reset: function(/* href */) {
+                       base.element.attr( "href", $.mobile.path.documentBase.hrefNoSearch );
+               }
+       };
+
+       $.mobile.base = base;
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+$.mobile.widgets = {};
+
+var originalWidget = $.widget,
+
+       // Record the original, non-mobileinit-modified version of $.mobile.keepNative
+       // so we can later determine whether someone has modified $.mobile.keepNative
+       keepNativeFactoryDefault = $.mobile.keepNative;
+
+$.widget = (function( orig ) {
+       return function() {
+               var constructor = orig.apply( this, arguments ),
+                       name = constructor.prototype.widgetName;
+
+               constructor.initSelector = ( ( constructor.prototype.initSelector !== undefined ) ?
+                       constructor.prototype.initSelector : ":jqmData(role='" + name + "')" );
+
+               $.mobile.widgets[ name ] = constructor;
+
+               return constructor;
+       };
+})( $.widget );
+
+// Make sure $.widget still has bridge and extend methods
+$.extend( $.widget, originalWidget );
+
+// For backcompat remove in 1.5
+$.mobile.document.on( "create", function( event ) {
+       $( event.target ).enhanceWithin();
+});
+
+$.widget( "mobile.page", {
+       options: {
+               theme: "a",
+               domCache: false,
+
+               // Deprecated in 1.4 remove in 1.5
+               keepNativeDefault: $.mobile.keepNative,
+
+               // Deprecated in 1.4 remove in 1.5
+               contentTheme: null,
+               enhanced: false
+       },
+
+       // DEPRECATED for > 1.4
+       // TODO remove at 1.5
+       _createWidget: function() {
+               $.Widget.prototype._createWidget.apply( this, arguments );
+               this._trigger( "init" );
+       },
+
+       _create: function() {
+               // If false is returned by the callbacks do not create the page
+               if ( this._trigger( "beforecreate" ) === false ) {
+                       return false;
+               }
+
+               if ( !this.options.enhanced ) {
+                       this._enhance();
+               }
+
+               this._on( this.element, {
+                       pagebeforehide: "removeContainerBackground",
+                       pagebeforeshow: "_handlePageBeforeShow"
+               });
+
+               this.element.enhanceWithin();
+               // Dialog widget is deprecated in 1.4 remove this in 1.5
+               if ( $.mobile.getAttribute( this.element[0], "role" ) === "dialog" && $.mobile.dialog ) {
+                       this.element.dialog();
+               }
+       },
+
+       _enhance: function () {
+               var attrPrefix = "data-" + $.mobile.ns,
+                       self = this;
+
+               if ( this.options.role ) {
+                       this.element.attr( "data-" + $.mobile.ns + "role", this.options.role );
+               }
+
+               this.element
+                       .attr( "tabindex", "0" )
+                       .addClass( "ui-page ui-page-theme-" + this.options.theme );
+
+               // Manipulation of content os Deprecated as of 1.4 remove in 1.5
+               this.element.find( "[" + attrPrefix + "role='content']" ).each( function() {
+                       var $this = $( this ),
+                               theme = this.getAttribute( attrPrefix + "theme" ) || undefined;
+                               self.options.contentTheme = theme || self.options.contentTheme || ( self.options.dialog && self.options.theme ) || ( self.element.jqmData("role") === "dialog" &&  self.options.theme );
+                               $this.addClass( "ui-content" );
+                               if ( self.options.contentTheme ) {
+                                       $this.addClass( "ui-body-" + ( self.options.contentTheme ) );
+                               }
+                               // Add ARIA role
+                               $this.attr( "role", "main" ).addClass( "ui-content" );
+               });
+       },
+
+       bindRemove: function( callback ) {
+               var page = this.element;
+
+               // when dom caching is not enabled or the page is embedded bind to remove the page on hide
+               if ( !page.data( "mobile-page" ).options.domCache &&
+                       page.is( ":jqmData(external-page='true')" ) ) {
+
+                       // TODO use _on - that is, sort out why it doesn't work in this case
+                       page.bind( "pagehide.remove", callback || function( e, data ) {
+
+                               //check if this is a same page transition and if so don't remove the page
+                               if( !data.samePage ){
+                                       var $this = $( this ),
+                                               prEvent = new $.Event( "pageremove" );
+
+                                       $this.trigger( prEvent );
+
+                                       if ( !prEvent.isDefaultPrevented() ) {
+                                               $this.removeWithDependents();
+                                       }
+                               }
+                       });
+               }
+       },
+
+       _setOptions: function( o ) {
+               if ( o.theme !== undefined ) {
+                       this.element.removeClass( "ui-page-theme-" + this.options.theme ).addClass( "ui-page-theme-" + o.theme );
+               }
+
+               if ( o.contentTheme !== undefined ) {
+                       this.element.find( "[data-" + $.mobile.ns + "='content']" ).removeClass( "ui-body-" + this.options.contentTheme )
+                               .addClass( "ui-body-" + o.contentTheme );
+               }
+       },
+
+       _handlePageBeforeShow: function(/* e */) {
+               this.setContainerBackground();
+       },
+       // Deprecated in 1.4 remove in 1.5
+       removeContainerBackground: function() {
+               this.element.closest( ":mobile-pagecontainer" ).pagecontainer({ "theme": "none" });
+       },
+       // Deprecated in 1.4 remove in 1.5
+       // set the page container background to the page theme
+       setContainerBackground: function( theme ) {
+               this.element.parent().pagecontainer( { "theme": theme || this.options.theme } );
+       },
+       // Deprecated in 1.4 remove in 1.5
+       keepNativeSelector: function() {
+               var options = this.options,
+                       keepNative = $.trim( options.keepNative || "" ),
+                       globalValue = $.trim( $.mobile.keepNative ),
+                       optionValue = $.trim( options.keepNativeDefault ),
+
+                       // Check if $.mobile.keepNative has changed from the factory default
+                       newDefault = ( keepNativeFactoryDefault === globalValue ?
+                               "" : globalValue ),
+
+                       // If $.mobile.keepNative has not changed, use options.keepNativeDefault
+                       oldDefault = ( newDefault === "" ? optionValue : "" );
+
+               // Concatenate keepNative selectors from all sources where the value has
+               // changed or, if nothing has changed, return the default
+               return ( ( keepNative ? [ keepNative ] : [] )
+                       .concat( newDefault ? [ newDefault ] : [] )
+                       .concat( oldDefault ? [ oldDefault ] : [] )
+                       .join( ", " ) );
+       }
+});
+})( jQuery );
+
+(function( $, undefined ) {
+
+       $.widget( "mobile.pagecontainer", {
+               options: {
+                       theme: "a"
+               },
+
+               initSelector: false,
+
+               _create: function() {
+                       this._trigger( "beforecreate" );
+                       this.setLastScrollEnabled = true;
+
+                       this._on( this.window, {
+                               // disable an scroll setting when a hashchange has been fired,
+                               // this only works because the recording of the scroll position
+                               // is delayed for 100ms after the browser might have changed the
+                               // position because of the hashchange
+                               navigate: "_disableRecordScroll",
+
+                               // bind to scrollstop for the first page, "pagechange" won't be
+                               // fired in that case
+                               scrollstop: "_delayedRecordScroll"
+                       });
+
+                       // TODO consider moving the navigation handler OUT of widget into
+                       //      some other object as glue between the navigate event and the
+                       //      content widget load and change methods
+                       this._on( this.window, { navigate: "_filterNavigateEvents" });
+
+                       // TODO move from page* events to content* events
+                       this._on({ pagechange: "_afterContentChange" });
+
+                       // handle initial hashchange from chrome :(
+                       this.window.one( "navigate", $.proxy(function() {
+                               this.setLastScrollEnabled = true;
+                       }, this));
+               },
+
+               _setOptions: function( options ) {
+                       if ( options.theme !== undefined && options.theme !== "none" ) {
+                               this.element.removeClass( "ui-overlay-" + this.options.theme )
+                                       .addClass( "ui-overlay-" + options.theme );
+                       } else if ( options.theme !== undefined ) {
+                               this.element.removeClass( "ui-overlay-" + this.options.theme );
+                       }
+
+                       this._super( options );
+               },
+
+               _disableRecordScroll: function() {
+                       this.setLastScrollEnabled = false;
+               },
+
+               _enableRecordScroll: function() {
+                       this.setLastScrollEnabled = true;
+               },
+
+               // TODO consider the name here, since it's purpose specific
+               _afterContentChange: function() {
+                       // once the page has changed, re-enable the scroll recording
+                       this.setLastScrollEnabled = true;
+
+                       // remove any binding that previously existed on the get scroll
+                       // which may or may not be different than the scroll element
+                       // determined for this page previously
+                       this._off( this.window, "scrollstop" );
+
+                       // determine and bind to the current scoll element which may be the
+                       // window or in the case of touch overflow the element touch overflow
+                       this._on( this.window, { scrollstop: "_delayedRecordScroll" });
+               },
+
+               _recordScroll: function() {
+                       // this barrier prevents setting the scroll value based on
+                       // the browser scrolling the window based on a hashchange
+                       if ( !this.setLastScrollEnabled ) {
+                               return;
+                       }
+
+                       var active = this._getActiveHistory(),
+                               currentScroll, minScroll, defaultScroll;
+
+                       if ( active ) {
+                               currentScroll = this._getScroll();
+                               minScroll = this._getMinScroll();
+                               defaultScroll = this._getDefaultScroll();
+
+                               // Set active page's lastScroll prop. If the location we're
+                               // scrolling to is less than minScrollBack, let it go.
+                               active.lastScroll = currentScroll < minScroll ? defaultScroll : currentScroll;
+                       }
+               },
+
+               _delayedRecordScroll: function() {
+                       setTimeout( $.proxy(this, "_recordScroll"), 100 );
+               },
+
+               _getScroll: function() {
+                       return this.window.scrollTop();
+               },
+
+               _getMinScroll: function() {
+                       return $.mobile.minScrollBack;
+               },
+
+               _getDefaultScroll: function() {
+                       return $.mobile.defaultHomeScroll;
+               },
+
+               _filterNavigateEvents: function( e, data ) {
+                       var url;
+
+                       if ( e.originalEvent && e.originalEvent.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       url = e.originalEvent.type.indexOf( "hashchange" ) > -1 ? data.state.hash : data.state.url;
+
+                       if ( !url ) {
+                               url = this._getHash();
+                       }
+
+                       if ( !url || url === "#" || url.indexOf( "#" + $.mobile.path.uiStateKey ) === 0 ) {
+                               url = location.href;
+                       }
+
+                       this._handleNavigate( url, data.state );
+               },
+
+               _getHash: function() {
+                       return $.mobile.path.parseLocation().hash;
+               },
+
+               // TODO active page should be managed by the container (ie, it should be a property)
+               getActivePage: function() {
+                       return this.activePage;
+               },
+
+               // TODO the first page should be a property set during _create using the logic
+               //      that currently resides in init
+               _getInitialContent: function() {
+                       return $.mobile.firstPage;
+               },
+
+               // TODO each content container should have a history object
+               _getHistory: function() {
+                       return $.mobile.navigate.history;
+               },
+
+               _getActiveHistory: function() {
+                       return this._getHistory().getActive();
+               },
+
+               // TODO the document base should be determined at creation
+               _getDocumentBase: function() {
+                       return $.mobile.path.documentBase;
+               },
+
+               back: function() {
+                       this.go( -1 );
+               },
+
+               forward: function() {
+                       this.go( 1 );
+               },
+
+               go: function( steps ) {
+
+                       //if hashlistening is enabled use native history method
+                       if ( $.mobile.hashListeningEnabled ) {
+                               window.history.go( steps );
+                       } else {
+
+                               //we are not listening to the hash so handle history internally
+                               var activeIndex = $.mobile.navigate.history.activeIndex,
+                                       index = activeIndex + parseInt( steps, 10 ),
+                                       url = $.mobile.navigate.history.stack[ index ].url,
+                                       direction = ( steps >= 1 )? "forward" : "back";
+
+                               //update the history object
+                               $.mobile.navigate.history.activeIndex = index;
+                               $.mobile.navigate.history.previousIndex = activeIndex;
+
+                               //change to the new page
+                               this.change( url, { direction: direction, changeHash: false, fromHashChange: true } );
+                       }
+               },
+
+               // TODO rename _handleDestination
+               _handleDestination: function( to ) {
+                       var history;
+
+                       // clean the hash for comparison if it's a url
+                       if ( $.type(to) === "string" ) {
+                               to = $.mobile.path.stripHash( to );
+                       }
+
+                       if ( to ) {
+                               history = this._getHistory();
+
+                               // At this point, 'to' can be one of 3 things, a cached page
+                               // element from a history stack entry, an id, or site-relative /
+                               // absolute URL. If 'to' is an id, we need to resolve it against
+                               // the documentBase, not the location.href, since the hashchange
+                               // could've been the result of a forward/backward navigation
+                               // that crosses from an external page/dialog to an internal
+                               // page/dialog.
+                               //
+                               // TODO move check to history object or path object?
+                               to = !$.mobile.path.isPath( to ) ? ( $.mobile.path.makeUrlAbsolute( "#" + to, this._getDocumentBase() ) ) : to;
+                       }
+                       return to || this._getInitialContent();
+               },
+
+               _transitionFromHistory: function( direction, defaultTransition ) {
+                       var history = this._getHistory(),
+                               entry = ( direction === "back" ? history.getLast() : history.getActive() );
+
+                       return ( entry && entry.transition ) || defaultTransition;
+               },
+
+               _handleDialog: function( changePageOptions, data ) {
+                       var to, active, activeContent = this.getActivePage();
+
+                       // If current active page is not a dialog skip the dialog and continue
+                       // in the same direction
+                       // Note: The dialog widget is deprecated as of 1.4.0 and will be removed in 1.5.0.
+                       // Thus, as of 1.5.0 activeContent.data( "mobile-dialog" ) will always evaluate to
+                       // falsy, so the second condition in the if-statement below can be removed altogether.
+                       if ( activeContent && !activeContent.data( "mobile-dialog" ) ) {
+                               // determine if we're heading forward or backward and continue
+                               // accordingly past the current dialog
+                               if ( data.direction === "back" ) {
+                                       this.back();
+                               } else {
+                                       this.forward();
+                               }
+
+                               // prevent changePage call
+                               return false;
+                       } else {
+                               // if the current active page is a dialog and we're navigating
+                               // to a dialog use the dialog objected saved in the stack
+                               to = data.pageUrl;
+                               active = this._getActiveHistory();
+
+                               // make sure to set the role, transition and reversal
+                               // as most of this is lost by the domCache cleaning
+                               $.extend( changePageOptions, {
+                                       role: active.role,
+                                       transition: this._transitionFromHistory(
+                                               data.direction,
+                                               changePageOptions.transition ),
+                                       reverse: data.direction === "back"
+                               });
+                       }
+
+                       return to;
+               },
+
+               _handleNavigate: function( url, data ) {
+                       //find first page via hash
+                       // TODO stripping the hash twice with handleUrl
+                       var to = $.mobile.path.stripHash( url ), history = this._getHistory(),
+
+                               // transition is false if it's the first page, undefined
+                               // otherwise (and may be overridden by default)
+                               transition = history.stack.length === 0 ? "none" :
+                                       this._transitionFromHistory( data.direction ),
+
+                               // default options for the changPage calls made after examining
+                               // the current state of the page and the hash, NOTE that the
+                               // transition is derived from the previous history entry
+                               changePageOptions = {
+                                       changeHash: false,
+                                       fromHashChange: true,
+                                       reverse: data.direction === "back"
+                               };
+
+                       $.extend( changePageOptions, data, {
+                               transition: transition
+                       });
+
+                       // TODO move to _handleDestination ?
+                       // If this isn't the first page, if the current url is a dialog hash
+                       // key, and the initial destination isn't equal to the current target
+                       // page, use the special dialog handling
+                       if ( history.activeIndex > 0 &&
+                               to.indexOf( $.mobile.dialogHashKey ) > -1 ) {
+
+                               to = this._handleDialog( changePageOptions, data );
+
+                               if ( to === false ) {
+                                       return;
+                               }
+                       }
+
+                       this._changeContent( this._handleDestination( to ), changePageOptions );
+               },
+
+               _changeContent: function( to, opts ) {
+                       $.mobile.changePage( to, opts );
+               },
+
+               _getBase: function() {
+                       return $.mobile.base;
+               },
+
+               _getNs: function() {
+                       return $.mobile.ns;
+               },
+
+               _enhance: function( content, role ) {
+                       // TODO consider supporting a custom callback, and passing in
+                       // the settings which includes the role
+                       return content.page({ role: role });
+               },
+
+               _include: function( page, settings ) {
+                       // append to page and enhance
+                       page.appendTo( this.element );
+
+                       // use the page widget to enhance
+                       this._enhance( page, settings.role );
+
+                       // remove page on hide
+                       page.page( "bindRemove" );
+               },
+
+               _find: function( absUrl ) {
+                       // TODO consider supporting a custom callback
+                       var fileUrl = this._createFileUrl( absUrl ),
+                               dataUrl = this._createDataUrl( absUrl ),
+                               page, initialContent = this._getInitialContent();
+
+                       // Check to see if the page already exists in the DOM.
+                       // NOTE do _not_ use the :jqmData pseudo selector because parenthesis
+                       //      are a valid url char and it breaks on the first occurence
+                       page = this.element
+                               .children( "[data-" + this._getNs() +
+                                       "url='" + $.mobile.path.hashToSelector( dataUrl ) + "']" );
+
+                       // If we failed to find the page, check to see if the url is a
+                       // reference to an embedded page. If so, it may have been dynamically
+                       // injected by a developer, in which case it would be lacking a
+                       // data-url attribute and in need of enhancement.
+                       if ( page.length === 0 && dataUrl && !$.mobile.path.isPath( dataUrl ) ) {
+                               page = this.element.children( $.mobile.path.hashToSelector("#" + dataUrl) )
+                                       .attr( "data-" + this._getNs() + "url", dataUrl )
+                                       .jqmData( "url", dataUrl );
+                       }
+
+                       // If we failed to find a page in the DOM, check the URL to see if it
+                       // refers to the first page in the application. Also check to make sure
+                       // our cached-first-page is actually in the DOM. Some user deployed
+                       // apps are pruning the first page from the DOM for various reasons.
+                       // We check for this case here because we don't want a first-page with
+                       // an id falling through to the non-existent embedded page error case.
+                       if ( page.length === 0 &&
+                               $.mobile.path.isFirstPageUrl( fileUrl ) &&
+                               initialContent &&
+                               initialContent.parent().length ) {
+                               page = $( initialContent );
+                       }
+
+                       return page;
+               },
+
+               _getLoader: function() {
+                       return $.mobile.loading();
+               },
+
+               _showLoading: function( delay, theme, msg, textonly ) {
+                       // This configurable timeout allows cached pages a brief
+                       // delay to load without showing a message
+                       if ( this._loadMsg ) {
+                               return;
+                       }
+
+                       this._loadMsg = setTimeout($.proxy(function() {
+                               this._getLoader().loader( "show", theme, msg, textonly );
+                               this._loadMsg = 0;
+                       }, this), delay );
+               },
+
+               _hideLoading: function() {
+                       // Stop message show timer
+                       clearTimeout( this._loadMsg );
+                       this._loadMsg = 0;
+
+                       // Hide loading message
+                       this._getLoader().loader( "hide" );
+               },
+
+               _showError: function() {
+                       // make sure to remove the current loading message
+                       this._hideLoading();
+
+                       // show the error message
+                       this._showLoading( 0, $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true );
+
+                       // hide the error message after a delay
+                       // TODO configuration
+                       setTimeout( $.proxy(this, "_hideLoading"), 1500 );
+               },
+
+               _parse: function( html, fileUrl ) {
+                       // TODO consider allowing customization of this method. It's very JQM specific
+                       var page, all = $( "<div></div>" );
+
+                       //workaround to allow scripts to execute when included in page divs
+                       all.get( 0 ).innerHTML = html;
+
+                       page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first();
+
+                       //if page elem couldn't be found, create one and insert the body element's contents
+                       if ( !page.length ) {
+                               page = $( "<div data-" + this._getNs() + "role='page'>" +
+                                       ( html.split( /<\/?body[^>]*>/gmi )[1] || "" ) +
+                                       "</div>" );
+                       }
+
+                       // TODO tagging a page with external to make sure that embedded pages aren't
+                       // removed by the various page handling code is bad. Having page handling code
+                       // in many places is bad. Solutions post 1.0
+                       page.attr( "data-" + this._getNs() + "url", this._createDataUrl( fileUrl ) )
+                               .attr( "data-" + this._getNs() + "external-page", true );
+
+                       return page;
+               },
+
+               _setLoadedTitle: function( page, html ) {
+                       //page title regexp
+                       var newPageTitle = html.match( /<title[^>]*>([^<]*)/ ) && RegExp.$1;
+
+                       if ( newPageTitle && !page.jqmData("title") ) {
+                               newPageTitle = $( "<div>" + newPageTitle + "</div>" ).text();
+                               page.jqmData( "title", newPageTitle );
+                       }
+               },
+
+               _isRewritableBaseTag: function() {
+                       return $.mobile.dynamicBaseEnabled && !$.support.dynamicBaseTag;
+               },
+
+               _createDataUrl: function( absoluteUrl ) {
+                       return $.mobile.path.convertUrlToDataUrl( absoluteUrl );
+               },
+
+               _createFileUrl: function( absoluteUrl ) {
+                       return $.mobile.path.getFilePath( absoluteUrl );
+               },
+
+               _triggerWithDeprecated: function( name, data, page ) {
+                       var deprecatedEvent = $.Event( "page" + name ),
+                               newEvent = $.Event( this.widgetName + name );
+
+                       // DEPRECATED
+                       // trigger the old deprecated event on the page if it's provided
+                       ( page || this.element ).trigger( deprecatedEvent, data );
+
+                       // use the widget trigger method for the new content* event
+                       this._trigger( name, newEvent, data );
+
+                       return {
+                               deprecatedEvent: deprecatedEvent,
+                               event: newEvent
+                       };
+               },
+
+               // TODO it would be nice to split this up more but everything appears to be "one off"
+               //      or require ordering such that other bits are sprinkled in between parts that
+               //      could be abstracted out as a group
+               _loadSuccess: function( absUrl, triggerData, settings, deferred ) {
+                       var fileUrl = this._createFileUrl( absUrl );
+
+                       return $.proxy(function( html, textStatus, xhr ) {
+                               //pre-parse html to check for a data-url,
+                               //use it as the new fileUrl, base path, etc
+                               var content,
+
+                                       // TODO handle dialogs again
+                                       pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + this._getNs() + "role=[\"']?page[\"']?[^>]*>)" ),
+
+                                       dataUrlRegex = new RegExp( "\\bdata-" + this._getNs() + "url=[\"']?([^\"'>]*)[\"']?" );
+
+                               // data-url must be provided for the base tag so resource requests
+                               // can be directed to the correct url. loading into a temprorary
+                               // element makes these requests immediately
+                               if ( pageElemRegex.test( html ) &&
+                                       RegExp.$1 &&
+                                       dataUrlRegex.test( RegExp.$1 ) &&
+                                       RegExp.$1 ) {
+                                       fileUrl = $.mobile.path.getFilePath( $("<div>" + RegExp.$1 + "</div>").text() );
+
+                                       // We specify that, if a data-url attribute is given on the page div, its value
+                                       // must be given non-URL-encoded. However, in this part of the code, fileUrl is
+                                       // assumed to be URL-encoded, so we URL-encode the retrieved value here
+                                       fileUrl = this.window[ 0 ].encodeURIComponent( fileUrl );
+                               }
+
+                               //dont update the base tag if we are prefetching
+                               if ( settings.prefetch === undefined ) {
+                                       this._getBase().set( fileUrl );
+                               }
+
+                               content = this._parse( html, fileUrl );
+
+                               this._setLoadedTitle( content, html );
+
+                               // Add the content reference and xhr to our triggerData.
+                               triggerData.xhr = xhr;
+                               triggerData.textStatus = textStatus;
+
+                               // DEPRECATED
+                               triggerData.page = content;
+
+                               triggerData.content = content;
+
+                               triggerData.toPage = content;
+
+                               // If the default behavior is prevented, stop here!
+                               // Note that it is the responsibility of the listener/handler
+                               // that called preventDefault(), to resolve/reject the
+                               // deferred object within the triggerData.
+                               if ( this._triggerWithDeprecated( "load", triggerData ).event.isDefaultPrevented() ) {
+                                       return;
+                               }
+
+                               // rewrite src and href attrs to use a base url if the base tag won't work
+                               if ( this._isRewritableBaseTag() && content ) {
+                                       this._getBase().rewrite( fileUrl, content );
+                               }
+
+                               this._include( content, settings );
+
+                               // Remove loading message.
+                               if ( settings.showLoadMsg ) {
+                                       this._hideLoading();
+                               }
+
+                               deferred.resolve( absUrl, settings, content );
+                       }, this);
+               },
+
+               _loadDefaults: {
+                       type: "get",
+                       data: undefined,
+
+                       // DEPRECATED
+                       reloadPage: false,
+
+                       reload: false,
+
+                       // By default we rely on the role defined by the @data-role attribute.
+                       role: undefined,
+
+                       showLoadMsg: false,
+
+                       // This delay allows loads that pull from browser cache to
+                       // occur without showing the loading message.
+                       loadMsgDelay: 50
+               },
+
+               load: function( url, options ) {
+                       // This function uses deferred notifications to let callers
+                       // know when the content is done loading, or if an error has occurred.
+                       var deferred = ( options && options.deferred ) || $.Deferred(),
+
+                               // Examining the option "reloadPage" passed by the user is deprecated as of 1.4.0
+                               // and will be removed in 1.5.0.
+                               // Copy option "reloadPage" to "reload", but only if option "reload" is not present
+                               reloadOptionExtension =
+                                       ( ( options && options.reload === undefined &&
+                                               options.reloadPage !== undefined ) ?
+                                                       { reload: options.reloadPage } : {} ),
+
+                               // The default load options with overrides specified by the caller.
+                               settings = $.extend( {}, this._loadDefaults, options, reloadOptionExtension ),
+
+                               // The DOM element for the content after it has been loaded.
+                               content = null,
+
+                               // The absolute version of the URL passed into the function. This
+                               // version of the URL may contain dialog/subcontent params in it.
+                               absUrl = $.mobile.path.makeUrlAbsolute( url, this._findBaseWithDefault() ),
+                               fileUrl, dataUrl, pblEvent, triggerData;
+
+                       // If the caller provided data, and we're using "get" request,
+                       // append the data to the URL.
+                       if ( settings.data && settings.type === "get" ) {
+                               absUrl = $.mobile.path.addSearchParams( absUrl, settings.data );
+                               settings.data = undefined;
+                       }
+
+                       // If the caller is using a "post" request, reload must be true
+                       if ( settings.data && settings.type === "post" ) {
+                               settings.reload = true;
+                       }
+
+                       // The absolute version of the URL minus any dialog/subcontent params.
+                       // In otherwords the real URL of the content to be loaded.
+                       fileUrl = this._createFileUrl( absUrl );
+
+                       // The version of the Url actually stored in the data-url attribute of
+                       // the content. For embedded content, it is just the id of the page. For
+                       // content within the same domain as the document base, it is the site
+                       // relative path. For cross-domain content (Phone Gap only) the entire
+                       // absolute Url is used to load the content.
+                       dataUrl = this._createDataUrl( absUrl );
+
+                       content = this._find( absUrl );
+
+                       // If it isn't a reference to the first content and refers to missing
+                       // embedded content reject the deferred and return
+                       if ( content.length === 0 &&
+                               $.mobile.path.isEmbeddedPage(fileUrl) &&
+                               !$.mobile.path.isFirstPageUrl(fileUrl) ) {
+                               deferred.reject( absUrl, settings );
+                               return deferred.promise();
+                       }
+
+                       // Reset base to the default document base
+                       // TODO figure out why we doe this
+                       this._getBase().reset();
+
+                       // If the content we are interested in is already in the DOM,
+                       // and the caller did not indicate that we should force a
+                       // reload of the file, we are done. Resolve the deferrred so that
+                       // users can bind to .done on the promise
+                       if ( content.length && !settings.reload ) {
+                               this._enhance( content, settings.role );
+                               deferred.resolve( absUrl, settings, content );
+
+                               //if we are reloading the content make sure we update
+                               // the base if its not a prefetch
+                               if ( !settings.prefetch ) {
+                                       this._getBase().set(url);
+                               }
+
+                               return deferred.promise();
+                       }
+
+                       triggerData = {
+                               url: url,
+                               absUrl: absUrl,
+                               toPage: url,
+                               prevPage: options ? options.fromPage : undefined,
+                               dataUrl: dataUrl,
+                               deferred: deferred,
+                               options: settings
+                       };
+
+                       // Let listeners know we're about to load content.
+                       pblEvent = this._triggerWithDeprecated( "beforeload", triggerData );
+
+                       // If the default behavior is prevented, stop here!
+                       if ( pblEvent.deprecatedEvent.isDefaultPrevented() ||
+                               pblEvent.event.isDefaultPrevented() ) {
+                               return deferred.promise();
+                       }
+
+                       if ( settings.showLoadMsg ) {
+                               this._showLoading( settings.loadMsgDelay );
+                       }
+
+                       // Reset base to the default document base.
+                       // only reset if we are not prefetching
+                       if ( settings.prefetch === undefined ) {
+                               this._getBase().reset();
+                       }
+
+                       if ( !( $.mobile.allowCrossDomainPages ||
+                               $.mobile.path.isSameDomain($.mobile.path.documentUrl, absUrl ) ) ) {
+                               deferred.reject( absUrl, settings );
+                               return deferred.promise();
+                       }
+
+                       // Load the new content.
+                       $.ajax({
+                               url: fileUrl,
+                               type: settings.type,
+                               data: settings.data,
+                               contentType: settings.contentType,
+                               dataType: "html",
+                               success: this._loadSuccess( absUrl, triggerData, settings, deferred ),
+                               error: this._loadError( absUrl, triggerData, settings, deferred )
+                       });
+
+                       return deferred.promise();
+               },
+
+               _loadError: function( absUrl, triggerData, settings, deferred ) {
+                       return $.proxy(function( xhr, textStatus, errorThrown ) {
+                               //set base back to current path
+                               this._getBase().set( $.mobile.path.get() );
+
+                               // Add error info to our triggerData.
+                               triggerData.xhr = xhr;
+                               triggerData.textStatus = textStatus;
+                               triggerData.errorThrown = errorThrown;
+
+                               // Let listeners know the page load failed.
+                               var plfEvent = this._triggerWithDeprecated( "loadfailed", triggerData );
+
+                               // If the default behavior is prevented, stop here!
+                               // Note that it is the responsibility of the listener/handler
+                               // that called preventDefault(), to resolve/reject the
+                               // deferred object within the triggerData.
+                               if ( plfEvent.deprecatedEvent.isDefaultPrevented() ||
+                                       plfEvent.event.isDefaultPrevented() ) {
+                                       return;
+                               }
+
+                               // Remove loading message.
+                               if ( settings.showLoadMsg ) {
+                                       this._showError();
+                               }
+
+                               deferred.reject( absUrl, settings );
+                       }, this);
+               },
+
+               _getTransitionHandler: function( transition ) {
+                       transition = $.mobile._maybeDegradeTransition( transition );
+
+                       //find the transition handler for the specified transition. If there
+                       //isn't one in our transitionHandlers dictionary, use the default one.
+                       //call the handler immediately to kick-off the transition.
+                       return $.mobile.transitionHandlers[ transition ] || $.mobile.defaultTransitionHandler;
+               },
+
+               // TODO move into transition handlers?
+               _triggerCssTransitionEvents: function( to, from, prefix ) {
+                       var samePage = false;
+
+                       prefix = prefix || "";
+
+                       // TODO decide if these events should in fact be triggered on the container
+                       if ( from ) {
+
+                               //Check if this is a same page transition and tell the handler in page
+                               if( to[0] === from[0] ){
+                                       samePage = true;
+                               }
+
+                               //trigger before show/hide events
+                               // TODO deprecate nextPage in favor of next
+                               this._triggerWithDeprecated( prefix + "hide", {
+
+                                       // Deprecated in 1.4 remove in 1.5
+                                       nextPage: to,
+                                       toPage: to,
+                                       prevPage: from,
+                                       samePage: samePage
+                               }, from );
+                       }
+
+                       // TODO deprecate prevPage in favor of previous
+                       this._triggerWithDeprecated( prefix + "show", {
+                               prevPage: from || $( "" ),
+                               toPage: to
+                       }, to );
+               },
+
+               // TODO make private once change has been defined in the widget
+               _cssTransition: function( to, from, options ) {
+                       var transition = options.transition,
+                               reverse = options.reverse,
+                               deferred = options.deferred,
+                               TransitionHandler,
+                               promise;
+
+                       this._triggerCssTransitionEvents( to, from, "before" );
+
+                       // TODO put this in a binding to events *outside* the widget
+                       this._hideLoading();
+
+                       TransitionHandler = this._getTransitionHandler( transition );
+
+                       promise = ( new TransitionHandler( transition, reverse, to, from ) ).transition();
+
+                       promise.done( $.proxy( function() {
+                               this._triggerCssTransitionEvents( to, from );
+                       }, this ));
+
+                       // TODO temporary accomodation of argument deferred
+                       promise.done(function() {
+                               deferred.resolve.apply( deferred, arguments );
+                       });
+               },
+
+               _releaseTransitionLock: function() {
+                       //release transition lock so navigation is free again
+                       isPageTransitioning = false;
+                       if ( pageTransitionQueue.length > 0 ) {
+                               $.mobile.changePage.apply( null, pageTransitionQueue.pop() );
+                       }
+               },
+
+               _removeActiveLinkClass: function( force ) {
+                       //clear out the active button state
+                       $.mobile.removeActiveLinkClass( force );
+               },
+
+               _loadUrl: function( to, triggerData, settings ) {
+                       // preserve the original target as the dataUrl value will be
+                       // simplified eg, removing ui-state, and removing query params
+                       // from the hash this is so that users who want to use query
+                       // params have access to them in the event bindings for the page
+                       // life cycle See issue #5085
+                       settings.target = to;
+                       settings.deferred = $.Deferred();
+
+                       this.load( to, settings );
+
+                       settings.deferred.done($.proxy(function( url, options, content ) {
+                               isPageTransitioning = false;
+
+                               // store the original absolute url so that it can be provided
+                               // to events in the triggerData of the subsequent changePage call
+                               options.absUrl = triggerData.absUrl;
+
+                               this.transition( content, triggerData, options );
+                       }, this));
+
+                       settings.deferred.fail($.proxy(function(/* url, options */) {
+                               this._removeActiveLinkClass( true );
+                               this._releaseTransitionLock();
+                               this._triggerWithDeprecated( "changefailed", triggerData );
+                       }, this));
+               },
+
+               _triggerPageBeforeChange: function( to, triggerData, settings ) {
+                       var returnEvents;
+
+                       triggerData.prevPage = this.activePage;
+                       $.extend( triggerData, {
+                               toPage: to,
+                               options: settings
+                       });
+
+                       // NOTE: preserve the original target as the dataUrl value will be
+                       // simplified eg, removing ui-state, and removing query params from
+                       // the hash this is so that users who want to use query params have
+                       // access to them in the event bindings for the page life cycle
+                       // See issue #5085
+                       if ( $.type(to) === "string" ) {
+                               // if the toPage is a string simply convert it
+                               triggerData.absUrl = $.mobile.path.makeUrlAbsolute( to, this._findBaseWithDefault() );
+                       } else {
+                               // if the toPage is a jQuery object grab the absolute url stored
+                               // in the loadPage callback where it exists
+                               triggerData.absUrl = settings.absUrl;
+                       }
+
+                       // Let listeners know we're about to change the current page.
+                       returnEvents = this._triggerWithDeprecated( "beforechange", triggerData );
+
+                       // If the default behavior is prevented, stop here!
+                       if ( returnEvents.event.isDefaultPrevented() ||
+                               returnEvents.deprecatedEvent.isDefaultPrevented() ) {
+                               return false;
+                       }
+
+                       return true;
+               },
+
+               change: function( to, options ) {
+                       // If we are in the midst of a transition, queue the current request.
+                       // We'll call changePage() once we're done with the current transition
+                       // to service the request.
+                       if ( isPageTransitioning ) {
+                               pageTransitionQueue.unshift( arguments );
+                               return;
+                       }
+
+                       var settings = $.extend( {}, $.mobile.changePage.defaults, options ),
+                               triggerData = {};
+
+                       // Make sure we have a fromPage.
+                       settings.fromPage = settings.fromPage || this.activePage;
+
+                       // if the page beforechange default is prevented return early
+                       if ( !this._triggerPageBeforeChange(to, triggerData, settings) ) {
+                               return;
+                       }
+
+                       // We allow "pagebeforechange" observers to modify the to in
+                       // the trigger data to allow for redirects. Make sure our to is
+                       // updated. We also need to re-evaluate whether it is a string,
+                       // because an object can also be replaced by a string
+                       to = triggerData.toPage;
+
+                       // If the caller passed us a url, call loadPage()
+                       // to make sure it is loaded into the DOM. We'll listen
+                       // to the promise object it returns so we know when
+                       // it is done loading or if an error ocurred.
+                       if ( $.type(to) === "string" ) {
+                               // Set the isPageTransitioning flag to prevent any requests from
+                               // entering this method while we are in the midst of loading a page
+                               // or transitioning.
+                               isPageTransitioning = true;
+
+                               this._loadUrl( to, triggerData, settings );
+                       } else {
+                               this.transition( to, triggerData, settings );
+                       }
+               },
+
+               transition: function( toPage, triggerData, settings ) {
+                       var fromPage, url, pageUrl, fileUrl,
+                               active, activeIsInitialPage,
+                               historyDir, pageTitle, isDialog,
+                               alreadyThere, newPageTitle,
+                               params, cssTransitionDeferred,
+                               beforeTransition;
+
+                       // If we are in the midst of a transition, queue the current request.
+                       // We'll call changePage() once we're done with the current transition
+                       // to service the request.
+                       if ( isPageTransitioning ) {
+                               // make sure to only queue the to and settings values so the arguments
+                               // work with a call to the change method
+                               pageTransitionQueue.unshift( [toPage, settings] );
+                               return;
+                       }
+
+                       // DEPRECATED - this call only, in favor of the before transition
+                       // if the page beforechange default is prevented return early
+                       if ( !this._triggerPageBeforeChange(toPage, triggerData, settings) ) {
+                               return;
+                       }
+
+                       triggerData.prevPage = settings.fromPage;
+                       // if the (content|page)beforetransition default is prevented return early
+                       // Note, we have to check for both the deprecated and new events
+                       beforeTransition = this._triggerWithDeprecated( "beforetransition", triggerData );
+                       if (beforeTransition.deprecatedEvent.isDefaultPrevented() ||
+                               beforeTransition.event.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       // Set the isPageTransitioning flag to prevent any requests from
+                       // entering this method while we are in the midst of loading a page
+                       // or transitioning.
+                       isPageTransitioning = true;
+
+                       // If we are going to the first-page of the application, we need to make
+                       // sure settings.dataUrl is set to the application document url. This allows
+                       // us to avoid generating a document url with an id hash in the case where the
+                       // first-page of the document has an id attribute specified.
+                       if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) {
+                               settings.dataUrl = $.mobile.path.documentUrl.hrefNoHash;
+                       }
+
+                       // The caller passed us a real page DOM element. Update our
+                       // internal state and then trigger a transition to the page.
+                       fromPage = settings.fromPage;
+                       url = ( settings.dataUrl && $.mobile.path.convertUrlToDataUrl(settings.dataUrl) ) ||
+                               toPage.jqmData( "url" );
+
+                       // The pageUrl var is usually the same as url, except when url is obscured
+                       // as a dialog url. pageUrl always contains the file path
+                       pageUrl = url;
+                       fileUrl = $.mobile.path.getFilePath( url );
+                       active = $.mobile.navigate.history.getActive();
+                       activeIsInitialPage = $.mobile.navigate.history.activeIndex === 0;
+                       historyDir = 0;
+                       pageTitle = document.title;
+                       isDialog = ( settings.role === "dialog" ||
+                               toPage.jqmData( "role" ) === "dialog" ) &&
+                               toPage.jqmData( "dialog" ) !== true;
+
+                       // By default, we prevent changePage requests when the fromPage and toPage
+                       // are the same element, but folks that generate content
+                       // manually/dynamically and reuse pages want to be able to transition to
+                       // the same page. To allow this, they will need to change the default
+                       // value of allowSamePageTransition to true, *OR*, pass it in as an
+                       // option when they manually call changePage(). It should be noted that
+                       // our default transition animations assume that the formPage and toPage
+                       // are different elements, so they may behave unexpectedly. It is up to
+                       // the developer that turns on the allowSamePageTransitiona option to
+                       // either turn off transition animations, or make sure that an appropriate
+                       // animation transition is used.
+                       if ( fromPage && fromPage[0] === toPage[0] &&
+                               !settings.allowSamePageTransition ) {
+
+                               isPageTransitioning = false;
+                               this._triggerWithDeprecated( "transition", triggerData );
+                               this._triggerWithDeprecated( "change", triggerData );
+
+                               // Even if there is no page change to be done, we should keep the
+                               // urlHistory in sync with the hash changes
+                               if ( settings.fromHashChange ) {
+                                       $.mobile.navigate.history.direct({ url: url });
+                               }
+
+                               return;
+                       }
+
+                       // We need to make sure the page we are given has already been enhanced.
+                       toPage.page({ role: settings.role });
+
+                       // If the changePage request was sent from a hashChange event, check to
+                       // see if the page is already within the urlHistory stack. If so, we'll
+                       // assume the user hit the forward/back button and will try to match the
+                       // transition accordingly.
+                       if ( settings.fromHashChange ) {
+                               historyDir = settings.direction === "back" ? -1 : 1;
+                       }
+
+                       // Kill the keyboard.
+                       // XXX_jblas: We need to stop crawling the entire document to kill focus.
+                       //            Instead, we should be tracking focus with a delegate()
+                       //            handler so we already have the element in hand at this
+                       //            point.
+                       // Wrap this in a try/catch block since IE9 throw "Unspecified error" if
+                       // document.activeElement is undefined when we are in an IFrame.
+                       try {
+                               if ( document.activeElement &&
+                                       document.activeElement.nodeName.toLowerCase() !== "body" ) {
+
+                                       $( document.activeElement ).blur();
+                               } else {
+                                       $( "input:focus, textarea:focus, select:focus" ).blur();
+                               }
+                       } catch( e ) {}
+
+                       // Record whether we are at a place in history where a dialog used to be -
+                       // if so, do not add a new history entry and do not change the hash either
+                       alreadyThere = false;
+
+                       // If we're displaying the page as a dialog, we don't want the url
+                       // for the dialog content to be used in the hash. Instead, we want
+                       // to append the dialogHashKey to the url of the current page.
+                       if ( isDialog && active ) {
+                               // on the initial page load active.url is undefined and in that case
+                               // should be an empty string. Moving the undefined -> empty string back
+                               // into urlHistory.addNew seemed imprudent given undefined better
+                               // represents the url state
+
+                               // If we are at a place in history that once belonged to a dialog, reuse
+                               // this state without adding to urlHistory and without modifying the
+                               // hash. However, if a dialog is already displayed at this point, and
+                               // we're about to display another dialog, then we must add another hash
+                               // and history entry on top so that one may navigate back to the
+                               // original dialog
+                               if ( active.url &&
+                                       active.url.indexOf( $.mobile.dialogHashKey ) > -1 &&
+                                       this.activePage &&
+                                       !this.activePage.hasClass( "ui-dialog" ) &&
+                                       $.mobile.navigate.history.activeIndex > 0 ) {
+
+                                       settings.changeHash = false;
+                                       alreadyThere = true;
+                               }
+
+                               // Normally, we tack on a dialog hash key, but if this is the location
+                               // of a stale dialog, we reuse the URL from the entry
+                               url = ( active.url || "" );
+
+                               // account for absolute urls instead of just relative urls use as hashes
+                               if ( !alreadyThere && url.indexOf("#") > -1 ) {
+                                       url += $.mobile.dialogHashKey;
+                               } else {
+                                       url += "#" + $.mobile.dialogHashKey;
+                               }
+                       }
+
+                       // if title element wasn't found, try the page div data attr too
+                       // If this is a deep-link or a reload ( active === undefined ) then just
+                       // use pageTitle
+                       newPageTitle = ( !active ) ? pageTitle : toPage.jqmData( "title" ) ||
+                               toPage.children( ":jqmData(role='header')" ).find( ".ui-title" ).text();
+                       if ( !!newPageTitle && pageTitle === document.title ) {
+                               pageTitle = newPageTitle;
+                       }
+                       if ( !toPage.jqmData( "title" ) ) {
+                               toPage.jqmData( "title", pageTitle );
+                       }
+
+                       // Make sure we have a transition defined.
+                       settings.transition = settings.transition ||
+                               ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) ||
+                               ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition );
+
+                       //add page to history stack if it's not back or forward
+                       if ( !historyDir && alreadyThere ) {
+                               $.mobile.navigate.history.getActive().pageUrl = pageUrl;
+                       }
+
+                       // Set the location hash.
+                       if ( url && !settings.fromHashChange ) {
+
+                               // rebuilding the hash here since we loose it earlier on
+                               // TODO preserve the originally passed in path
+                               if ( !$.mobile.path.isPath( url ) && url.indexOf( "#" ) < 0 ) {
+                                       url = "#" + url;
+                               }
+
+                               // TODO the property names here are just silly
+                               params = {
+                                       transition: settings.transition,
+                                       title: pageTitle,
+                                       pageUrl: pageUrl,
+                                       role: settings.role
+                               };
+
+                               if ( settings.changeHash !== false && $.mobile.hashListeningEnabled ) {
+                                       $.mobile.navigate( this.window[ 0 ].encodeURI( url ), params, true);
+                               } else if ( toPage[ 0 ] !== $.mobile.firstPage[ 0 ] ) {
+                                       $.mobile.navigate.history.add( url, params );
+                               }
+                       }
+
+                       //set page title
+                       document.title = pageTitle;
+
+                       //set "toPage" as activePage deprecated in 1.4 remove in 1.5
+                       $.mobile.activePage = toPage;
+
+                       //new way to handle activePage
+                       this.activePage = toPage;
+
+                       // If we're navigating back in the URL history, set reverse accordingly.
+                       settings.reverse = settings.reverse || historyDir < 0;
+
+                       cssTransitionDeferred = $.Deferred();
+
+                       this._cssTransition(toPage, fromPage, {
+                               transition: settings.transition,
+                               reverse: settings.reverse,
+                               deferred: cssTransitionDeferred
+                       });
+
+                       cssTransitionDeferred.done($.proxy(function( name, reverse, $to, $from, alreadyFocused ) {
+                               $.mobile.removeActiveLinkClass();
+
+                               //if there's a duplicateCachedPage, remove it from the DOM now that it's hidden
+                               if ( settings.duplicateCachedPage ) {
+                                       settings.duplicateCachedPage.remove();
+                               }
+
+                               // despite visibility: hidden addresses issue #2965
+                               // https://github.com/jquery/jquery-mobile/issues/2965
+                               if ( !alreadyFocused ) {
+                                       $.mobile.focusPage( toPage );
+                               }
+
+                               this._releaseTransitionLock();
+                               this._triggerWithDeprecated( "transition", triggerData );
+                               this._triggerWithDeprecated( "change", triggerData );
+                       }, this));
+               },
+
+               // determine the current base url
+               _findBaseWithDefault: function() {
+                       var closestBase = ( this.activePage &&
+                       $.mobile.getClosestBaseUrl( this.activePage ) );
+               return closestBase || $.mobile.path.documentBase.hrefNoHash;
+               }
+       });
+
+       // The following handlers should be bound after mobileinit has been triggered
+       // the following deferred is resolved in the init file
+       $.mobile.navreadyDeferred = $.Deferred();
+
+       //these variables make all page containers use the same queue and only navigate one at a time
+       // queue to hold simultanious page transitions
+       var pageTransitionQueue = [],
+
+               // indicates whether or not page is in process of transitioning
+               isPageTransitioning = false;
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+               // resolved on domready
+       var domreadyDeferred = $.Deferred(),
+
+               // resolved and nulled on window.load()
+               loadDeferred = $.Deferred(),
+
+               // function that resolves the above deferred
+               pageIsFullyLoaded = function() {
+
+                       // Resolve and null the deferred
+                       loadDeferred.resolve();
+                       loadDeferred = null;
+               },
+
+               documentUrl = $.mobile.path.documentUrl,
+
+               // used to track last vclicked element to make sure its value is added to form data
+               $lastVClicked = null;
+
+       /* Event Bindings - hashchange, submit, and click */
+       function findClosestLink( ele ) {
+               while ( ele ) {
+                       // Look for the closest element with a nodeName of "a".
+                       // Note that we are checking if we have a valid nodeName
+                       // before attempting to access it. This is because the
+                       // node we get called with could have originated from within
+                       // an embedded SVG document where some symbol instance elements
+                       // don't have nodeName defined on them, or strings are of type
+                       // SVGAnimatedString.
+                       if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() === "a" ) {
+                               break;
+                       }
+                       ele = ele.parentNode;
+               }
+               return ele;
+       }
+
+       $.mobile.loadPage = function( url, opts ) {
+               var container;
+
+               opts = opts || {};
+               container = ( opts.pageContainer || $.mobile.pageContainer );
+
+               // create the deferred that will be supplied to loadPage callers
+               // and resolved by the content widget's load method
+               opts.deferred = $.Deferred();
+
+               // Preferring to allow exceptions for uninitialized opts.pageContainer
+               // widgets so we know if we need to force init here for users
+               container.pagecontainer( "load", url, opts );
+
+               // provide the deferred
+               return opts.deferred.promise();
+       };
+
+       //define vars for interal use
+
+       /* internal utility functions */
+
+       // NOTE Issue #4950 Android phonegap doesn't navigate back properly
+       //      when a full page refresh has taken place. It appears that hashchange
+       //      and replacestate history alterations work fine but we need to support
+       //      both forms of history traversal in our code that uses backward history
+       //      movement
+       $.mobile.back = function() {
+               var nav = window.navigator;
+
+               // if the setting is on and the navigator object is
+               // available use the phonegap navigation capability
+               if ( this.phonegapNavigationEnabled &&
+                       nav &&
+                       nav.app &&
+                       nav.app.backHistory ) {
+                       nav.app.backHistory();
+               } else {
+                       $.mobile.pageContainer.pagecontainer( "back" );
+               }
+       };
+
+       // Direct focus to the page title, or otherwise first focusable element
+       $.mobile.focusPage = function ( page ) {
+               var autofocus = page.find( "[autofocus]" ),
+                       pageTitle = page.find( ".ui-title:eq(0)" );
+
+               if ( autofocus.length ) {
+                       autofocus.focus();
+                       return;
+               }
+
+               if ( pageTitle.length ) {
+                       pageTitle.focus();
+               } else{
+                       page.focus();
+               }
+       };
+
+       // No-op implementation of transition degradation
+       $.mobile._maybeDegradeTransition = $.mobile._maybeDegradeTransition || function( transition ) {
+               return transition;
+       };
+
+       // Exposed $.mobile methods
+
+       $.mobile.changePage = function( to, options ) {
+               $.mobile.pageContainer.pagecontainer( "change", to, options );
+       };
+
+       $.mobile.changePage.defaults = {
+               transition: undefined,
+               reverse: false,
+               changeHash: true,
+               fromHashChange: false,
+               role: undefined, // By default we rely on the role defined by the @data-role attribute.
+               duplicateCachedPage: undefined,
+               pageContainer: undefined,
+               showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage
+               dataUrl: undefined,
+               fromPage: undefined,
+               allowSamePageTransition: false
+       };
+
+       $.mobile._registerInternalEvents = function() {
+               var getAjaxFormData = function( $form, calculateOnly ) {
+                       var url, ret = true, formData, vclickedName, method;
+                       if ( !$.mobile.ajaxEnabled ||
+                                       // test that the form is, itself, ajax false
+                                       $form.is( ":jqmData(ajax='false')" ) ||
+                                       // test that $.mobile.ignoreContentEnabled is set and
+                                       // the form or one of it's parents is ajax=false
+                                       !$form.jqmHijackable().length ||
+                                       $form.attr( "target" ) ) {
+                               return false;
+                       }
+
+                       url = ( $lastVClicked && $lastVClicked.attr( "formaction" ) ) ||
+                               $form.attr( "action" );
+                       method = ( $form.attr( "method" ) || "get" ).toLowerCase();
+
+                       // If no action is specified, browsers default to using the
+                       // URL of the document containing the form. Since we dynamically
+                       // pull in pages from external documents, the form should submit
+                       // to the URL for the source document of the page containing
+                       // the form.
+                       if ( !url ) {
+                               // Get the @data-url for the page containing the form.
+                               url = $.mobile.getClosestBaseUrl( $form );
+
+                               // NOTE: If the method is "get", we need to strip off the query string
+                               // because it will get replaced with the new form data. See issue #5710.
+                               if ( method === "get" ) {
+                                       url = $.mobile.path.parseUrl( url ).hrefNoSearch;
+                               }
+
+                               if ( url === $.mobile.path.documentBase.hrefNoHash ) {
+                                       // The url we got back matches the document base,
+                                       // which means the page must be an internal/embedded page,
+                                       // so default to using the actual document url as a browser
+                                       // would.
+                                       url = documentUrl.hrefNoSearch;
+                               }
+                       }
+
+                       url = $.mobile.path.makeUrlAbsolute(  url, $.mobile.getClosestBaseUrl( $form ) );
+
+                       if ( ( $.mobile.path.isExternal( url ) && !$.mobile.path.isPermittedCrossDomainRequest( documentUrl, url ) ) ) {
+                               return false;
+                       }
+
+                       if ( !calculateOnly ) {
+                               formData = $form.serializeArray();
+
+                               if ( $lastVClicked && $lastVClicked[ 0 ].form === $form[ 0 ] ) {
+                                       vclickedName = $lastVClicked.attr( "name" );
+                                       if ( vclickedName ) {
+                                               // Make sure the last clicked element is included in the form
+                                               $.each( formData, function( key, value ) {
+                                                       if ( value.name === vclickedName ) {
+                                                               // Unset vclickedName - we've found it in the serialized data already
+                                                               vclickedName = "";
+                                                               return false;
+                                                       }
+                                               });
+                                               if ( vclickedName ) {
+                                                       formData.push( { name: vclickedName, value: $lastVClicked.attr( "value" ) } );
+                                               }
+                                       }
+                               }
+
+                               ret = {
+                                       url: url,
+                                       options: {
+                                               type:           method,
+                                               data:           $.param( formData ),
+                                               transition:     $form.jqmData( "transition" ),
+                                               reverse:        $form.jqmData( "direction" ) === "reverse",
+                                               reloadPage:     true
+                                       }
+                               };
+                       }
+
+                       return ret;
+               };
+
+               //bind to form submit events, handle with Ajax
+               $.mobile.document.delegate( "form", "submit", function( event ) {
+                       var formData;
+
+                       if ( !event.isDefaultPrevented() ) {
+                               formData = getAjaxFormData( $( this ) );
+                               if ( formData ) {
+                                       $.mobile.changePage( formData.url, formData.options );
+                                       event.preventDefault();
+                               }
+                       }
+               });
+
+               //add active state on vclick
+               $.mobile.document.bind( "vclick", function( event ) {
+                       var $btn, btnEls, target = event.target, needClosest = false;
+                       // if this isn't a left click we don't care. Its important to note
+                       // that when the virtual event is generated it will create the which attr
+                       if ( event.which > 1 || !$.mobile.linkBindingEnabled ) {
+                               return;
+                       }
+
+                       // Record that this element was clicked, in case we need it for correct
+                       // form submission during the "submit" handler above
+                       $lastVClicked = $( target );
+
+                       // Try to find a target element to which the active class will be applied
+                       if ( $.data( target, "mobile-button" ) ) {
+                               // If the form will not be submitted via AJAX, do not add active class
+                               if ( !getAjaxFormData( $( target ).closest( "form" ), true ) ) {
+                                       return;
+                               }
+                               // We will apply the active state to this button widget - the parent
+                               // of the input that was clicked will have the associated data
+                               if ( target.parentNode ) {
+                                       target = target.parentNode;
+                               }
+                       } else {
+                               target = findClosestLink( target );
+                               if ( !( target && $.mobile.path.parseUrl( target.getAttribute( "href" ) || "#" ).hash !== "#" ) ) {
+                                       return;
+                               }
+
+                               // TODO teach $.mobile.hijackable to operate on raw dom elements so the
+                               // link wrapping can be avoided
+                               if ( !$( target ).jqmHijackable().length ) {
+                                       return;
+                               }
+                       }
+
+                       // Avoid calling .closest by using the data set during .buttonMarkup()
+                       // List items have the button data in the parent of the element clicked
+                       if ( !!~target.className.indexOf( "ui-link-inherit" ) ) {
+                               if ( target.parentNode ) {
+                                       btnEls = $.data( target.parentNode, "buttonElements" );
+                               }
+                       // Otherwise, look for the data on the target itself
+                       } else {
+                               btnEls = $.data( target, "buttonElements" );
+                       }
+                       // If found, grab the button's outer element
+                       if ( btnEls ) {
+                               target = btnEls.outer;
+                       } else {
+                               needClosest = true;
+                       }
+
+                       $btn = $( target );
+                       // If the outer element wasn't found by the our heuristics, use .closest()
+                       if ( needClosest ) {
+                               $btn = $btn.closest( ".ui-btn" );
+                       }
+
+                       if ( $btn.length > 0 &&
+                               !( $btn.hasClass( "ui-state-disabled" ||
+
+                                       // DEPRECATED as of 1.4.0 - remove after 1.4.0 release
+                                       // only ui-state-disabled should be present thereafter
+                                       $btn.hasClass( "ui-disabled" ) ) ) ) {
+                               $.mobile.removeActiveLinkClass( true );
+                               $.mobile.activeClickedLink = $btn;
+                               $.mobile.activeClickedLink.addClass( $.mobile.activeBtnClass );
+                       }
+               });
+
+               // click routing - direct to HTTP or Ajax, accordingly
+               $.mobile.document.bind( "click", function( event ) {
+                       if ( !$.mobile.linkBindingEnabled || event.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       var link = findClosestLink( event.target ),
+                               $link = $( link ),
+
+                               //remove active link class if external (then it won't be there if you come back)
+                               httpCleanup = function() {
+                                       window.setTimeout(function() { $.mobile.removeActiveLinkClass( true ); }, 200 );
+                               },
+                               baseUrl, href,
+                               useDefaultUrlHandling, isExternal,
+                               transition, reverse, role;
+
+                       // If a button was clicked, clean up the active class added by vclick above
+                       if ( $.mobile.activeClickedLink &&
+                               $.mobile.activeClickedLink[ 0 ] === event.target.parentNode ) {
+                               httpCleanup();
+                       }
+
+                       // If there is no link associated with the click or its not a left
+                       // click we want to ignore the click
+                       // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping
+                       // can be avoided
+                       if ( !link || event.which > 1 || !$link.jqmHijackable().length ) {
+                               return;
+                       }
+
+                       //if there's a data-rel=back attr, go back in history
+                       if ( $link.is( ":jqmData(rel='back')" ) ) {
+                               $.mobile.back();
+                               return false;
+                       }
+
+                       baseUrl = $.mobile.getClosestBaseUrl( $link );
+
+                       //get href, if defined, otherwise default to empty hash
+                       href = $.mobile.path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl );
+
+                       //if ajax is disabled, exit early
+                       if ( !$.mobile.ajaxEnabled && !$.mobile.path.isEmbeddedPage( href ) ) {
+                               httpCleanup();
+                               //use default click handling
+                               return;
+                       }
+
+                       // XXX_jblas: Ideally links to application pages should be specified as
+                       //            an url to the application document with a hash that is either
+                       //            the site relative path or id to the page. But some of the
+                       //            internal code that dynamically generates sub-pages for nested
+                       //            lists and select dialogs, just write a hash in the link they
+                       //            create. This means the actual URL path is based on whatever
+                       //            the current value of the base tag is at the time this code
+                       //            is called.
+                       if ( href.search( "#" ) !== -1 &&
+                               !( $.mobile.path.isExternal( href ) && $.mobile.path.isAbsoluteUrl( href ) ) ) {
+
+                               href = href.replace( /[^#]*#/, "" );
+                               if ( !href ) {
+                                       //link was an empty hash meant purely
+                                       //for interaction, so we ignore it.
+                                       event.preventDefault();
+                                       return;
+                               } else if ( $.mobile.path.isPath( href ) ) {
+                                       //we have apath so make it the href we want to load.
+                                       href = $.mobile.path.makeUrlAbsolute( href, baseUrl );
+                               } else {
+                                       //we have a simple id so use the documentUrl as its base.
+                                       href = $.mobile.path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash );
+                               }
+                       }
+
+                       // Should we handle this link, or let the browser deal with it?
+                       useDefaultUrlHandling = $link.is( "[rel='external']" ) || $link.is( ":jqmData(ajax='false')" ) || $link.is( "[target]" );
+
+                       // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR
+                       // requests if the document doing the request was loaded via the file:// protocol.
+                       // This is usually to allow the application to "phone home" and fetch app specific
+                       // data. We normally let the browser handle external/cross-domain urls, but if the
+                       // allowCrossDomainPages option is true, we will allow cross-domain http/https
+                       // requests to go through our page loading logic.
+
+                       //check for protocol or rel and its not an embedded page
+                       //TODO overlap in logic from isExternal, rel=external check should be
+                       //     moved into more comprehensive isExternalLink
+                       isExternal = useDefaultUrlHandling || ( $.mobile.path.isExternal( href ) && !$.mobile.path.isPermittedCrossDomainRequest( documentUrl, href ) );
+
+                       if ( isExternal ) {
+                               httpCleanup();
+                               //use default click handling
+                               return;
+                       }
+
+                       //use ajax
+                       transition = $link.jqmData( "transition" );
+                       reverse = $link.jqmData( "direction" ) === "reverse" ||
+                                               // deprecated - remove by 1.0
+                                               $link.jqmData( "back" );
+
+                       //this may need to be more specific as we use data-rel more
+                       role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined;
+
+                       $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role, link: $link } );
+                       event.preventDefault();
+               });
+
+               //prefetch pages when anchors with data-prefetch are encountered
+               $.mobile.document.delegate( ".ui-page", "pageshow.prefetch", function() {
+                       var urls = [];
+                       $( this ).find( "a:jqmData(prefetch)" ).each(function() {
+                               var $link = $( this ),
+                                       url = $link.attr( "href" );
+
+                               if ( url && $.inArray( url, urls ) === -1 ) {
+                                       urls.push( url );
+
+                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ),prefetch: true } );
+                               }
+                       });
+               });
+
+               // TODO ensure that the navigate binding in the content widget happens at the right time
+               $.mobile.pageContainer.pagecontainer();
+
+               //set page min-heights to be device specific
+               $.mobile.document.bind( "pageshow", function() {
+
+                       // We need to wait for window.load to make sure that styles have already been rendered,
+                       // otherwise heights of external toolbars will have the wrong value
+                       if ( loadDeferred ) {
+                               loadDeferred.done( $.mobile.resetActivePageHeight );
+                       } else {
+                               $.mobile.resetActivePageHeight();
+                       }
+               });
+               $.mobile.window.bind( "throttledresize", $.mobile.resetActivePageHeight );
+
+       };//navreadyDeferred done callback
+
+       $( function() { domreadyDeferred.resolve(); } );
+
+       // Account for the possibility that the load event has already fired
+       if ( document.readyState === "complete" ) {
+               pageIsFullyLoaded();
+       } else {
+               $.mobile.window.load( pageIsFullyLoaded );
+       }
+
+       $.when( domreadyDeferred, $.mobile.navreadyDeferred ).done( function() { $.mobile._registerInternalEvents(); } );
+})( jQuery );
+
+
+(function( $, window, undefined ) {
+
+       // TODO remove direct references to $.mobile and properties, we should
+       //      favor injection with params to the constructor
+       $.mobile.Transition = function() {
+               this.init.apply( this, arguments );
+       };
+
+       $.extend($.mobile.Transition.prototype, {
+               toPreClass: " ui-page-pre-in",
+
+               init: function( name, reverse, $to, $from ) {
+                       $.extend(this, {
+                               name: name,
+                               reverse: reverse,
+                               $to: $to,
+                               $from: $from,
+                               deferred: new $.Deferred()
+                       });
+               },
+
+               cleanFrom: function() {
+                       this.$from
+                               .removeClass( $.mobile.activePageClass + " out in reverse " + this.name )
+                               .height( "" );
+               },
+
+               // NOTE overridden by child object prototypes, noop'd here as defaults
+               beforeDoneIn: function() {},
+               beforeDoneOut: function() {},
+               beforeStartOut: function() {},
+
+               doneIn: function() {
+                       this.beforeDoneIn();
+
+                       this.$to.removeClass( "out in reverse " + this.name ).height( "" );
+
+                       this.toggleViewportClass();
+
+                       // In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition
+                       // This ensures we jump to that spot after the fact, if we aren't there already.
+                       if ( $.mobile.window.scrollTop() !== this.toScroll ) {
+                               this.scrollPage();
+                       }
+                       if ( !this.sequential ) {
+                               this.$to.addClass( $.mobile.activePageClass );
+                       }
+                       this.deferred.resolve( this.name, this.reverse, this.$to, this.$from, true );
+               },
+
+               doneOut: function( screenHeight, reverseClass, none, preventFocus ) {
+                       this.beforeDoneOut();
+                       this.startIn( screenHeight, reverseClass, none, preventFocus );
+               },
+
+               hideIn: function( callback ) {
+                       // Prevent flickering in phonegap container: see comments at #4024 regarding iOS
+                       this.$to.css( "z-index", -10 );
+                       callback.call( this );
+                       this.$to.css( "z-index", "" );
+               },
+
+               scrollPage: function() {
+                       // By using scrollTo instead of silentScroll, we can keep things better in order
+                       // Just to be precautios, disable scrollstart listening like silentScroll would
+                       $.event.special.scrollstart.enabled = false;
+                       //if we are hiding the url bar or the page was previously scrolled scroll to hide or return to position
+                       if ( $.mobile.hideUrlBar || this.toScroll !== $.mobile.defaultHomeScroll ) {
+                               window.scrollTo( 0, this.toScroll );
+                       }
+
+                       // reenable scrollstart listening like silentScroll would
+                       setTimeout( function() {
+                               $.event.special.scrollstart.enabled = true;
+                       }, 150 );
+               },
+
+               startIn: function( screenHeight, reverseClass, none, preventFocus ) {
+                       this.hideIn(function() {
+                               this.$to.addClass( $.mobile.activePageClass + this.toPreClass );
+
+                               // Send focus to page as it is now display: block
+                               if ( !preventFocus ) {
+                                       $.mobile.focusPage( this.$to );
+                               }
+
+                               // Set to page height
+                               this.$to.height( screenHeight + this.toScroll );
+
+                if ( !none ) {
+                    this.scrollPage();
+                }
+                       });
+
+                       this.$to
+                               .removeClass( this.toPreClass )
+                               .addClass( this.name + " in " + reverseClass );
+
+                       if ( !none ) {
+                               this.$to.animationComplete( $.proxy(function() {
+                                       this.doneIn();
+                               }, this ));
+                       } else {
+                               this.doneIn();
+                       }
+
+               },
+
+               startOut: function( screenHeight, reverseClass, none ) {
+                       this.beforeStartOut( screenHeight, reverseClass, none );
+
+                       // Set the from page's height and start it transitioning out
+                       // Note: setting an explicit height helps eliminate tiling in the transitions
+                       this.$from
+                               .height( screenHeight + $.mobile.window.scrollTop() )
+                               .addClass( this.name + " out" + reverseClass );
+               },
+
+               toggleViewportClass: function() {
+                       $.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + this.name );
+               },
+
+               transition: function() {
+                       // NOTE many of these could be calculated/recorded in the constructor, it's my
+                       //      opinion that binding them as late as possible has value with regards to
+                       //      better transitions with fewer bugs. Ie, it's not guaranteed that the
+                       //      object will be created and transition will be run immediately after as
+                       //      it is today. So we wait until transition is invoked to gather the following
+                       var none,
+                               reverseClass = this.reverse ? " reverse" : "",
+                               screenHeight = $.mobile.getScreenHeight(),
+                               maxTransitionOverride = $.mobile.maxTransitionWidth !== false &&
+                                       $.mobile.window.width() > $.mobile.maxTransitionWidth;
+
+                       this.toScroll = $.mobile.navigate.history.getActive().lastScroll || $.mobile.defaultHomeScroll;
+
+                       none = !$.support.cssTransitions || !$.support.cssAnimations ||
+                               maxTransitionOverride || !this.name || this.name === "none" ||
+                               Math.max( $.mobile.window.scrollTop(), this.toScroll ) >
+                                       $.mobile.getMaxScrollForTransition();
+
+                       this.toggleViewportClass();
+
+                       if ( this.$from && !none ) {
+                               this.startOut( screenHeight, reverseClass, none );
+                       } else {
+                               this.doneOut( screenHeight, reverseClass, none, true );
+                       }
+
+                       return this.deferred.promise();
+               }
+       });
+})( jQuery, this );
+
+
+(function( $ ) {
+
+       $.mobile.SerialTransition = function() {
+               this.init.apply(this, arguments);
+       };
+
+       $.extend($.mobile.SerialTransition.prototype, $.mobile.Transition.prototype, {
+               sequential: true,
+
+               beforeDoneOut: function() {
+                       if ( this.$from ) {
+                               this.cleanFrom();
+                       }
+               },
+
+               beforeStartOut: function( screenHeight, reverseClass, none ) {
+                       this.$from.animationComplete($.proxy(function() {
+                               this.doneOut( screenHeight, reverseClass, none );
+                       }, this ));
+               }
+       });
+
+})( jQuery );
+
+
+(function( $ ) {
+
+       $.mobile.ConcurrentTransition = function() {
+               this.init.apply(this, arguments);
+       };
+
+       $.extend($.mobile.ConcurrentTransition.prototype, $.mobile.Transition.prototype, {
+               sequential: false,
+
+               beforeDoneIn: function() {
+                       if ( this.$from ) {
+                               this.cleanFrom();
+                       }
+               },
+
+               beforeStartOut: function( screenHeight, reverseClass, none ) {
+                       this.doneOut( screenHeight, reverseClass, none );
+               }
+       });
+
+})( jQuery );
+
+
+(function( $ ) {
+
+       // generate the handlers from the above
+       var defaultGetMaxScrollForTransition = function() {
+               return $.mobile.getScreenHeight() * 3;
+       };
+
+       //transition handler dictionary for 3rd party transitions
+       $.mobile.transitionHandlers = {
+               "sequential": $.mobile.SerialTransition,
+               "simultaneous": $.mobile.ConcurrentTransition
+       };
+
+       // Make our transition handler the public default.
+       $.mobile.defaultTransitionHandler = $.mobile.transitionHandlers.sequential;
+
+       $.mobile.transitionFallbacks = {};
+
+       // If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified
+       $.mobile._maybeDegradeTransition = function( transition ) {
+               if ( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ) {
+                       transition = $.mobile.transitionFallbacks[ transition ];
+               }
+
+               return transition;
+       };
+
+       // Set the getMaxScrollForTransition to default if no implementation was set by user
+       $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defaultGetMaxScrollForTransition;
+
+})( jQuery );
+
+/*
+* fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.flip = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.flow = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.pop = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+// Use the simultaneous transitions handler for slide transitions
+$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous;
+
+// Set the slide transitions's fallback to "fade"
+$.mobile.transitionFallbacks.slide = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.slidedown = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slidefade in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+// Set the slide transitions's fallback to "fade"
+$.mobile.transitionFallbacks.slidefade = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.slideup = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.turn = "fade";
+
+})( jQuery, this );
+
+
+(function( $, undefined ) {
+
+$.mobile.degradeInputs = {
+       color: false,
+       date: false,
+       datetime: false,
+       "datetime-local": false,
+       email: false,
+       month: false,
+       number: false,
+       range: "number",
+       search: "text",
+       tel: false,
+       time: false,
+       url: false,
+       week: false
+};
+// Backcompat remove in 1.5
+$.mobile.page.prototype.options.degradeInputs = $.mobile.degradeInputs;
+
+// Auto self-init widgets
+$.mobile.degradeInputsWithin = function( target ) {
+
+       target = $( target );
+
+       // Degrade inputs to avoid poorly implemented native functionality
+       target.find( "input" ).not( $.mobile.page.prototype.keepNativeSelector() ).each(function() {
+               var element = $( this ),
+                       type = this.getAttribute( "type" ),
+                       optType = $.mobile.degradeInputs[ type ] || "text",
+                       html, hasType, findstr, repstr;
+
+               if ( $.mobile.degradeInputs[ type ] ) {
+                       html = $( "<div>" ).html( element.clone() ).html();
+                       // In IE browsers, the type sometimes doesn't exist in the cloned markup, so we replace the closing tag instead
+                       hasType = html.indexOf( " type=" ) > -1;
+                       findstr = hasType ? /\s+type=["']?\w+['"]?/ : /\/?>/;
+                       repstr = " type=\"" + optType + "\" data-" + $.mobile.ns + "type=\"" + type + "\"" + ( hasType ? "" : ">" );
+
+                       element.replaceWith( html.replace( findstr, repstr ) );
+               }
+       });
+
+};
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+
+$.widget( "mobile.page", $.mobile.page, {
+       options: {
+
+               // Accepts left, right and none
+               closeBtn: "left",
+               closeBtnText: "Close",
+               overlayTheme: "a",
+               corners: true,
+               dialog: false
+       },
+
+       _create: function() {
+               this._super();
+               if ( this.options.dialog ) {
+
+                       $.extend( this, {
+                               _inner: this.element.children(),
+                               _headerCloseButton: null
+                       });
+
+                       if ( !this.options.enhanced ) {
+                               this._setCloseBtn( this.options.closeBtn );
+                       }
+               }
+       },
+
+       _enhance: function() {
+               this._super();
+
+               // Class the markup for dialog styling and wrap interior
+               if ( this.options.dialog ) {
+                       this.element.addClass( "ui-dialog" )
+                               .wrapInner( $( "<div/>", {
+
+                                       // ARIA role
+                                       "role" : "dialog",
+                                       "class" : "ui-dialog-contain ui-overlay-shadow" +
+                                               ( this.options.corners ? " ui-corner-all" : "" )
+                               }));
+               }
+       },
+
+       _setOptions: function( options ) {
+               var closeButtonLocation, closeButtonText,
+                       currentOpts = this.options;
+
+               if ( options.corners !== undefined ) {
+                       this._inner.toggleClass( "ui-corner-all", !!options.corners );
+               }
+
+               if ( options.overlayTheme !== undefined ) {
+                       if ( $.mobile.activePage[ 0 ] === this.element[ 0 ] ) {
+                               currentOpts.overlayTheme = options.overlayTheme;
+                               this._handlePageBeforeShow();
+                       }
+               }
+
+               if ( options.closeBtnText !== undefined ) {
+                       closeButtonLocation = currentOpts.closeBtn;
+                       closeButtonText = options.closeBtnText;
+               }
+
+               if ( options.closeBtn !== undefined ) {
+                       closeButtonLocation = options.closeBtn;
+               }
+
+               if ( closeButtonLocation ) {
+                       this._setCloseBtn( closeButtonLocation, closeButtonText );
+               }
+
+               this._super( options );
+       },
+
+       _handlePageBeforeShow: function () {
+               if ( this.options.overlayTheme && this.options.dialog ) {
+                       this.removeContainerBackground();
+                       this.setContainerBackground( this.options.overlayTheme );
+               } else {
+                       this._super();
+               }
+       },
+
+       _setCloseBtn: function( location, text ) {
+               var dst,
+                       btn = this._headerCloseButton;
+
+               // Sanitize value
+               location = "left" === location ? "left" : "right" === location ? "right" : "none";
+
+               if ( "none" === location ) {
+                       if ( btn ) {
+                               btn.remove();
+                               btn = null;
+                       }
+               } else if ( btn ) {
+                       btn.removeClass( "ui-btn-left ui-btn-right" ).addClass( "ui-btn-" + location );
+                       if ( text ) {
+                               btn.text( text );
+                       }
+               } else {
+                       dst = this._inner.find( ":jqmData(role='header')" ).first();
+                       btn = $( "<a></a>", {
+                                       "href": "#",
+                                       "class": "ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-" + location
+                               })
+                               .attr( "data-" + $.mobile.ns + "rel", "back" )
+                               .text( text || this.options.closeBtnText || "" )
+                               .prependTo( dst );
+               }
+
+               this._headerCloseButton = btn;
+       }
+});
+
+})( jQuery, this );
+
+(function( $, window, undefined ) {
+
+$.widget( "mobile.dialog", {
+       options: {
+
+               // Accepts left, right and none
+               closeBtn: "left",
+               closeBtnText: "Close",
+               overlayTheme: "a",
+               corners: true
+       },
+
+       // Override the theme set by the page plugin on pageshow
+       _handlePageBeforeShow: function() {
+               this._isCloseable = true;
+               if ( this.options.overlayTheme ) {
+                       this.element
+                               .page( "removeContainerBackground" )
+                               .page( "setContainerBackground", this.options.overlayTheme );
+               }
+       },
+
+       _handlePageBeforeHide: function() {
+               this._isCloseable = false;
+       },
+
+       // click and submit events:
+       // - clicks and submits should use the closing transition that the dialog
+       //   opened with unless a data-transition is specified on the link/form
+       // - if the click was on the close button, or the link has a data-rel="back"
+       //   it'll go back in history naturally
+       _handleVClickSubmit: function( event ) {
+               var attrs,
+                       $target = $( event.target ).closest( event.type === "vclick" ? "a" : "form" );
+
+               if ( $target.length && !$target.jqmData( "transition" ) ) {
+                       attrs = {};
+                       attrs[ "data-" + $.mobile.ns + "transition" ] =
+                               ( $.mobile.navigate.history.getActive() || {} )[ "transition" ] ||
+                               $.mobile.defaultDialogTransition;
+                       attrs[ "data-" + $.mobile.ns + "direction" ] = "reverse";
+                       $target.attr( attrs );
+               }
+       },
+
+       _create: function() {
+               var elem = this.element,
+                       opts = this.options;
+
+               // Class the markup for dialog styling and wrap interior
+               elem.addClass( "ui-dialog" )
+                       .wrapInner( $( "<div/>", {
+
+                               // ARIA role
+                               "role" : "dialog",
+                               "class" : "ui-dialog-contain ui-overlay-shadow" +
+                                       ( !!opts.corners ? " ui-corner-all" : "" )
+                       }));
+
+               $.extend( this, {
+                       _isCloseable: false,
+                       _inner: elem.children(),
+                       _headerCloseButton: null
+               });
+
+               this._on( elem, {
+                       vclick: "_handleVClickSubmit",
+                       submit: "_handleVClickSubmit",
+                       pagebeforeshow: "_handlePageBeforeShow",
+                       pagebeforehide: "_handlePageBeforeHide"
+               });
+
+               this._setCloseBtn( opts.closeBtn );
+       },
+
+       _setOptions: function( options ) {
+               var closeButtonLocation, closeButtonText,
+                       currentOpts = this.options;
+
+               if ( options.corners !== undefined ) {
+                       this._inner.toggleClass( "ui-corner-all", !!options.corners );
+               }
+
+               if ( options.overlayTheme !== undefined ) {
+                       if ( $.mobile.activePage[ 0 ] === this.element[ 0 ] ) {
+                               currentOpts.overlayTheme = options.overlayTheme;
+                               this._handlePageBeforeShow();
+                       }
+               }
+
+               if ( options.closeBtnText !== undefined ) {
+                       closeButtonLocation = currentOpts.closeBtn;
+                       closeButtonText = options.closeBtnText;
+               }
+
+               if ( options.closeBtn !== undefined ) {
+                       closeButtonLocation = options.closeBtn;
+               }
+
+               if ( closeButtonLocation ) {
+                       this._setCloseBtn( closeButtonLocation, closeButtonText );
+               }
+
+               this._super( options );
+       },
+
+       _setCloseBtn: function( location, text ) {
+               var dst,
+                       btn = this._headerCloseButton;
+
+               // Sanitize value
+               location = "left" === location ? "left" : "right" === location ? "right" : "none";
+
+               if ( "none" === location ) {
+                       if ( btn ) {
+                               btn.remove();
+                               btn = null;
+                       }
+               } else if ( btn ) {
+                       btn.removeClass( "ui-btn-left ui-btn-right" ).addClass( "ui-btn-" + location );
+                       if ( text ) {
+                               btn.text( text );
+                       }
+               } else {
+                       dst = this._inner.find( ":jqmData(role='header')" ).first();
+                       btn = $( "<a></a>", {
+                                       "role": "button",
+                                       "href": "#",
+                                       "class": "ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-" + location
+                               })
+                               .text( text || this.options.closeBtnText || "" )
+                               .prependTo( dst );
+                       this._on( btn, { click: "close" } );
+               }
+
+               this._headerCloseButton = btn;
+       },
+
+       // Close method goes back in history
+       close: function() {
+               var hist = $.mobile.navigate.history;
+
+               if ( this._isCloseable ) {
+                       this._isCloseable = false;
+                       // If the hash listening is enabled and there is at least one preceding history
+                       // entry it's ok to go back. Initial pages with the dialog hash state are an example
+                       // where the stack check is necessary
+                       if ( $.mobile.hashListeningEnabled && hist.activeIndex > 0 ) {
+                               $.mobile.back();
+                       } else {
+                               $.mobile.pageContainer.pagecontainer( "back" );
+                       }
+               }
+       }
+});
+
+})( jQuery, this );
+
+(function( $, undefined ) {
+
+var rInitialLetter = /([A-Z])/g,
+
+       // Construct iconpos class from iconpos value
+       iconposClass = function( iconpos ) {
+               return ( "ui-btn-icon-" + ( iconpos === null ? "left" : iconpos ) );
+       };
+
+$.widget( "mobile.collapsible", {
+       options: {
+               enhanced: false,
+               expandCueText: null,
+               collapseCueText: null,
+               collapsed: true,
+               heading: "h1,h2,h3,h4,h5,h6,legend",
+               collapsedIcon: null,
+               expandedIcon: null,
+               iconpos: null,
+               theme: null,
+               contentTheme: null,
+               inset: null,
+               corners: null,
+               mini: null
+       },
+
+       _create: function() {
+               var elem = this.element,
+                       ui = {
+                               accordion: elem
+                                       .closest( ":jqmData(role='collapsible-set')," +
+                                               ":jqmData(role='collapsibleset')" +
+                                               ( $.mobile.collapsibleset ? ", :mobile-collapsibleset" :
+                                                       "" ) )
+                                       .addClass( "ui-collapsible-set" )
+                       };
+
+               this._ui = ui;
+               this._renderedOptions = this._getOptions( this.options );
+
+               if ( this.options.enhanced ) {
+                       ui.heading = this.element.children( ".ui-collapsible-heading" );
+                       ui.content = ui.heading.next();
+                       ui.anchor = ui.heading.children();
+                       ui.status = ui.anchor.children( ".ui-collapsible-heading-status" );
+               } else {
+                       this._enhance( elem, ui );
+               }
+
+               this._on( ui.heading, {
+                       "tap": function() {
+                               ui.heading.find( "a" ).first().addClass( $.mobile.activeBtnClass );
+                       },
+
+                       "click": function( event ) {
+                               this._handleExpandCollapse( !ui.heading.hasClass( "ui-collapsible-heading-collapsed" ) );
+                               event.preventDefault();
+                               event.stopPropagation();
+                       }
+               });
+       },
+
+       // Adjust the keys inside options for inherited values
+       _getOptions: function( options ) {
+               var key,
+                       accordion = this._ui.accordion,
+                       accordionWidget = this._ui.accordionWidget;
+
+               // Copy options
+               options = $.extend( {}, options );
+
+               if ( accordion.length && !accordionWidget ) {
+                       this._ui.accordionWidget =
+                       accordionWidget = accordion.data( "mobile-collapsibleset" );
+               }
+
+               for ( key in options ) {
+
+                       // Retrieve the option value first from the options object passed in and, if
+                       // null, from the parent accordion or, if that's null too, or if there's no
+                       // parent accordion, then from the defaults.
+                       options[ key ] =
+                               ( options[ key ] != null ) ? options[ key ] :
+                               ( accordionWidget ) ? accordionWidget.options[ key ] :
+                               accordion.length ? $.mobile.getAttribute( accordion[ 0 ],
+                                       key.replace( rInitialLetter, "-$1" ).toLowerCase() ):
+                               null;
+
+                       if ( null == options[ key ] ) {
+                               options[ key ] = $.mobile.collapsible.defaults[ key ];
+                       }
+               }
+
+               return options;
+       },
+
+       _themeClassFromOption: function( prefix, value ) {
+               return ( value ? ( value === "none" ? "" : prefix + value ) : "" );
+       },
+
+       _enhance: function( elem, ui ) {
+               var iconclass,
+                       opts = this._renderedOptions,
+                       contentThemeClass = this._themeClassFromOption( "ui-body-", opts.contentTheme );
+
+               elem.addClass( "ui-collapsible " +
+                       ( opts.inset ? "ui-collapsible-inset " : "" ) +
+                       ( opts.inset && opts.corners ? "ui-corner-all " : "" ) +
+                       ( contentThemeClass ? "ui-collapsible-themed-content " : "" ) );
+               ui.originalHeading = elem.children( this.options.heading ).first(),
+               ui.content = elem
+                       .wrapInner( "<div " +
+                               "class='ui-collapsible-content " +
+                               contentThemeClass + "'></div>" )
+                       .children( ".ui-collapsible-content" ),
+               ui.heading = ui.originalHeading;
+
+               // Replace collapsibleHeading if it's a legend
+               if ( ui.heading.is( "legend" ) ) {
+                       ui.heading = $( "<div role='heading'>"+ ui.heading.html() +"</div>" );
+                       ui.placeholder = $( "<div><!-- placeholder for legend --></div>" ).insertBefore( ui.originalHeading );
+                       ui.originalHeading.remove();
+               }
+
+               iconclass = ( opts.collapsed ? ( opts.collapsedIcon ? "ui-icon-" + opts.collapsedIcon : "" ):
+                       ( opts.expandedIcon ? "ui-icon-" + opts.expandedIcon : "" ) );
+
+               ui.status = $( "<span class='ui-collapsible-heading-status'></span>" );
+               ui.anchor = ui.heading
+                       .detach()
+                       //modify markup & attributes
+                       .addClass( "ui-collapsible-heading" )
+                       .append( ui.status )
+                       .wrapInner( "<a href='#' class='ui-collapsible-heading-toggle'></a>" )
+                       .find( "a" )
+                               .first()
+                               .addClass( "ui-btn " +
+                                       ( iconclass ? iconclass + " " : "" ) +
+                                       ( iconclass ? iconposClass( opts.iconpos ) +
+                                               " " : "" ) +
+                                       this._themeClassFromOption( "ui-btn-", opts.theme ) + " " +
+                                       ( opts.mini ? "ui-mini " : "" ) );
+
+               //drop heading in before content
+               ui.heading.insertBefore( ui.content );
+
+               this._handleExpandCollapse( this.options.collapsed );
+
+               return ui;
+       },
+
+       refresh: function() {
+               this._applyOptions( this.options );
+               this._renderedOptions = this._getOptions( this.options );
+       },
+
+       _applyOptions: function( options ) {
+               var isCollapsed, newTheme, oldTheme, hasCorners, hasIcon,
+                       elem = this.element,
+                       currentOpts = this._renderedOptions,
+                       ui = this._ui,
+                       anchor = ui.anchor,
+                       status = ui.status,
+                       opts = this._getOptions( options );
+
+               // First and foremost we need to make sure the collapsible is in the proper
+               // state, in case somebody decided to change the collapsed option at the
+               // same time as another option
+               if ( options.collapsed !== undefined ) {
+                       this._handleExpandCollapse( options.collapsed );
+               }
+
+               isCollapsed = elem.hasClass( "ui-collapsible-collapsed" );
+
+               // We only need to apply the cue text for the current state right away.
+               // The cue text for the alternate state will be stored in the options
+               // and applied the next time the collapsible's state is toggled
+               if ( isCollapsed ) {
+                       if ( opts.expandCueText !== undefined ) {
+                               status.text( opts.expandCueText );
+                       }
+               } else {
+                       if ( opts.collapseCueText !== undefined ) {
+                               status.text( opts.collapseCueText );
+                       }
+               }
+
+               // Update icon
+
+               // Is it supposed to have an icon?
+               hasIcon =
+
+                       // If the collapsedIcon is being set, consult that
+                       ( opts.collapsedIcon !== undefined ? opts.collapsedIcon !== false :
+
+                               // Otherwise consult the existing option value
+                               currentOpts.collapsedIcon !== false );
+
+
+               // If any icon-related options have changed, make sure the new icon
+               // state is reflected by first removing all icon-related classes
+               // reflecting the current state and then adding all icon-related
+               // classes for the new state
+               if ( !( opts.iconpos === undefined &&
+                       opts.collapsedIcon === undefined &&
+                       opts.expandedIcon === undefined ) ) {
+
+                       // Remove all current icon-related classes
+                       anchor.removeClass( [ iconposClass( currentOpts.iconpos ) ]
+                               .concat( ( currentOpts.expandedIcon ?
+                                       [ "ui-icon-" + currentOpts.expandedIcon ] : [] ) )
+                               .concat( ( currentOpts.collapsedIcon ?
+                                       [ "ui-icon-" + currentOpts.collapsedIcon ] : [] ) )
+                               .join( " " ) );
+
+                       // Add new classes if an icon is supposed to be present
+                       if ( hasIcon ) {
+                               anchor.addClass(
+                                       [ iconposClass( opts.iconpos !== undefined ?
+                                               opts.iconpos : currentOpts.iconpos ) ]
+                                               .concat( isCollapsed ?
+                                                       [ "ui-icon-" + ( opts.collapsedIcon !== undefined ?
+                                                               opts.collapsedIcon :
+                                                               currentOpts.collapsedIcon ) ] :
+                                                       [ "ui-icon-" + ( opts.expandedIcon !== undefined ?
+                                                               opts.expandedIcon :
+                                                               currentOpts.expandedIcon ) ] )
+                                               .join( " " ) );
+                       }
+               }
+
+               if ( opts.theme !== undefined ) {
+                       oldTheme = this._themeClassFromOption( "ui-btn-", currentOpts.theme );
+                       newTheme = this._themeClassFromOption( "ui-btn-", opts.theme );
+                       anchor.removeClass( oldTheme ).addClass( newTheme );
+               }
+
+               if ( opts.contentTheme !== undefined ) {
+                       oldTheme = this._themeClassFromOption( "ui-body-",
+                               currentOpts.contentTheme );
+                       newTheme = this._themeClassFromOption( "ui-body-",
+                               opts.contentTheme );
+                       ui.content.removeClass( oldTheme ).addClass( newTheme );
+               }
+
+               if ( opts.inset !== undefined ) {
+                       elem.toggleClass( "ui-collapsible-inset", opts.inset );
+                       hasCorners = !!( opts.inset && ( opts.corners || currentOpts.corners ) );
+               }
+
+               if ( opts.corners !== undefined ) {
+                       hasCorners = !!( opts.corners && ( opts.inset || currentOpts.inset ) );
+               }
+
+               if ( hasCorners !== undefined ) {
+                       elem.toggleClass( "ui-corner-all", hasCorners );
+               }
+
+               if ( opts.mini !== undefined ) {
+                       anchor.toggleClass( "ui-mini", opts.mini );
+               }
+       },
+
+       _setOptions: function( options ) {
+               this._applyOptions( options );
+               this._super( options );
+               this._renderedOptions = this._getOptions( this.options );
+       },
+
+       _handleExpandCollapse: function( isCollapse ) {
+               var opts = this._renderedOptions,
+                       ui = this._ui;
+
+               ui.status.text( isCollapse ? opts.expandCueText : opts.collapseCueText );
+               ui.heading
+                       .toggleClass( "ui-collapsible-heading-collapsed", isCollapse )
+                       .find( "a" ).first()
+                       .toggleClass( "ui-icon-" + opts.expandedIcon, !isCollapse )
+
+                       // logic or cause same icon for expanded/collapsed state would remove the ui-icon-class
+                       .toggleClass( "ui-icon-" + opts.collapsedIcon, ( isCollapse || opts.expandedIcon === opts.collapsedIcon ) )
+                       .removeClass( $.mobile.activeBtnClass );
+
+               this.element.toggleClass( "ui-collapsible-collapsed", isCollapse );
+               ui.content
+                       .toggleClass( "ui-collapsible-content-collapsed", isCollapse )
+                       .attr( "aria-hidden", isCollapse )
+                       .trigger( "updatelayout" );
+               this.options.collapsed = isCollapse;
+               this._trigger( isCollapse ? "collapse" : "expand" );
+       },
+
+       expand: function() {
+               this._handleExpandCollapse( false );
+       },
+
+       collapse: function() {
+               this._handleExpandCollapse( true );
+       },
+
+       _destroy: function() {
+               var ui = this._ui,
+                       opts = this.options;
+
+               if ( opts.enhanced ) {
+                       return;
+               }
+
+               if ( ui.placeholder ) {
+                       ui.originalHeading.insertBefore( ui.placeholder );
+                       ui.placeholder.remove();
+                       ui.heading.remove();
+               } else {
+                       ui.status.remove();
+                       ui.heading
+                               .removeClass( "ui-collapsible-heading ui-collapsible-heading-collapsed" )
+                               .children()
+                                       .contents()
+                                               .unwrap();
+               }
+
+               ui.anchor.contents().unwrap();
+               ui.content.contents().unwrap();
+               this.element
+                       .removeClass( "ui-collapsible ui-collapsible-collapsed " +
+                               "ui-collapsible-themed-content ui-collapsible-inset ui-corner-all" );
+       }
+});
+
+// Defaults to be used by all instances of collapsible if per-instance values
+// are unset or if nothing is specified by way of inheritance from an accordion.
+// Note that this hash does not contain options "collapsed" or "heading",
+// because those are not inheritable.
+$.mobile.collapsible.defaults = {
+       expandCueText: " click to expand contents",
+       collapseCueText: " click to collapse contents",
+       collapsedIcon: "plus",
+       contentTheme: "inherit",
+       expandedIcon: "minus",
+       iconpos: "left",
+       inset: true,
+       corners: true,
+       theme: "inherit",
+       mini: false
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var uiScreenHiddenRegex = /\bui-screen-hidden\b/;
+function noHiddenClass( elements ) {
+       var index,
+               length = elements.length,
+               result = [];
+
+       for ( index = 0; index < length; index++ ) {
+               if ( !elements[ index ].className.match( uiScreenHiddenRegex ) ) {
+                       result.push( elements[ index ] );
+               }
+       }
+
+       return $( result );
+}
+
+$.mobile.behaviors.addFirstLastClasses = {
+       _getVisibles: function( $els, create ) {
+               var visibles;
+
+               if ( create ) {
+                       visibles = noHiddenClass( $els );
+               } else {
+                       visibles = $els.filter( ":visible" );
+                       if ( visibles.length === 0 ) {
+                               visibles = noHiddenClass( $els );
+                       }
+               }
+
+               return visibles;
+       },
+
+       _addFirstLastClasses: function( $els, $visibles, create ) {
+               $els.removeClass( "ui-first-child ui-last-child" );
+               $visibles.eq( 0 ).addClass( "ui-first-child" ).end().last().addClass( "ui-last-child" );
+               if ( !create ) {
+                       this.element.trigger( "updatelayout" );
+               }
+       },
+
+       _removeFirstLastClasses: function( $els ) {
+               $els.removeClass( "ui-first-child ui-last-child" );
+       }
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var childCollapsiblesSelector = ":mobile-collapsible, " + $.mobile.collapsible.initSelector;
+
+$.widget( "mobile.collapsibleset", $.extend( {
+
+       // The initSelector is deprecated as of 1.4.0. In 1.5.0 we will use
+       // :jqmData(role='collapsibleset') which will allow us to get rid of the line
+       // below altogether, because the autoinit will generate such an initSelector
+       initSelector: ":jqmData(role='collapsible-set'),:jqmData(role='collapsibleset')",
+
+       options: $.extend( {
+               enhanced: false
+       }, $.mobile.collapsible.defaults ),
+
+       _handleCollapsibleExpand: function( event ) {
+               var closestCollapsible = $( event.target ).closest( ".ui-collapsible" );
+
+               if ( closestCollapsible.parent().is( ":mobile-collapsibleset, :jqmData(role='collapsible-set')" ) ) {
+                       closestCollapsible
+                               .siblings( ".ui-collapsible:not(.ui-collapsible-collapsed)" )
+                               .collapsible( "collapse" );
+               }
+       },
+
+       _create: function() {
+               var elem = this.element,
+                       opts = this.options;
+
+               $.extend( this, {
+                       _classes: ""
+               });
+
+               if ( !opts.enhanced ) {
+                       elem.addClass( "ui-collapsible-set " +
+                               this._themeClassFromOption( "ui-group-theme-", opts.theme ) + " " +
+                               ( opts.corners && opts.inset ? "ui-corner-all " : "" ) );
+                       this.element.find( $.mobile.collapsible.initSelector ).collapsible();
+               }
+
+               this._on( elem, { collapsibleexpand: "_handleCollapsibleExpand" } );
+       },
+
+       _themeClassFromOption: function( prefix, value ) {
+               return ( value ? ( value === "none" ? "" : prefix + value ) : "" );
+       },
+
+       _init: function() {
+               this._refresh( true );
+
+               // Because the corners are handled by the collapsible itself and the default state is collapsed
+               // That was causing https://github.com/jquery/jquery-mobile/issues/4116
+               this.element
+                       .children( childCollapsiblesSelector )
+                       .filter( ":jqmData(collapsed='false')" )
+                       .collapsible( "expand" );
+       },
+
+       _setOptions: function( options ) {
+               var ret, hasCorners,
+                       elem = this.element,
+                       themeClass = this._themeClassFromOption( "ui-group-theme-", options.theme );
+
+               if ( themeClass ) {
+                       elem
+                               .removeClass( this._themeClassFromOption( "ui-group-theme-", this.options.theme ) )
+                               .addClass( themeClass );
+               }
+
+               if ( options.inset !== undefined ) {
+                       hasCorners = !!( options.inset && ( options.corners || this.options.corners ) );
+               }
+
+               if ( options.corners !== undefined ) {
+                       hasCorners = !!( options.corners && ( options.inset || this.options.inset ) );
+               }
+
+               if ( hasCorners !== undefined ) {
+                       elem.toggleClass( "ui-corner-all", hasCorners );
+               }
+
+               ret = this._super( options );
+               this.element.children( ":mobile-collapsible" ).collapsible( "refresh" );
+               return ret;
+       },
+
+       _destroy: function() {
+               var el = this.element;
+
+               this._removeFirstLastClasses( el.children( childCollapsiblesSelector ) );
+               el
+                       .removeClass( "ui-collapsible-set ui-corner-all " +
+                               this._themeClassFromOption( "ui-group-theme-", this.options.theme ) )
+                       .children( ":mobile-collapsible" )
+                       .collapsible( "destroy" );
+       },
+
+       _refresh: function( create ) {
+               var collapsiblesInSet = this.element.children( childCollapsiblesSelector );
+
+               this.element.find( $.mobile.collapsible.initSelector ).not( ".ui-collapsible" ).collapsible();
+
+               this._addFirstLastClasses( collapsiblesInSet, this._getVisibles( collapsiblesInSet, create ), create );
+       },
+
+       refresh: function() {
+               this._refresh( false );
+       }
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// Deprecated in 1.4
+$.fn.fieldcontain = function(/* options */) {
+       return this.addClass( "ui-field-contain" );
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.fn.grid = function( options ) {
+       return this.each(function() {
+
+               var $this = $( this ),
+                       o = $.extend({
+                               grid: null
+                       }, options ),
+                       $kids = $this.children(),
+                       gridCols = { solo:1, a:2, b:3, c:4, d:5 },
+                       grid = o.grid,
+                       iterator,
+                       letter;
+
+                       if ( !grid ) {
+                               if ( $kids.length <= 5 ) {
+                                       for ( letter in gridCols ) {
+                                               if ( gridCols[ letter ] === $kids.length ) {
+                                                       grid = letter;
+                                               }
+                                       }
+                               } else {
+                                       grid = "a";
+                                       $this.addClass( "ui-grid-duo" );
+                               }
+                       }
+                       iterator = gridCols[grid];
+
+               $this.addClass( "ui-grid-" + grid );
+
+               $kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" );
+
+               if ( iterator > 1 ) {
+                       $kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" );
+               }
+               if ( iterator > 2 ) {
+                       $kids.filter( ":nth-child(" + iterator + "n+3)" ).addClass( "ui-block-c" );
+               }
+               if ( iterator > 3 ) {
+                       $kids.filter( ":nth-child(" + iterator + "n+4)" ).addClass( "ui-block-d" );
+               }
+               if ( iterator > 4 ) {
+                       $kids.filter( ":nth-child(" + iterator + "n+5)" ).addClass( "ui-block-e" );
+               }
+       });
+};
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.navbar", {
+       options: {
+               iconpos: "top",
+               grid: null
+       },
+
+       _create: function() {
+
+               var $navbar = this.element,
+                       $navbtns = $navbar.find( "a, button" ),
+                       iconpos = $navbtns.filter( ":jqmData(icon)" ).length ? this.options.iconpos : undefined;
+
+               $navbar.addClass( "ui-navbar" )
+                       .attr( "role", "navigation" )
+                       .find( "ul" )
+                       .jqmEnhanceable()
+                       .grid({ grid: this.options.grid });
+
+               $navbtns
+                       .each( function() {
+                               var icon = $.mobile.getAttribute( this, "icon" ),
+                                       theme = $.mobile.getAttribute( this, "theme" ),
+                                       classes = "ui-btn";
+
+                               if ( theme ) {
+                                       classes += " ui-btn-" + theme;
+                               }
+                               if ( icon ) {
+                                       classes += " ui-icon-" + icon + " ui-btn-icon-" + iconpos;
+                               }
+                               $( this ).addClass( classes );
+                       });
+
+               $navbar.delegate( "a", "vclick", function( /* event */ ) {
+                       var activeBtn = $( this );
+
+                       if ( !( activeBtn.hasClass( "ui-state-disabled" ) ||
+
+                               // DEPRECATED as of 1.4.0 - remove after 1.4.0 release
+                               // only ui-state-disabled should be present thereafter
+                               activeBtn.hasClass( "ui-disabled" ) ||
+                               activeBtn.hasClass( $.mobile.activeBtnClass ) ) ) {
+
+                               $navbtns.removeClass( $.mobile.activeBtnClass );
+                               activeBtn.addClass( $.mobile.activeBtnClass );
+
+                               // The code below is a workaround to fix #1181
+                               $( document ).one( "pagehide", function() {
+                                       activeBtn.removeClass( $.mobile.activeBtnClass );
+                               });
+                       }
+               });
+
+               // Buttons in the navbar with ui-state-persist class should regain their active state before page show
+               $navbar.closest( ".ui-page" ).bind( "pagebeforeshow", function() {
+                       $navbtns.filter( ".ui-state-persist" ).addClass( $.mobile.activeBtnClass );
+               });
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var getAttr = $.mobile.getAttribute;
+
+$.widget( "mobile.listview", $.extend( {
+
+       options: {
+               theme: null,
+               countTheme: null, /* Deprecated in 1.4 */
+               dividerTheme: null,
+               icon: "carat-r",
+               splitIcon: "carat-r",
+               splitTheme: null,
+               corners: true,
+               shadow: true,
+               inset: false
+       },
+
+       _create: function() {
+               var t = this,
+                       listviewClasses = "";
+
+               listviewClasses += t.options.inset ? " ui-listview-inset" : "";
+
+               if ( !!t.options.inset ) {
+                       listviewClasses += t.options.corners ? " ui-corner-all" : "";
+                       listviewClasses += t.options.shadow ? " ui-shadow" : "";
+               }
+
+               // create listview markup
+               t.element.addClass( " ui-listview" + listviewClasses );
+
+               t.refresh( true );
+       },
+
+       // TODO: Remove in 1.5
+       _findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) {
+               var dict = {};
+               dict[ lcName ] = dict[ ucName ] = true;
+               while ( ele ) {
+                       if ( dict[ ele.nodeName ] ) {
+                               return ele;
+                       }
+                       ele = ele[ nextProp ];
+               }
+               return null;
+       },
+       // TODO: Remove in 1.5
+       _addThumbClasses: function( containers ) {
+               var i, img, len = containers.length;
+               for ( i = 0; i < len; i++ ) {
+                       img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) );
+                       if ( img.length ) {
+                               $( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.hasClass( "ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
+                       }
+               }
+       },
+
+       _getChildrenByTagName: function( ele, lcName, ucName ) {
+               var results = [],
+                       dict = {};
+               dict[ lcName ] = dict[ ucName ] = true;
+               ele = ele.firstChild;
+               while ( ele ) {
+                       if ( dict[ ele.nodeName ] ) {
+                               results.push( ele );
+                       }
+                       ele = ele.nextSibling;
+               }
+               return $( results );
+       },
+
+       _beforeListviewRefresh: $.noop,
+       _afterListviewRefresh: $.noop,
+
+       refresh: function( create ) {
+               var buttonClass, pos, numli, item, itemClass, itemTheme, itemIcon, icon, a,
+                       isDivider, startCount, newStartCount, value, last, splittheme, splitThemeClass, spliticon,
+                       altButtonClass, dividerTheme, li,
+                       o = this.options,
+                       $list = this.element,
+                       ol = !!$.nodeName( $list[ 0 ], "ol" ),
+                       start = $list.attr( "start" ),
+                       itemClassDict = {},
+                       countBubbles = $list.find( ".ui-li-count" ),
+                       countTheme = getAttr( $list[ 0 ], "counttheme" ) || this.options.countTheme,
+                       countThemeClass = countTheme ? "ui-body-" + countTheme : "ui-body-inherit";
+
+               if ( o.theme ) {
+                       $list.addClass( "ui-group-theme-" + o.theme );
+               }
+
+               // Check if a start attribute has been set while taking a value of 0 into account
+               if ( ol && ( start || start === 0 ) ) {
+                       startCount = parseInt( start, 10 ) - 1;
+                       $list.css( "counter-reset", "listnumbering " + startCount );
+               }
+
+               this._beforeListviewRefresh();
+
+               li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" );
+
+               for ( pos = 0, numli = li.length; pos < numli; pos++ ) {
+                       item = li.eq( pos );
+                       itemClass = "";
+
+                       if ( create || item[ 0 ].className.search( /\bui-li-static\b|\bui-li-divider\b/ ) < 0 ) {
+                               a = this._getChildrenByTagName( item[ 0 ], "a", "A" );
+                               isDivider = ( getAttr( item[ 0 ], "role" ) === "list-divider" );
+                               value = item.attr( "value" );
+                               itemTheme = getAttr( item[ 0 ], "theme" );
+
+                               if ( a.length && a[ 0 ].className.search( /\bui-btn\b/ ) < 0 && !isDivider ) {
+                                       itemIcon = getAttr( item[ 0 ], "icon" );
+                                       icon = ( itemIcon === false ) ? false : ( itemIcon || o.icon );
+
+                                       // TODO: Remove in 1.5 together with links.js (links.js / .ui-link deprecated in 1.4)
+                                       a.removeClass( "ui-link" );
+
+                                       buttonClass = "ui-btn";
+
+                                       if ( itemTheme ) {
+                                               buttonClass += " ui-btn-" + itemTheme;
+                                       }
+
+                                       if ( a.length > 1 ) {
+                                               itemClass = "ui-li-has-alt";
+
+                                               last = a.last();
+                                               splittheme = getAttr( last[ 0 ], "theme" ) || o.splitTheme || getAttr( item[ 0 ], "theme", true );
+                                               splitThemeClass = splittheme ? " ui-btn-" + splittheme : "";
+                                               spliticon = getAttr( last[ 0 ], "icon" ) || getAttr( item[ 0 ], "icon" ) || o.splitIcon;
+                                               altButtonClass = "ui-btn ui-btn-icon-notext ui-icon-" + spliticon + splitThemeClass;
+
+                                               last
+                                                       .attr( "title", $.trim( last.getEncodedText() ) )
+                                                       .addClass( altButtonClass )
+                                                       .empty();
+
+                                               // Reduce to the first anchor, because only the first gets the buttonClass
+                                               a = a.first();
+                                       } else if ( icon ) {
+                                               buttonClass += " ui-btn-icon-right ui-icon-" + icon;
+                                       }
+
+                                       // Apply buttonClass to the (first) anchor
+                                       a.addClass( buttonClass );
+                               } else if ( isDivider ) {
+                                       dividerTheme = ( getAttr( item[ 0 ], "theme" ) || o.dividerTheme || o.theme );
+
+                                       itemClass = "ui-li-divider ui-bar-" + ( dividerTheme ? dividerTheme : "inherit" );
+
+                                       item.attr( "role", "heading" );
+                               } else if ( a.length <= 0 ) {
+                                       itemClass = "ui-li-static ui-body-" + ( itemTheme ? itemTheme : "inherit" );
+                               }
+                               if ( ol && value ) {
+                                       newStartCount = parseInt( value , 10 ) - 1;
+
+                                       item.css( "counter-reset", "listnumbering " + newStartCount );
+                               }
+                       }
+
+                       // Instead of setting item class directly on the list item
+                       // at this point in time, push the item into a dictionary
+                       // that tells us what class to set on it so we can do this after this
+                       // processing loop is finished.
+
+                       if ( !itemClassDict[ itemClass ] ) {
+                               itemClassDict[ itemClass ] = [];
+                       }
+
+                       itemClassDict[ itemClass ].push( item[ 0 ] );
+               }
+
+               // Set the appropriate listview item classes on each list item.
+               // The main reason we didn't do this
+               // in the for-loop above is because we can eliminate per-item function overhead
+               // by calling addClass() and children() once or twice afterwards. This
+               // can give us a significant boost on platforms like WP7.5.
+
+               for ( itemClass in itemClassDict ) {
+                       $( itemClassDict[ itemClass ] ).addClass( itemClass );
+               }
+
+               countBubbles.each( function() {
+                       $( this ).closest( "li" ).addClass( "ui-li-has-count" );
+               });
+               if ( countThemeClass ) {
+                       countBubbles.not( "[class*='ui-body-']" ).addClass( countThemeClass );
+               }
+
+               // Deprecated in 1.4. From 1.5 you have to add class ui-li-has-thumb or ui-li-has-icon to the LI.
+               this._addThumbClasses( li );
+               this._addThumbClasses( li.find( ".ui-btn" ) );
+
+               this._afterListviewRefresh();
+
+               this._addFirstLastClasses( li, this._getVisibles( li, create ), create );
+       }
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+function defaultAutodividersSelector( elt ) {
+       // look for the text in the given element
+       var text = $.trim( elt.text() ) || null;
+
+       if ( !text ) {
+               return null;
+       }
+
+       // create the text for the divider (first uppercased letter)
+       text = text.slice( 0, 1 ).toUpperCase();
+
+       return text;
+}
+
+$.widget( "mobile.listview", $.mobile.listview, {
+       options: {
+               autodividers: false,
+               autodividersSelector: defaultAutodividersSelector
+       },
+
+       _beforeListviewRefresh: function() {
+               if ( this.options.autodividers ) {
+                       this._replaceDividers();
+                       this._superApply( arguments );
+               }
+       },
+
+       _replaceDividers: function() {
+               var i, lis, li, dividerText,
+                       lastDividerText = null,
+                       list = this.element,
+                       divider;
+
+               list.children( "li:jqmData(role='list-divider')" ).remove();
+
+               lis = list.children( "li" );
+
+               for ( i = 0; i < lis.length ; i++ ) {
+                       li = lis[ i ];
+                       dividerText = this.options.autodividersSelector( $( li ) );
+
+                       if ( dividerText && lastDividerText !== dividerText ) {
+                               divider = document.createElement( "li" );
+                               divider.appendChild( document.createTextNode( dividerText ) );
+                               divider.setAttribute( "data-" + $.mobile.ns + "role", "list-divider" );
+                               li.parentNode.insertBefore( divider, li );
+                       }
+
+                       lastDividerText = dividerText;
+               }
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var rdivider = /(^|\s)ui-li-divider($|\s)/,
+       rhidden = /(^|\s)ui-screen-hidden($|\s)/;
+
+$.widget( "mobile.listview", $.mobile.listview, {
+       options: {
+               hideDividers: false
+       },
+
+       _afterListviewRefresh: function() {
+               var items, idx, item, hideDivider = true;
+
+               this._superApply( arguments );
+
+               if ( this.options.hideDividers ) {
+                       items = this._getChildrenByTagName( this.element[ 0 ], "li", "LI" );
+                       for ( idx = items.length - 1 ; idx > -1 ; idx-- ) {
+                               item = items[ idx ];
+                               if ( item.className.match( rdivider ) ) {
+                                       if ( hideDivider ) {
+                                               item.className = item.className + " ui-screen-hidden";
+                                       }
+                                       hideDivider = true;
+                               } else {
+                                       if ( !item.className.match( rhidden ) ) {
+                                               hideDivider = false;
+                                       }
+                               }
+                       }
+               }
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.nojs = function( target ) {
+       $( ":jqmData(role='nojs')", target ).addClass( "ui-nojs" );
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.behaviors.formReset = {
+       _handleFormReset: function() {
+               this._on( this.element.closest( "form" ), {
+                       reset: function() {
+                               this._delay( "_reset" );
+                       }
+               });
+       }
+};
+
+})( jQuery );
+
+/*
+* "checkboxradio" plugin
+*/
+
+(function( $, undefined ) {
+
+var escapeId = $.mobile.path.hashToSelector;
+
+$.widget( "mobile.checkboxradio", $.extend( {
+
+       initSelector: "input:not( :jqmData(role='flipswitch' ) )[type='checkbox'],input[type='radio']:not( :jqmData(role='flipswitch' ))",
+
+       options: {
+               theme: "inherit",
+               mini: false,
+               wrapperClass: null,
+               enhanced: false,
+               iconpos: "left"
+
+       },
+       _create: function() {
+               var input = this.element,
+                       o = this.options,
+                       inheritAttr = function( input, dataAttr ) {
+                               return input.jqmData( dataAttr ) ||
+                                       input.closest( "form, fieldset" ).jqmData( dataAttr );
+                       },
+                       label = this.options.enhanced ?
+                               {
+                                       element: this.element.siblings( "label" ),
+                                       isParent: false
+                               } :
+                               this._findLabel(),
+                       inputtype = input[0].type,
+                       checkedClass = "ui-" + inputtype + "-on",
+                       uncheckedClass = "ui-" + inputtype + "-off";
+
+               if ( inputtype !== "checkbox" && inputtype !== "radio" ) {
+                       return;
+               }
+
+               if ( this.element[0].disabled ) {
+                       this.options.disabled = true;
+               }
+
+               o.iconpos = inheritAttr( input, "iconpos" ) ||
+                       label.element.attr( "data-" + $.mobile.ns + "iconpos" ) || o.iconpos,
+
+               // Establish options
+               o.mini = inheritAttr( input, "mini" ) || o.mini;
+
+               // Expose for other methods
+               $.extend( this, {
+                       input: input,
+                       label: label.element,
+                       labelIsParent: label.isParent,
+                       inputtype: inputtype,
+                       checkedClass: checkedClass,
+                       uncheckedClass: uncheckedClass
+               });
+
+               if ( !this.options.enhanced ) {
+                       this._enhance();
+               }
+
+               this._on( label.element, {
+                       vmouseover: "_handleLabelVMouseOver",
+                       vclick: "_handleLabelVClick"
+               });
+
+               this._on( input, {
+                       vmousedown: "_cacheVals",
+                       vclick: "_handleInputVClick",
+                       focus: "_handleInputFocus",
+                       blur: "_handleInputBlur"
+               });
+
+               this._handleFormReset();
+               this.refresh();
+       },
+
+       _findLabel: function() {
+               var parentLabel, label, isParent,
+                       input = this.element,
+                       labelsList = input[ 0 ].labels;
+
+               if( labelsList && labelsList.length > 0 ) {
+                       label = $( labelsList[ 0 ] );
+                       isParent = $.contains( label[ 0 ], input[ 0 ] );
+               } else {
+                       parentLabel = input.closest( "label" );
+                       isParent = ( parentLabel.length > 0 );
+
+                       // NOTE: Windows Phone could not find the label through a selector
+                       // filter works though.
+                       label = isParent ? parentLabel :
+                               $( this.document[ 0 ].getElementsByTagName( "label" ) )
+                                       .filter( "[for='" + escapeId( input[ 0 ].id ) + "']" )
+                                       .first();
+               }
+
+               return {
+                       element: label,
+                       isParent: isParent
+               };
+       },
+
+       _enhance: function() {
+               this.label.addClass( "ui-btn ui-corner-all");
+
+               if ( this.labelIsParent ) {
+                       this.input.add( this.label ).wrapAll( this._wrapper() );
+               } else {
+                       //this.element.replaceWith( this.input.add( this.label ).wrapAll( this._wrapper() ) );
+                       this.element.wrap( this._wrapper() );
+                       this.element.parent().prepend( this.label );
+               }
+
+               // Wrap the input + label in a div
+
+               this._setOptions({
+                       "theme": this.options.theme,
+                       "iconpos": this.options.iconpos,
+                       "mini": this.options.mini
+               });
+
+       },
+
+       _wrapper: function() {
+               return $( "<div class='"  +
+                       ( this.options.wrapperClass ? this.options.wrapperClass : "" ) +
+                       " ui-" + this.inputtype +
+                       ( this.options.disabled ? " ui-state-disabled" : "" ) + "' ></div>" );
+       },
+
+       _handleInputFocus: function() {
+               this.label.addClass( $.mobile.focusClass );
+       },
+
+       _handleInputBlur: function() {
+               this.label.removeClass( $.mobile.focusClass );
+       },
+
+       _handleInputVClick: function() {
+               // Adds checked attribute to checked input when keyboard is used
+               this.element.prop( "checked", this.element.is( ":checked" ) );
+               this._getInputSet().not( this.element ).prop( "checked", false );
+               this._updateAll( true );
+       },
+
+       _handleLabelVMouseOver: function( event ) {
+               if ( this.label.parent().hasClass( "ui-state-disabled" ) ) {
+                       event.stopPropagation();
+               }
+       },
+
+       _handleLabelVClick: function( event ) {
+               var input = this.element;
+
+               if ( input.is( ":disabled" ) ) {
+                       event.preventDefault();
+                       return;
+               }
+
+               this._cacheVals();
+
+               input.prop( "checked", this.inputtype === "radio" && true || !input.prop( "checked" ) );
+
+               // trigger click handler's bound directly to the input as a substitute for
+               // how label clicks behave normally in the browsers
+               // TODO: it would be nice to let the browser's handle the clicks and pass them
+               //       through to the associate input. we can swallow that click at the parent
+               //       wrapper element level
+               input.triggerHandler( "click" );
+
+               // Input set for common radio buttons will contain all the radio
+               // buttons, but will not for checkboxes. clearing the checked status
+               // of other radios ensures the active button state is applied properly
+               this._getInputSet().not( input ).prop( "checked", false );
+
+               this._updateAll();
+               return false;
+       },
+
+       _cacheVals: function() {
+               this._getInputSet().each( function() {
+                       $( this ).attr("data-" + $.mobile.ns + "cacheVal", this.checked );
+               });
+       },
+
+       // Returns those radio buttons that are supposed to be in the same group as
+       // this radio button. In the case of a checkbox or a radio lacking a name
+       // attribute, it returns this.element.
+       _getInputSet: function() {
+               var selector, formId,
+                       radio = this.element[ 0 ],
+                       name = radio.name,
+                       form = radio.form,
+                       doc = this.element.parents().last().get( 0 ),
+
+                       // A radio is always a member of its own group
+                       radios = this.element;
+
+               // Only start running selectors if this is an attached radio button with a name
+               if ( name && this.inputtype === "radio" && doc ) {
+                       selector = "input[type='radio'][name='" + escapeId( name ) + "']";
+
+                       // If we're inside a form
+                       if ( form ) {
+                               formId = form.getAttribute( "id" );
+
+                               // If the form has an ID, collect radios scattered throught the document which
+                               // nevertheless are part of the form by way of the value of their form attribute
+                               if ( formId ) {
+                                       radios = $( selector + "[form='" + escapeId( formId ) + "']", doc );
+                               }
+
+                               // Also add to those the radios in the form itself
+                               radios = $( form ).find( selector ).filter( function() {
+
+                                       // Some radios inside the form may belong to some other form by virtue of
+                                       // having a form attribute defined on them, so we must filter them out here
+                                       return ( this.form === form );
+                               }).add( radios );
+
+                       // If we're outside a form
+                       } else {
+
+                               // Collect all those radios which are also outside of a form and match our name
+                               radios = $( selector, doc ).filter( function() {
+                                       return !this.form;
+                               });
+                       }
+               }
+               return radios;
+       },
+
+       _updateAll: function( changeTriggered ) {
+               var self = this;
+
+               this._getInputSet().each( function() {
+                       var $this = $( this );
+
+                       if ( ( this.checked || self.inputtype === "checkbox" ) && !changeTriggered ) {
+                               $this.trigger( "change" );
+                       }
+               })
+               .checkboxradio( "refresh" );
+       },
+
+       _reset: function() {
+               this.refresh();
+       },
+
+       // Is the widget supposed to display an icon?
+       _hasIcon: function() {
+               var controlgroup, controlgroupWidget,
+                       controlgroupConstructor = $.mobile.controlgroup;
+
+               // If the controlgroup widget is defined ...
+               if ( controlgroupConstructor ) {
+                       controlgroup = this.element.closest(
+                               ":mobile-controlgroup," +
+                               controlgroupConstructor.prototype.initSelector );
+
+                       // ... and the checkbox is in a controlgroup ...
+                       if ( controlgroup.length > 0 ) {
+
+                               // ... look for a controlgroup widget instance, and ...
+                               controlgroupWidget = $.data( controlgroup[ 0 ], "mobile-controlgroup" );
+
+                               // ... if found, decide based on the option value, ...
+                               return ( ( controlgroupWidget ? controlgroupWidget.options.type :
+
+                                       // ... otherwise decide based on the "type" data attribute.
+                                       controlgroup.attr( "data-" + $.mobile.ns + "type" ) ) !== "horizontal" );
+                       }
+               }
+
+               // Normally, the widget displays an icon.
+               return true;
+       },
+
+       refresh: function() {
+               var isChecked = this.element[ 0 ].checked,
+                       active = $.mobile.activeBtnClass,
+                       iconposClass = "ui-btn-icon-" + this.options.iconpos,
+                       addClasses = [],
+                       removeClasses = [];
+
+               if ( this._hasIcon() ) {
+                       removeClasses.push( active );
+                       addClasses.push( iconposClass );
+               } else {
+                       removeClasses.push( iconposClass );
+                       ( isChecked ? addClasses : removeClasses ).push( active );
+               }
+
+               if ( isChecked ) {
+                       addClasses.push( this.checkedClass );
+                       removeClasses.push( this.uncheckedClass );
+               } else {
+                       addClasses.push( this.uncheckedClass );
+                       removeClasses.push( this.checkedClass );
+               }
+
+               this.widget().toggleClass( "ui-state-disabled", this.element.prop( "disabled" ) );
+
+               this.label
+                       .addClass( addClasses.join( " " ) )
+                       .removeClass( removeClasses.join( " " ) );
+       },
+
+       widget: function() {
+               return this.label.parent();
+       },
+
+       _setOptions: function( options ) {
+               var label = this.label,
+                       currentOptions = this.options,
+                       outer = this.widget(),
+                       hasIcon = this._hasIcon();
+
+               if ( options.disabled !== undefined ) {
+                       this.input.prop( "disabled", !!options.disabled );
+                       outer.toggleClass( "ui-state-disabled", !!options.disabled );
+               }
+               if ( options.mini !== undefined ) {
+                       outer.toggleClass( "ui-mini", !!options.mini );
+               }
+               if ( options.theme !== undefined ) {
+                       label
+                               .removeClass( "ui-btn-" + currentOptions.theme )
+                               .addClass( "ui-btn-" + options.theme );
+               }
+               if ( options.wrapperClass !== undefined ) {
+                       outer
+                               .removeClass( currentOptions.wrapperClass )
+                               .addClass( options.wrapperClass );
+               }
+               if ( options.iconpos !== undefined && hasIcon ) {
+                       label.removeClass( "ui-btn-icon-" + currentOptions.iconpos ).addClass( "ui-btn-icon-" + options.iconpos );
+               } else if ( !hasIcon ) {
+                       label.removeClass( "ui-btn-icon-" + currentOptions.iconpos );
+               }
+               this._super( options );
+       }
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.button", {
+
+       initSelector: "input[type='button'], input[type='submit'], input[type='reset']",
+
+       options: {
+               theme: null,
+               icon: null,
+               iconpos: "left",
+               iconshadow: false, /* TODO: Deprecated in 1.4, remove in 1.5. */
+               corners: true,
+               shadow: true,
+               inline: null,
+               mini: null,
+               wrapperClass: null,
+               enhanced: false
+       },
+
+       _create: function() {
+
+               if ( this.element.is( ":disabled" ) ) {
+                       this.options.disabled = true;
+               }
+
+               if ( !this.options.enhanced ) {
+                       this._enhance();
+               }
+
+               $.extend( this, {
+                       wrapper: this.element.parent()
+               });
+
+               this._on( {
+                       focus: function() {
+                               this.widget().addClass( $.mobile.focusClass );
+                       },
+
+                       blur: function() {
+                               this.widget().removeClass( $.mobile.focusClass );
+                       }
+               });
+
+               this.refresh( true );
+       },
+
+       _enhance: function() {
+               this.element.wrap( this._button() );
+       },
+
+       _button: function() {
+               var options = this.options,
+                       iconClasses = this._getIconClasses( this.options );
+
+               return $("<div class='ui-btn ui-input-btn" +
+                       ( options.wrapperClass ? " " + options.wrapperClass : "" ) +
+                       ( options.theme ? " ui-btn-" + options.theme : "" ) +
+                       ( options.corners ? " ui-corner-all" : "" ) +
+                       ( options.shadow ? " ui-shadow" : "" ) +
+                       ( options.inline ? " ui-btn-inline" : "" ) +
+                       ( options.mini ? " ui-mini" : "" ) +
+                       ( options.disabled ? " ui-state-disabled" : "" ) +
+                       ( iconClasses ? ( " " + iconClasses ) : "" ) +
+                       "' >" + this.element.val() + "</div>" );
+       },
+
+       widget: function() {
+               return this.wrapper;
+       },
+
+       _destroy: function() {
+                       this.element.insertBefore( this.wrapper );
+                       this.wrapper.remove();
+       },
+
+       _getIconClasses: function( options ) {
+               return ( options.icon ? ( "ui-icon-" + options.icon +
+                       ( options.iconshadow ? " ui-shadow-icon" : "" ) + /* TODO: Deprecated in 1.4, remove in 1.5. */
+                       " ui-btn-icon-" + options.iconpos ) : "" );
+       },
+
+       _setOptions: function( options ) {
+               var outer = this.widget();
+
+               if ( options.theme !== undefined ) {
+                       outer
+                               .removeClass( this.options.theme )
+                               .addClass( "ui-btn-" + options.theme );
+               }
+               if ( options.corners !== undefined ) {
+                       outer.toggleClass( "ui-corner-all", options.corners );
+               }
+               if ( options.shadow !== undefined ) {
+                       outer.toggleClass( "ui-shadow", options.shadow );
+               }
+               if ( options.inline !== undefined ) {
+                       outer.toggleClass( "ui-btn-inline", options.inline );
+               }
+               if ( options.mini !== undefined ) {
+                       outer.toggleClass( "ui-mini", options.mini );
+               }
+               if ( options.disabled !== undefined ) {
+                       this.element.prop( "disabled", options.disabled );
+                       outer.toggleClass( "ui-state-disabled", options.disabled );
+               }
+
+               if ( options.icon !== undefined ||
+                               options.iconshadow !== undefined || /* TODO: Deprecated in 1.4, remove in 1.5. */
+                               options.iconpos !== undefined ) {
+                       outer
+                               .removeClass( this._getIconClasses( this.options ) )
+                               .addClass( this._getIconClasses(
+                                       $.extend( {}, this.options, options ) ) );
+               }
+
+               this._super( options );
+       },
+
+       refresh: function( create ) {
+               var originalElement,
+                       isDisabled = this.element.prop( "disabled" );
+
+               if ( this.options.icon && this.options.iconpos === "notext" && this.element.attr( "title" ) ) {
+                       this.element.attr( "title", this.element.val() );
+               }
+               if ( !create ) {
+                       originalElement = this.element.detach();
+                       $( this.wrapper ).text( this.element.val() ).append( originalElement );
+               }
+               if ( this.options.disabled !== isDisabled ) {
+                       this._setOptions({ disabled: isDisabled });
+               }
+       }
+});
+
+})( jQuery );
+
+(function( $ ) {
+       var     meta = $( "meta[name=viewport]" ),
+               initialContent = meta.attr( "content" ),
+               disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no",
+               enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes",
+               disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent );
+
+       $.mobile.zoom = $.extend( {}, {
+               enabled: !disabledInitially,
+               locked: false,
+               disable: function( lock ) {
+                       if ( !disabledInitially && !$.mobile.zoom.locked ) {
+                               meta.attr( "content", disabledZoom );
+                               $.mobile.zoom.enabled = false;
+                               $.mobile.zoom.locked = lock || false;
+                       }
+               },
+               enable: function( unlock ) {
+                       if ( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ) {
+                               meta.attr( "content", enabledZoom );
+                               $.mobile.zoom.enabled = true;
+                               $.mobile.zoom.locked = false;
+                       }
+               },
+               restore: function() {
+                       if ( !disabledInitially ) {
+                               meta.attr( "content", initialContent );
+                               $.mobile.zoom.enabled = true;
+                       }
+               }
+       });
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+$.widget( "mobile.textinput", {
+       initSelector: "input[type='text']," +
+               "input[type='search']," +
+               ":jqmData(type='search')," +
+               "input[type='number']," +
+               ":jqmData(type='number')," +
+               "input[type='password']," +
+               "input[type='email']," +
+               "input[type='url']," +
+               "input[type='tel']," +
+               "textarea," +
+               "input[type='time']," +
+               "input[type='date']," +
+               "input[type='month']," +
+               "input[type='week']," +
+               "input[type='datetime']," +
+               "input[type='datetime-local']," +
+               "input[type='color']," +
+               "input:not([type])," +
+               "input[type='file']",
+
+       options: {
+               theme: null,
+               corners: true,
+               mini: false,
+               // This option defaults to true on iOS devices.
+               preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1,
+               wrapperClass: "",
+               enhanced: false
+       },
+
+       _create: function() {
+
+               var options = this.options,
+                       isSearch = this.element.is( "[type='search'], :jqmData(type='search')" ),
+                       isTextarea = this.element[ 0 ].tagName === "TEXTAREA",
+                       isRange = this.element.is( "[data-" + ( $.mobile.ns || "" ) + "type='range']" ),
+                       inputNeedsWrap = ( (this.element.is( "input" ) ||
+                               this.element.is( "[data-" + ( $.mobile.ns || "" ) + "type='search']" ) ) &&
+                                       !isRange );
+
+               if ( this.element.prop( "disabled" ) ) {
+                       options.disabled = true;
+               }
+
+               $.extend( this, {
+                       classes: this._classesFromOptions(),
+                       isSearch: isSearch,
+                       isTextarea: isTextarea,
+                       isRange: isRange,
+                       inputNeedsWrap: inputNeedsWrap
+               });
+
+               this._autoCorrect();
+
+               if ( !options.enhanced ) {
+                       this._enhance();
+               }
+
+               this._on( {
+                       "focus": "_handleFocus",
+                       "blur": "_handleBlur"
+               });
+
+       },
+
+       refresh: function() {
+               this.setOptions({
+                       "disabled" : this.element.is( ":disabled" )
+               });
+       },
+
+       _enhance: function() {
+               var elementClasses = [];
+
+               if ( this.isTextarea ) {
+                       elementClasses.push( "ui-input-text" );
+               }
+
+               if ( this.isTextarea || this.isRange ) {
+                       elementClasses.push( "ui-shadow-inset" );
+               }
+
+               //"search" and "text" input widgets
+               if ( this.inputNeedsWrap ) {
+                       this.element.wrap( this._wrap() );
+               } else {
+                       elementClasses = elementClasses.concat( this.classes );
+               }
+
+               this.element.addClass( elementClasses.join( " " ) );
+       },
+
+       widget: function() {
+               return ( this.inputNeedsWrap ) ? this.element.parent() : this.element;
+       },
+
+       _classesFromOptions: function() {
+               var options = this.options,
+                       classes = [];
+
+               classes.push( "ui-body-" + ( ( options.theme === null ) ? "inherit" : options.theme ) );
+               if ( options.corners ) {
+                       classes.push( "ui-corner-all" );
+               }
+               if ( options.mini ) {
+                       classes.push( "ui-mini" );
+               }
+               if ( options.disabled ) {
+                       classes.push( "ui-state-disabled" );
+               }
+               if ( options.wrapperClass ) {
+                       classes.push( options.wrapperClass );
+               }
+
+               return classes;
+       },
+
+       _wrap: function() {
+               return $( "<div class='" +
+                       ( this.isSearch ? "ui-input-search " : "ui-input-text " ) +
+                       this.classes.join( " " ) + " " +
+                       "ui-shadow-inset'></div>" );
+       },
+
+       _autoCorrect: function() {
+               // XXX: Temporary workaround for issue 785 (Apple bug 8910589).
+               //      Turn off autocorrect and autocomplete on non-iOS 5 devices
+               //      since the popup they use can't be dismissed by the user. Note
+               //      that we test for the presence of the feature by looking for
+               //      the autocorrect property on the input element. We currently
+               //      have no test for iOS 5 or newer so we're temporarily using
+               //      the touchOverflow support flag for jQM 1.0. Yes, I feel dirty.
+               //      - jblas
+               if ( typeof this.element[0].autocorrect !== "undefined" &&
+                       !$.support.touchOverflow ) {
+
+                       // Set the attribute instead of the property just in case there
+                       // is code that attempts to make modifications via HTML.
+                       this.element[0].setAttribute( "autocorrect", "off" );
+                       this.element[0].setAttribute( "autocomplete", "off" );
+               }
+       },
+
+       _handleBlur: function() {
+               this.widget().removeClass( $.mobile.focusClass );
+               if ( this.options.preventFocusZoom ) {
+                       $.mobile.zoom.enable( true );
+               }
+       },
+
+       _handleFocus: function() {
+               // In many situations, iOS will zoom into the input upon tap, this
+               // prevents that from happening
+               if ( this.options.preventFocusZoom ) {
+                       $.mobile.zoom.disable( true );
+               }
+               this.widget().addClass( $.mobile.focusClass );
+       },
+
+       _setOptions: function ( options ) {
+               var outer = this.widget();
+
+               this._super( options );
+
+               if ( !( options.disabled === undefined &&
+                       options.mini === undefined &&
+                       options.corners === undefined &&
+                       options.theme === undefined &&
+                       options.wrapperClass === undefined ) ) {
+
+                       outer.removeClass( this.classes.join( " " ) );
+                       this.classes = this._classesFromOptions();
+                       outer.addClass( this.classes.join( " " ) );
+               }
+
+               if ( options.disabled !== undefined ) {
+                       this.element.prop( "disabled", !!options.disabled );
+               }
+       },
+
+       _destroy: function() {
+               if ( this.options.enhanced ) {
+                       return;
+               }
+               if ( this.inputNeedsWrap ) {
+                       this.element.unwrap();
+               }
+               this.element.removeClass( "ui-input-text " + this.classes.join( " " ) );
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.slider", $.extend( {
+       initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",
+
+       widgetEventPrefix: "slide",
+
+       options: {
+               theme: null,
+               trackTheme: null,
+               corners: true,
+               mini: false,
+               highlight: false
+       },
+
+       _create: function() {
+
+               // TODO: Each of these should have comments explain what they're for
+               var self = this,
+                       control = this.element,
+                       trackTheme = this.options.trackTheme || $.mobile.getAttribute( control[ 0 ], "theme" ),
+                       trackThemeClass = trackTheme ? " ui-bar-" + trackTheme : " ui-bar-inherit",
+                       cornerClass = ( this.options.corners || control.jqmData( "corners" ) ) ? " ui-corner-all" : "",
+                       miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-mini" : "",
+                       cType = control[ 0 ].nodeName.toLowerCase(),
+                       isToggleSwitch = ( cType === "select" ),
+                       isRangeslider = control.parent().is( ":jqmData(role='rangeslider')" ),
+                       selectClass = ( isToggleSwitch ) ? "ui-slider-switch" : "",
+                       controlID = control.attr( "id" ),
+                       $label = $( "[for='" + controlID + "']" ),
+                       labelID = $label.attr( "id" ) || controlID + "-label",
+                       min = !isToggleSwitch ? parseFloat( control.attr( "min" ) ) : 0,
+                       max =  !isToggleSwitch ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1,
+                       step = window.parseFloat( control.attr( "step" ) || 1 ),
+                       domHandle = document.createElement( "a" ),
+                       handle = $( domHandle ),
+                       domSlider = document.createElement( "div" ),
+                       slider = $( domSlider ),
+                       valuebg = this.options.highlight && !isToggleSwitch ? (function() {
+                               var bg = document.createElement( "div" );
+                               bg.className = "ui-slider-bg " + $.mobile.activeBtnClass;
+                               return $( bg ).prependTo( slider );
+                       })() : false,
+                       options,
+                       wrapper,
+                       j, length,
+                       i, optionsCount, origTabIndex,
+                       side, activeClass, sliderImg;
+
+               $label.attr( "id", labelID );
+               this.isToggleSwitch = isToggleSwitch;
+
+               domHandle.setAttribute( "href", "#" );
+               domSlider.setAttribute( "role", "application" );
+               domSlider.className = [ this.isToggleSwitch ? "ui-slider ui-slider-track ui-shadow-inset " : "ui-slider-track ui-shadow-inset ", selectClass, trackThemeClass, cornerClass, miniClass ].join( "" );
+               domHandle.className = "ui-slider-handle";
+               domSlider.appendChild( domHandle );
+
+               handle.attr({
+                       "role": "slider",
+                       "aria-valuemin": min,
+                       "aria-valuemax": max,
+                       "aria-valuenow": this._value(),
+                       "aria-valuetext": this._value(),
+                       "title": this._value(),
+                       "aria-labelledby": labelID
+               });
+
+               $.extend( this, {
+                       slider: slider,
+                       handle: handle,
+                       control: control,
+                       type: cType,
+                       step: step,
+                       max: max,
+                       min: min,
+                       valuebg: valuebg,
+                       isRangeslider: isRangeslider,
+                       dragging: false,
+                       beforeStart: null,
+                       userModified: false,
+                       mouseMoved: false
+               });
+
+               if ( isToggleSwitch ) {
+                       // TODO: restore original tabindex (if any) in a destroy method
+                       origTabIndex = control.attr( "tabindex" );
+                       if ( origTabIndex ) {
+                               handle.attr( "tabindex", origTabIndex );
+                       }
+                       control.attr( "tabindex", "-1" ).focus(function() {
+                               $( this ).blur();
+                               handle.focus();
+                       });
+
+                       wrapper = document.createElement( "div" );
+                       wrapper.className = "ui-slider-inneroffset";
+
+                       for ( j = 0, length = domSlider.childNodes.length; j < length; j++ ) {
+                               wrapper.appendChild( domSlider.childNodes[j] );
+                       }
+
+                       domSlider.appendChild( wrapper );
+
+                       // slider.wrapInner( "<div class='ui-slider-inneroffset'></div>" );
+
+                       // make the handle move with a smooth transition
+                       handle.addClass( "ui-slider-handle-snapping" );
+
+                       options = control.find( "option" );
+
+                       for ( i = 0, optionsCount = options.length; i < optionsCount; i++ ) {
+                               side = !i ? "b" : "a";
+                               activeClass = !i ? "" : " " + $.mobile.activeBtnClass;
+                               sliderImg = document.createElement( "span" );
+
+                               sliderImg.className = [ "ui-slider-label ui-slider-label-", side, activeClass ].join( "" );
+                               sliderImg.setAttribute( "role", "img" );
+                               sliderImg.appendChild( document.createTextNode( options[i].innerHTML ) );
+                               $( sliderImg ).prependTo( slider );
+                       }
+
+                       self._labels = $( ".ui-slider-label", slider );
+
+               }
+
+               // monitor the input for updated values
+               control.addClass( isToggleSwitch ? "ui-slider-switch" : "ui-slider-input" );
+
+               this._on( control, {
+                       "change": "_controlChange",
+                       "keyup": "_controlKeyup",
+                       "blur": "_controlBlur",
+                       "vmouseup": "_controlVMouseUp"
+               });
+
+               slider.bind( "vmousedown", $.proxy( this._sliderVMouseDown, this ) )
+                       .bind( "vclick", false );
+
+               // We have to instantiate a new function object for the unbind to work properly
+               // since the method itself is defined in the prototype (causing it to unbind everything)
+               this._on( document, { "vmousemove": "_preventDocumentDrag" });
+               this._on( slider.add( document ), { "vmouseup": "_sliderVMouseUp" });
+
+               slider.insertAfter( control );
+
+               // wrap in a div for styling purposes
+               if ( !isToggleSwitch && !isRangeslider ) {
+                       wrapper = this.options.mini ? "<div class='ui-slider ui-mini'>" : "<div class='ui-slider'>";
+
+                       control.add( slider ).wrapAll( wrapper );
+               }
+
+               // bind the handle event callbacks and set the context to the widget instance
+               this._on( this.handle, {
+                       "vmousedown": "_handleVMouseDown",
+                       "keydown": "_handleKeydown",
+                       "keyup": "_handleKeyup"
+               });
+
+               this.handle.bind( "vclick", false );
+
+               this._handleFormReset();
+
+               this.refresh( undefined, undefined, true );
+       },
+
+       _setOptions: function( options ) {
+               if ( options.theme !== undefined ) {
+                       this._setTheme( options.theme );
+               }
+
+               if ( options.trackTheme !== undefined ) {
+                       this._setTrackTheme( options.trackTheme );
+               }
+
+               if ( options.corners !== undefined ) {
+                       this._setCorners( options.corners );
+               }
+
+               if ( options.mini !== undefined ) {
+                       this._setMini( options.mini );
+               }
+
+               if ( options.highlight !== undefined ) {
+                       this._setHighlight( options.highlight );
+               }
+
+               if ( options.disabled !== undefined ) {
+                       this._setDisabled( options.disabled );
+               }
+               this._super( options );
+       },
+
+       _controlChange: function( event ) {
+               // if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again
+               if ( this._trigger( "controlchange", event ) === false ) {
+                       return false;
+               }
+               if ( !this.mouseMoved ) {
+                       this.refresh( this._value(), true );
+               }
+       },
+
+       _controlKeyup: function(/* event */) { // necessary?
+               this.refresh( this._value(), true, true );
+       },
+
+       _controlBlur: function(/* event */) {
+               this.refresh( this._value(), true );
+       },
+
+       // it appears the clicking the up and down buttons in chrome on
+       // range/number inputs doesn't trigger a change until the field is
+       // blurred. Here we check thif the value has changed and refresh
+       _controlVMouseUp: function(/* event */) {
+               this._checkedRefresh();
+       },
+
+       // NOTE force focus on handle
+       _handleVMouseDown: function(/* event */) {
+               this.handle.focus();
+       },
+
+       _handleKeydown: function( event ) {
+               var index = this._value();
+               if ( this.options.disabled ) {
+                       return;
+               }
+
+               // In all cases prevent the default and mark the handle as active
+               switch ( event.keyCode ) {
+                       case $.mobile.keyCode.HOME:
+                       case $.mobile.keyCode.END:
+                       case $.mobile.keyCode.PAGE_UP:
+                       case $.mobile.keyCode.PAGE_DOWN:
+                       case $.mobile.keyCode.UP:
+                       case $.mobile.keyCode.RIGHT:
+                       case $.mobile.keyCode.DOWN:
+                       case $.mobile.keyCode.LEFT:
+                               event.preventDefault();
+
+                               if ( !this._keySliding ) {
+                                       this._keySliding = true;
+                                       this.handle.addClass( "ui-state-active" ); /* TODO: We don't use this class for styling. Do we need to add it? */
+                               }
+
+                               break;
+               }
+
+               // move the slider according to the keypress
+               switch ( event.keyCode ) {
+                       case $.mobile.keyCode.HOME:
+                               this.refresh( this.min );
+                               break;
+                       case $.mobile.keyCode.END:
+                               this.refresh( this.max );
+                               break;
+                       case $.mobile.keyCode.PAGE_UP:
+                       case $.mobile.keyCode.UP:
+                       case $.mobile.keyCode.RIGHT:
+                               this.refresh( index + this.step );
+                               break;
+                       case $.mobile.keyCode.PAGE_DOWN:
+                       case $.mobile.keyCode.DOWN:
+                       case $.mobile.keyCode.LEFT:
+                               this.refresh( index - this.step );
+                               break;
+               }
+       }, // remove active mark
+
+       _handleKeyup: function(/* event */) {
+               if ( this._keySliding ) {
+                       this._keySliding = false;
+                       this.handle.removeClass( "ui-state-active" ); /* See comment above. */
+               }
+       },
+
+       _sliderVMouseDown: function( event ) {
+               // NOTE: we don't do this in refresh because we still want to
+               //       support programmatic alteration of disabled inputs
+               if ( this.options.disabled || !( event.which === 1 || event.which === 0 || event.which === undefined ) ) {
+                       return false;
+               }
+               if ( this._trigger( "beforestart", event ) === false ) {
+                       return false;
+               }
+               this.dragging = true;
+               this.userModified = false;
+               this.mouseMoved = false;
+
+               if ( this.isToggleSwitch ) {
+                       this.beforeStart = this.element[0].selectedIndex;
+               }
+
+               this.refresh( event );
+               this._trigger( "start" );
+               return false;
+       },
+
+       _sliderVMouseUp: function() {
+               if ( this.dragging ) {
+                       this.dragging = false;
+
+                       if ( this.isToggleSwitch ) {
+                               // make the handle move with a smooth transition
+                               this.handle.addClass( "ui-slider-handle-snapping" );
+
+                               if ( this.mouseMoved ) {
+                                       // this is a drag, change the value only if user dragged enough
+                                       if ( this.userModified ) {
+                                               this.refresh( this.beforeStart === 0 ? 1 : 0 );
+                                       } else {
+                                               this.refresh( this.beforeStart );
+                                       }
+                               } else {
+                                       // this is just a click, change the value
+                                       this.refresh( this.beforeStart === 0 ? 1 : 0 );
+                               }
+                       }
+
+                       this.mouseMoved = false;
+                       this._trigger( "stop" );
+                       return false;
+               }
+       },
+
+       _preventDocumentDrag: function( event ) {
+                       // NOTE: we don't do this in refresh because we still want to
+                       //       support programmatic alteration of disabled inputs
+                       if ( this._trigger( "drag", event ) === false) {
+                               return false;
+                       }
+                       if ( this.dragging && !this.options.disabled ) {
+
+                               // this.mouseMoved must be updated before refresh() because it will be used in the control "change" event
+                               this.mouseMoved = true;
+
+                               if ( this.isToggleSwitch ) {
+                                       // make the handle move in sync with the mouse
+                                       this.handle.removeClass( "ui-slider-handle-snapping" );
+                               }
+
+                               this.refresh( event );
+
+                               // only after refresh() you can calculate this.userModified
+                               this.userModified = this.beforeStart !== this.element[0].selectedIndex;
+                               return false;
+                       }
+               },
+
+       _checkedRefresh: function() {
+               if ( this.value !== this._value() ) {
+                       this.refresh( this._value() );
+               }
+       },
+
+       _value: function() {
+               return  this.isToggleSwitch ? this.element[0].selectedIndex : parseFloat( this.element.val() ) ;
+       },
+
+       _reset: function() {
+               this.refresh( undefined, false, true );
+       },
+
+       refresh: function( val, isfromControl, preventInputUpdate ) {
+               // NOTE: we don't return here because we want to support programmatic
+               //       alteration of the input value, which should still update the slider
+
+               var self = this,
+                       parentTheme = $.mobile.getAttribute( this.element[ 0 ], "theme" ),
+                       theme = this.options.theme || parentTheme,
+                       themeClass =  theme ? " ui-btn-" + theme : "",
+                       trackTheme = this.options.trackTheme || parentTheme,
+                       trackThemeClass = trackTheme ? " ui-bar-" + trackTheme : " ui-bar-inherit",
+                       cornerClass = this.options.corners ? " ui-corner-all" : "",
+                       miniClass = this.options.mini ? " ui-mini" : "",
+                       left, width, data, tol,
+                       pxStep, percent,
+                       control, isInput, optionElements, min, max, step,
+                       newval, valModStep, alignValue, percentPerStep,
+                       handlePercent, aPercent, bPercent,
+                       valueChanged;
+
+               self.slider[0].className = [ this.isToggleSwitch ? "ui-slider ui-slider-switch ui-slider-track ui-shadow-inset" : "ui-slider-track ui-shadow-inset", trackThemeClass, cornerClass, miniClass ].join( "" );
+               if ( this.options.disabled || this.element.prop( "disabled" ) ) {
+                       this.disable();
+               }
+
+               // set the stored value for comparison later
+               this.value = this._value();
+               if ( this.options.highlight && !this.isToggleSwitch && this.slider.find( ".ui-slider-bg" ).length === 0 ) {
+                       this.valuebg = (function() {
+                               var bg = document.createElement( "div" );
+                               bg.className = "ui-slider-bg " + $.mobile.activeBtnClass;
+                               return $( bg ).prependTo( self.slider );
+                       })();
+               }
+               this.handle.addClass( "ui-btn" + themeClass + " ui-shadow" );
+
+               control = this.element;
+               isInput = !this.isToggleSwitch;
+               optionElements = isInput ? [] : control.find( "option" );
+               min =  isInput ? parseFloat( control.attr( "min" ) ) : 0;
+               max = isInput ? parseFloat( control.attr( "max" ) ) : optionElements.length - 1;
+               step = ( isInput && parseFloat( control.attr( "step" ) ) > 0 ) ? parseFloat( control.attr( "step" ) ) : 1;
+
+               if ( typeof val === "object" ) {
+                       data = val;
+                       // a slight tolerance helped get to the ends of the slider
+                       tol = 8;
+
+                       left = this.slider.offset().left;
+                       width = this.slider.width();
+                       pxStep = width/((max-min)/step);
+                       if ( !this.dragging ||
+                                       data.pageX < left - tol ||
+                                       data.pageX > left + width + tol ) {
+                               return;
+                       }
+                       if ( pxStep > 1 ) {
+                               percent = ( ( data.pageX - left ) / width ) * 100;
+                       } else {
+                               percent = Math.round( ( ( data.pageX - left ) / width ) * 100 );
+                       }
+               } else {
+                       if ( val == null ) {
+                               val = isInput ? parseFloat( control.val() || 0 ) : control[0].selectedIndex;
+                       }
+                       percent = ( parseFloat( val ) - min ) / ( max - min ) * 100;
+               }
+
+               if ( isNaN( percent ) ) {
+                       return;
+               }
+
+               newval = ( percent / 100 ) * ( max - min ) + min;
+
+               //from jQuery UI slider, the following source will round to the nearest step
+               valModStep = ( newval - min ) % step;
+               alignValue = newval - valModStep;
+
+               if ( Math.abs( valModStep ) * 2 >= step ) {
+                       alignValue += ( valModStep > 0 ) ? step : ( -step );
+               }
+
+               percentPerStep = 100/((max-min)/step);
+               // Since JavaScript has problems with large floats, round
+               // the final value to 5 digits after the decimal point (see jQueryUI: #4124)
+               newval = parseFloat( alignValue.toFixed(5) );
+
+               if ( typeof pxStep === "undefined" ) {
+                       pxStep = width / ( (max-min) / step );
+               }
+               if ( pxStep > 1 && isInput ) {
+                       percent = ( newval - min ) * percentPerStep * ( 1 / step );
+               }
+               if ( percent < 0 ) {
+                       percent = 0;
+               }
+
+               if ( percent > 100 ) {
+                       percent = 100;
+               }
+
+               if ( newval < min ) {
+                       newval = min;
+               }
+
+               if ( newval > max ) {
+                       newval = max;
+               }
+
+               this.handle.css( "left", percent + "%" );
+
+               this.handle[0].setAttribute( "aria-valuenow", isInput ? newval : optionElements.eq( newval ).attr( "value" ) );
+
+               this.handle[0].setAttribute( "aria-valuetext", isInput ? newval : optionElements.eq( newval ).getEncodedText() );
+
+               this.handle[0].setAttribute( "title", isInput ? newval : optionElements.eq( newval ).getEncodedText() );
+
+               if ( this.valuebg ) {
+                       this.valuebg.css( "width", percent + "%" );
+               }
+
+               // drag the label widths
+               if ( this._labels ) {
+                       handlePercent = this.handle.width() / this.slider.width() * 100;
+                       aPercent = percent && handlePercent + ( 100 - handlePercent ) * percent / 100;
+                       bPercent = percent === 100 ? 0 : Math.min( handlePercent + 100 - aPercent, 100 );
+
+                       this._labels.each(function() {
+                               var ab = $( this ).hasClass( "ui-slider-label-a" );
+                               $( this ).width( ( ab ? aPercent : bPercent  ) + "%" );
+                       });
+               }
+
+               if ( !preventInputUpdate ) {
+                       valueChanged = false;
+
+                       // update control"s value
+                       if ( isInput ) {
+                               valueChanged = parseFloat( control.val() ) !== newval;
+                               control.val( newval );
+                       } else {
+                               valueChanged = control[ 0 ].selectedIndex !== newval;
+                               control[ 0 ].selectedIndex = newval;
+                       }
+                       if ( this._trigger( "beforechange", val ) === false) {
+                                       return false;
+                       }
+                       if ( !isfromControl && valueChanged ) {
+                               control.trigger( "change" );
+                       }
+               }
+       },
+
+       _setHighlight: function( value ) {
+               value = !!value;
+               if ( value ) {
+                       this.options.highlight = !!value;
+                       this.refresh();
+               } else if ( this.valuebg ) {
+                       this.valuebg.remove();
+                       this.valuebg = false;
+               }
+       },
+
+       _setTheme: function( value ) {
+               this.handle
+                       .removeClass( "ui-btn-" + this.options.theme )
+                       .addClass( "ui-btn-" + value );
+
+               var currentTheme = this.options.theme ? this.options.theme : "inherit",
+                       newTheme = value ? value : "inherit";
+
+               this.control
+                       .removeClass( "ui-body-" + currentTheme )
+                       .addClass( "ui-body-" + newTheme );
+       },
+
+       _setTrackTheme: function( value ) {
+               var currentTrackTheme = this.options.trackTheme ? this.options.trackTheme : "inherit",
+                       newTrackTheme = value ? value : "inherit";
+
+               this.slider
+                       .removeClass( "ui-body-" + currentTrackTheme )
+                       .addClass( "ui-body-" + newTrackTheme );
+       },
+
+       _setMini: function( value ) {
+               value = !!value;
+               if ( !this.isToggleSwitch && !this.isRangeslider ) {
+                       this.slider.parent().toggleClass( "ui-mini", value );
+                       this.element.toggleClass( "ui-mini", value );
+               }
+               this.slider.toggleClass( "ui-mini", value );
+       },
+
+       _setCorners: function( value ) {
+               this.slider.toggleClass( "ui-corner-all", value );
+
+               if ( !this.isToggleSwitch ) {
+                       this.control.toggleClass( "ui-corner-all", value );
+               }
+       },
+
+       _setDisabled: function( value ) {
+               value = !!value;
+               this.element.prop( "disabled", value );
+               this.slider
+                       .toggleClass( "ui-state-disabled", value )
+                       .attr( "aria-disabled", value );
+
+               this.element.toggleClass( "ui-state-disabled", value );
+       }
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var popup;
+
+function getPopup() {
+       if ( !popup ) {
+               popup = $( "<div></div>", {
+                       "class": "ui-slider-popup ui-shadow ui-corner-all"
+               });
+       }
+       return popup.clone();
+}
+
+$.widget( "mobile.slider", $.mobile.slider, {
+       options: {
+               popupEnabled: false,
+               showValue: false
+       },
+
+       _create: function() {
+               this._super();
+
+               $.extend( this, {
+                       _currentValue: null,
+                       _popup: null,
+                       _popupVisible: false
+               });
+
+               this._setOption( "popupEnabled", this.options.popupEnabled );
+
+               this._on( this.handle, { "vmousedown" : "_showPopup" } );
+               this._on( this.slider.add( this.document ), { "vmouseup" : "_hidePopup" } );
+               this._refresh();
+       },
+
+       // position the popup centered 5px above the handle
+       _positionPopup: function() {
+               var dstOffset = this.handle.offset();
+
+               this._popup.offset( {
+                       left: dstOffset.left + ( this.handle.width() - this._popup.width() ) / 2,
+                       top: dstOffset.top - this._popup.outerHeight() - 5
+               });
+       },
+
+       _setOption: function( key, value ) {
+               this._super( key, value );
+
+               if ( key === "showValue" ) {
+                       this.handle.html( value && !this.options.mini ? this._value() : "" );
+               } else if ( key === "popupEnabled" ) {
+                       if ( value && !this._popup ) {
+                               this._popup = getPopup()
+                                       .addClass( "ui-body-" + ( this.options.theme || "a" ) )
+                                       .hide()
+                                       .insertBefore( this.element );
+                       }
+               }
+       },
+
+       // show value on the handle and in popup
+       refresh: function() {
+               this._super.apply( this, arguments );
+               this._refresh();
+       },
+
+       _refresh: function() {
+               var o = this.options, newValue;
+
+               if ( o.popupEnabled ) {
+                       // remove the title attribute from the handle (which is
+                       // responsible for the annoying tooltip); NB we have
+                       // to do it here as the jqm slider sets it every time
+                       // the slider's value changes :(
+                       this.handle.removeAttr( "title" );
+               }
+
+               newValue = this._value();
+               if ( newValue === this._currentValue ) {
+                       return;
+               }
+               this._currentValue = newValue;
+
+               if ( o.popupEnabled && this._popup ) {
+                       this._positionPopup();
+                       this._popup.html( newValue );
+               }
+
+               if ( o.showValue && !this.options.mini ) {
+                       this.handle.html( newValue );
+               }
+       },
+
+       _showPopup: function() {
+               if ( this.options.popupEnabled && !this._popupVisible ) {
+                       this.handle.html( "" );
+                       this._popup.show();
+                       this._positionPopup();
+                       this._popupVisible = true;
+               }
+       },
+
+       _hidePopup: function() {
+               var o = this.options;
+
+               if ( o.popupEnabled && this._popupVisible ) {
+                       if ( o.showValue && !o.mini ) {
+                               this.handle.html( this._value() );
+                       }
+                       this._popup.hide();
+                       this._popupVisible = false;
+               }
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.flipswitch", $.extend({
+
+       options: {
+               onText: "On",
+               offText: "Off",
+               theme: null,
+               enhanced: false,
+               wrapperClass: null,
+               corners: true,
+               mini: false
+       },
+
+       _create: function() {
+                       if ( !this.options.enhanced ) {
+                               this._enhance();
+                       } else {
+                               $.extend( this, {
+                                       flipswitch: this.element.parent(),
+                                       on: this.element.find( ".ui-flipswitch-on" ).eq( 0 ),
+                                       off: this.element.find( ".ui-flipswitch-off" ).eq(0),
+                                       type: this.element.get( 0 ).tagName
+                               });
+                       }
+
+                       this._handleFormReset();
+
+                       // Transfer tabindex to "on" element and make input unfocusable
+                       this._originalTabIndex = this.element.attr( "tabindex" );
+                       if ( this._originalTabIndex != null ) {
+                               this.on.attr( "tabindex", this._originalTabIndex );
+                       }
+                       this.element.attr( "tabindex", "-1" );
+                       this._on({
+                               "focus" : "_handleInputFocus"
+                       });
+
+                       if ( this.element.is( ":disabled" ) ) {
+                               this._setOptions({
+                                       "disabled": true
+                               });
+                       }
+
+                       this._on( this.flipswitch, {
+                               "click": "_toggle",
+                               "swipeleft": "_left",
+                               "swiperight": "_right"
+                       });
+
+                       this._on( this.on, {
+                               "keydown": "_keydown"
+                       });
+
+                       this._on( {
+                               "change": "refresh"
+                       });
+       },
+
+       _handleInputFocus: function() {
+               this.on.focus();
+       },
+
+       widget: function() {
+               return this.flipswitch;
+       },
+
+       _left: function() {
+               this.flipswitch.removeClass( "ui-flipswitch-active" );
+               if ( this.type === "SELECT" ) {
+                       this.element.get( 0 ).selectedIndex = 0;
+               } else {
+                       this.element.prop( "checked", false );
+               }
+               this.element.trigger( "change" );
+       },
+
+       _right: function() {
+               this.flipswitch.addClass( "ui-flipswitch-active" );
+               if ( this.type === "SELECT" ) {
+                       this.element.get( 0 ).selectedIndex = 1;
+               } else {
+                       this.element.prop( "checked", true );
+               }
+               this.element.trigger( "change" );
+       },
+
+       _enhance: function() {
+               var flipswitch = $( "<div>" ),
+                       options = this.options,
+                       element = this.element,
+                       theme = options.theme ? options.theme : "inherit",
+
+                       // The "on" button is an anchor so it's focusable
+                       on = $( "<a></a>", {
+                               "href": "#"
+                       }),
+                       off = $( "<span></span>" ),
+                       type = element.get( 0 ).tagName,
+                       onText = ( type === "INPUT" ) ?
+                               options.onText : element.find( "option" ).eq( 1 ).text(),
+                       offText = ( type === "INPUT" ) ?
+                               options.offText : element.find( "option" ).eq( 0 ).text();
+
+                       on
+                               .addClass( "ui-flipswitch-on ui-btn ui-shadow ui-btn-inherit" )
+                               .text( onText );
+                       off
+                               .addClass( "ui-flipswitch-off" )
+                               .text( offText );
+
+                       flipswitch
+                               .addClass( "ui-flipswitch ui-shadow-inset " +
+                                       "ui-bar-" + theme + " " +
+                                       ( options.wrapperClass ? options.wrapperClass : "" ) + " " +
+                                       ( ( element.is( ":checked" ) ||
+                                               element
+                                                       .find( "option" )
+                                                       .eq( 1 )
+                                                       .is( ":selected" ) ) ? "ui-flipswitch-active" : "" ) +
+                                       ( element.is(":disabled") ? " ui-state-disabled": "") +
+                                       ( options.corners ? " ui-corner-all": "" ) +
+                                       ( options.mini ? " ui-mini": "" ) )
+                               .append( on, off );
+
+                       element
+                               .addClass( "ui-flipswitch-input" )
+                               .after( flipswitch )
+                               .appendTo( flipswitch );
+
+               $.extend( this, {
+                       flipswitch: flipswitch,
+                       on: on,
+                       off: off,
+                       type: type
+               });
+       },
+
+       _reset: function() {
+               this.refresh();
+       },
+
+       refresh: function() {
+               var direction,
+                       existingDirection = this.flipswitch.hasClass( "ui-flipswitch-active" ) ? "_right" : "_left";
+
+               if ( this.type === "SELECT" ) {
+                       direction = ( this.element.get( 0 ).selectedIndex > 0 ) ? "_right": "_left";
+               } else {
+                       direction = this.element.prop( "checked" ) ? "_right": "_left";
+               }
+
+               if ( direction !== existingDirection ) {
+                       this[ direction ]();
+               }
+       },
+
+       _toggle: function() {
+               var direction = this.flipswitch.hasClass( "ui-flipswitch-active" ) ? "_left" : "_right";
+
+               this[ direction ]();
+       },
+
+       _keydown: function( e ) {
+               if ( e.which === $.mobile.keyCode.LEFT ) {
+                       this._left();
+               } else if ( e.which === $.mobile.keyCode.RIGHT ) {
+                       this._right();
+               } else if ( e.which === $.mobile.keyCode.SPACE ) {
+                       this._toggle();
+                       e.preventDefault();
+               }
+       },
+
+       _setOptions: function( options ) {
+               if ( options.theme !== undefined ) {
+                       var currentTheme = options.theme ? options.theme : "inherit",
+                               newTheme = options.theme ? options.theme : "inherit";
+
+                       this.widget()
+                               .removeClass( "ui-bar-" + currentTheme )
+                               .addClass( "ui-bar-" + newTheme );
+               }
+               if ( options.onText !== undefined ) {
+                       this.on.text( options.onText );
+               }
+               if ( options.offText !== undefined ) {
+                       this.off.text( options.offText );
+               }
+               if ( options.disabled !== undefined ) {
+                       this.widget().toggleClass( "ui-state-disabled", options.disabled );
+               }
+               if ( options.mini !== undefined ) {
+                       this.widget().toggleClass( "ui-mini", options.mini );
+               }
+               if ( options.corners !== undefined ) {
+                       this.widget().toggleClass( "ui-corner-all", options.corners );
+               }
+
+               this._super( options );
+       },
+
+       _destroy: function() {
+               if ( this.options.enhanced ) {
+                       return;
+               }
+               if ( this._originalTabIndex != null ) {
+                       this.element.attr( "tabindex", this._originalTabIndex );
+               } else {
+                       this.element.removeAttr( "tabindex" );
+               }
+               this.on.remove();
+               this.off.remove();
+               this.element.unwrap();
+               this.flipswitch.remove();
+               this.removeClass( "ui-flipswitch-input" );
+       }
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+       $.widget( "mobile.rangeslider", $.extend( {
+
+               options: {
+                       theme: null,
+                       trackTheme: null,
+                       corners: true,
+                       mini: false,
+                       highlight: true
+               },
+
+               _create: function() {
+                       var $el = this.element,
+                       elClass = this.options.mini ? "ui-rangeslider ui-mini" : "ui-rangeslider",
+                       _inputFirst = $el.find( "input" ).first(),
+                       _inputLast = $el.find( "input" ).last(),
+                       _label = $el.find( "label" ).first(),
+                       _sliderWidgetFirst = $.data( _inputFirst.get( 0 ), "mobile-slider" ) ||
+                               $.data( _inputFirst.slider().get( 0 ), "mobile-slider" ),
+                       _sliderWidgetLast = $.data( _inputLast.get(0), "mobile-slider" ) ||
+                               $.data( _inputLast.slider().get( 0 ), "mobile-slider" ),
+                       _sliderFirst = _sliderWidgetFirst.slider,
+                       _sliderLast = _sliderWidgetLast.slider,
+                       firstHandle = _sliderWidgetFirst.handle,
+                       _sliders = $( "<div class='ui-rangeslider-sliders' />" ).appendTo( $el );
+
+                       _inputFirst.addClass( "ui-rangeslider-first" );
+                       _inputLast.addClass( "ui-rangeslider-last" );
+                       $el.addClass( elClass );
+
+                       _sliderFirst.appendTo( _sliders );
+                       _sliderLast.appendTo( _sliders );
+                       _label.insertBefore( $el );
+                       firstHandle.prependTo( _sliderLast );
+
+                       $.extend( this, {
+                               _inputFirst: _inputFirst,
+                               _inputLast: _inputLast,
+                               _sliderFirst: _sliderFirst,
+                               _sliderLast: _sliderLast,
+                               _label: _label,
+                               _targetVal: null,
+                               _sliderTarget: false,
+                               _sliders: _sliders,
+                               _proxy: false
+                       });
+
+                       this.refresh();
+                       this._on( this.element.find( "input.ui-slider-input" ), {
+                               "slidebeforestart": "_slidebeforestart",
+                               "slidestop": "_slidestop",
+                               "slidedrag": "_slidedrag",
+                               "slidebeforechange": "_change",
+                               "blur": "_change",
+                               "keyup": "_change"
+                       });
+                       this._on({
+                               "mousedown":"_change"
+                       });
+                       this._on( this.element.closest( "form" ), {
+                               "reset":"_handleReset"
+                       });
+                       this._on( firstHandle, {
+                               "vmousedown": "_dragFirstHandle"
+                       });
+               },
+               _handleReset: function() {
+                       var self = this;
+                       //we must wait for the stack to unwind before updateing other wise sliders will not have updated yet
+                       setTimeout( function() {
+                               self._updateHighlight();
+                       },0);
+               },
+
+               _dragFirstHandle: function( event ) {
+                       //if the first handle is dragged send the event to the first slider
+                       $.data( this._inputFirst.get(0), "mobile-slider" ).dragging = true;
+                       $.data( this._inputFirst.get(0), "mobile-slider" ).refresh( event );
+                       $.data( this._inputFirst.get(0), "mobile-slider" )._trigger( "start" );
+                       return false;
+               },
+
+               _slidedrag: function( event ) {
+                       var first = $( event.target ).is( this._inputFirst ),
+                               otherSlider = ( first ) ? this._inputLast : this._inputFirst;
+
+                       this._sliderTarget = false;
+                       //if the drag was initiated on an extreme and the other handle is focused send the events to
+                       //the closest handle
+                       if ( ( this._proxy === "first" && first ) || ( this._proxy === "last" && !first ) ) {
+                               $.data( otherSlider.get(0), "mobile-slider" ).dragging = true;
+                               $.data( otherSlider.get(0), "mobile-slider" ).refresh( event );
+                               return false;
+                       }
+               },
+
+               _slidestop: function( event ) {
+                       var first = $( event.target ).is( this._inputFirst );
+
+                       this._proxy = false;
+                       //this stops dragging of the handle and brings the active track to the front
+                       //this makes clicks on the track go the the last handle used
+                       this.element.find( "input" ).trigger( "vmouseup" );
+                       this._sliderFirst.css( "z-index", first ? 1 : "" );
+               },
+
+               _slidebeforestart: function( event ) {
+                       this._sliderTarget = false;
+                       //if the track is the target remember this and the original value
+                       if ( $( event.originalEvent.target ).hasClass( "ui-slider-track" ) ) {
+                               this._sliderTarget = true;
+                               this._targetVal = $( event.target ).val();
+                       }
+               },
+
+               _setOptions: function( options ) {
+                       if ( options.theme !== undefined ) {
+                               this._setTheme( options.theme );
+                       }
+
+                       if ( options.trackTheme !== undefined ) {
+                               this._setTrackTheme( options.trackTheme );
+                       }
+
+                       if ( options.mini !== undefined ) {
+                               this._setMini( options.mini );
+                       }
+
+                       if ( options.highlight !== undefined ) {
+                               this._setHighlight( options.highlight );
+                       }
+
+                       if ( options.disabled !== undefined ) {
+                               this._setDisabled( options.disabled );
+                       }
+
+                       this._super( options );
+                       this.refresh();
+               },
+
+               refresh: function() {
+                       var $el = this.element,
+                               o = this.options;
+
+                       if ( this._inputFirst.is( ":disabled" ) || this._inputLast.is( ":disabled" ) ) {
+                               this.options.disabled = true;
+                       }
+
+                       $el.find( "input" ).slider({
+                               theme: o.theme,
+                               trackTheme: o.trackTheme,
+                               disabled: o.disabled,
+                               corners: o.corners,
+                               mini: o.mini,
+                               highlight: o.highlight
+                       }).slider( "refresh" );
+                       this._updateHighlight();
+               },
+
+               _change: function( event ) {
+                       if ( event.type === "keyup" ) {
+                               this._updateHighlight();
+                               return false;
+                       }
+
+                       var self = this,
+                               min = parseFloat( this._inputFirst.val(), 10 ),
+                               max = parseFloat( this._inputLast.val(), 10 ),
+                               first = $( event.target ).hasClass( "ui-rangeslider-first" ),
+                               thisSlider = first ? this._inputFirst : this._inputLast,
+                               otherSlider = first ? this._inputLast : this._inputFirst;
+
+                       if ( ( this._inputFirst.val() > this._inputLast.val() && event.type === "mousedown" && !$(event.target).hasClass("ui-slider-handle")) ) {
+                               thisSlider.blur();
+                       } else if ( event.type === "mousedown" ) {
+                               return;
+                       }
+                       if ( min > max && !this._sliderTarget ) {
+                               //this prevents min from being greater then max
+                               thisSlider.val( first ? max: min ).slider( "refresh" );
+                               this._trigger( "normalize" );
+                       } else if ( min > max ) {
+                               //this makes it so clicks on the target on either extreme go to the closest handle
+                               thisSlider.val( this._targetVal ).slider( "refresh" );
+
+                               //You must wait for the stack to unwind so first slider is updated before updating second
+                               setTimeout( function() {
+                                       otherSlider.val( first ? min: max ).slider( "refresh" );
+                                       $.data( otherSlider.get(0), "mobile-slider" ).handle.focus();
+                                       self._sliderFirst.css( "z-index", first ? "" : 1 );
+                                       self._trigger( "normalize" );
+                               }, 0 );
+                               this._proxy = ( first ) ? "first" : "last";
+                       }
+                       //fixes issue where when both _sliders are at min they cannot be adjusted
+                       if ( min === max ) {
+                               $.data( thisSlider.get(0), "mobile-slider" ).handle.css( "z-index", 1 );
+                               $.data( otherSlider.get(0), "mobile-slider" ).handle.css( "z-index", 0 );
+                       } else {
+                               $.data( otherSlider.get(0), "mobile-slider" ).handle.css( "z-index", "" );
+                               $.data( thisSlider.get(0), "mobile-slider" ).handle.css( "z-index", "" );
+                       }
+
+                       this._updateHighlight();
+
+                       if ( min >= max ) {
+                               return false;
+                       }
+               },
+
+               _updateHighlight: function() {
+                       var min = parseInt( $.data( this._inputFirst.get(0), "mobile-slider" ).handle.get(0).style.left, 10 ),
+                               max = parseInt( $.data( this._inputLast.get(0), "mobile-slider" ).handle.get(0).style.left, 10 ),
+                               width = (max - min);
+
+                       this.element.find( ".ui-slider-bg" ).css({
+                               "margin-left": min + "%",
+                               "width": width + "%"
+                       });
+               },
+
+               _setTheme: function( value ) {
+                       this._inputFirst.slider( "option", "theme", value );
+                       this._inputLast.slider( "option", "theme", value );
+               },
+
+               _setTrackTheme: function( value ) {
+                       this._inputFirst.slider( "option", "trackTheme", value );
+                       this._inputLast.slider( "option", "trackTheme", value );
+               },
+
+               _setMini: function( value ) {
+                       this._inputFirst.slider( "option", "mini", value );
+                       this._inputLast.slider( "option", "mini", value );
+                       this.element.toggleClass( "ui-mini", !!value );
+               },
+
+               _setHighlight: function( value ) {
+                       this._inputFirst.slider( "option", "highlight", value );
+                       this._inputLast.slider( "option", "highlight", value );
+               },
+
+               _setDisabled: function( value ) {
+                       this._inputFirst.prop( "disabled", value );
+                       this._inputLast.prop( "disabled", value );
+               },
+
+               _destroy: function() {
+                       this._label.prependTo( this.element );
+                       this.element.removeClass( "ui-rangeslider ui-mini" );
+                       this._inputFirst.after( this._sliderFirst );
+                       this._inputLast.after( this._sliderLast );
+                       this._sliders.remove();
+                       this.element.find( "input" ).removeClass( "ui-rangeslider-first ui-rangeslider-last" ).slider( "destroy" );
+               }
+
+       }, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+       $.widget( "mobile.textinput", $.mobile.textinput, {
+               options: {
+                       clearBtn: false,
+                       clearBtnText: "Clear text"
+               },
+
+               _create: function() {
+                       this._super();
+
+                       if ( this.isSearch ) {
+                               this.options.clearBtn = true;
+                       }
+
+                       if ( !!this.options.clearBtn && this.inputNeedsWrap ) {
+                               this._addClearBtn();
+                       }
+               },
+
+               clearButton: function() {
+                       return $( "<a href='#' tabindex='-1' aria-hidden='true' " +
+                               "class='ui-input-clear ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all'>" +
+                               "</a>" )
+                                       .attr( "title", this.options.clearBtnText )
+                                       .text( this.options.clearBtnText );
+               },
+
+               _clearBtnClick: function( event ) {
+                       this.element.val( "" )
+                                       .focus()
+                                       .trigger( "change" );
+
+                       this._clearBtn.addClass( "ui-input-clear-hidden" );
+                       event.preventDefault();
+               },
+
+               _addClearBtn: function() {
+
+                       if ( !this.options.enhanced ) {
+                               this._enhanceClear();
+                       }
+
+                       $.extend( this, {
+                               _clearBtn: this.widget().find("a.ui-input-clear")
+                       });
+
+                       this._bindClearEvents();
+
+                       this._toggleClear();
+
+               },
+
+               _enhanceClear: function() {
+
+                       this.clearButton().appendTo( this.widget() );
+                       this.widget().addClass( "ui-input-has-clear" );
+
+               },
+
+               _bindClearEvents: function() {
+
+                       this._on( this._clearBtn, {
+                               "click": "_clearBtnClick"
+                       });
+
+                       this._on({
+                               "keyup": "_toggleClear",
+                               "change": "_toggleClear",
+                               "input": "_toggleClear",
+                               "focus": "_toggleClear",
+                               "blur": "_toggleClear",
+                               "cut": "_toggleClear",
+                               "paste": "_toggleClear"
+
+                       });
+
+               },
+
+               _unbindClear: function() {
+                       this._off( this._clearBtn, "click");
+                       this._off( this.element, "keyup change input focus blur cut paste" );
+               },
+
+               _setOptions: function( options ) {
+                       this._super( options );
+
+                       if ( options.clearBtn !== undefined &&
+                               !this.element.is( "textarea, :jqmData(type='range')" ) ) {
+                               if ( options.clearBtn ) {
+                                       this._addClearBtn();
+                               } else {
+                                       this._destroyClear();
+                               }
+                       }
+
+                       if ( options.clearBtnText !== undefined && this._clearBtn !== undefined ) {
+                               this._clearBtn.text( options.clearBtnText )
+                                       .attr("title", options.clearBtnText);
+                       }
+               },
+
+               _toggleClear: function() {
+                       this._delay( "_toggleClearClass", 0 );
+               },
+
+               _toggleClearClass: function() {
+                       this._clearBtn.toggleClass( "ui-input-clear-hidden", !this.element.val() );
+               },
+
+               _destroyClear: function() {
+                       this.widget().removeClass( "ui-input-has-clear" );
+                       this._unbindClear();
+                       this._clearBtn.remove();
+               },
+
+               _destroy: function() {
+                       this._super();
+                       if ( this.options.clearBtn ) {
+                               this._destroyClear();
+                       }
+               }
+
+       });
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+       $.widget( "mobile.textinput", $.mobile.textinput, {
+               options: {
+                       autogrow:true,
+                       keyupTimeoutBuffer: 100
+               },
+
+               _create: function() {
+                       this._super();
+
+                       if ( this.options.autogrow && this.isTextarea ) {
+                               this._autogrow();
+                       }
+               },
+
+               _autogrow: function() {
+                       this.element.addClass( "ui-textinput-autogrow" );
+
+                       this._on({
+                               "keyup": "_timeout",
+                               "change": "_timeout",
+                               "input": "_timeout",
+                               "paste": "_timeout"
+                       });
+
+                       // Attach to the various you-have-become-visible notifications that the
+                       // various framework elements emit.
+                       // TODO: Remove all but the updatelayout handler once #6426 is fixed.
+                       this._on( true, this.document, {
+
+                               // TODO: Move to non-deprecated event
+                               "pageshow": "_handleShow",
+                               "popupbeforeposition": "_handleShow",
+                               "updatelayout": "_handleShow",
+                               "panelopen": "_handleShow"
+                       });
+               },
+
+               // Synchronously fix the widget height if this widget's parents are such
+               // that they show/hide content at runtime. We still need to check whether
+               // the widget is actually visible in case it is contained inside multiple
+               // such containers. For example: panel contains collapsible contains
+               // autogrow textinput. The panel may emit "panelopen" indicating that its
+               // content has become visible, but the collapsible is still collapsed, so
+               // the autogrow textarea is still not visible.
+               _handleShow: function( event ) {
+                       if ( $.contains( event.target, this.element[ 0 ] ) &&
+                               this.element.is( ":visible" ) ) {
+
+                               if ( event.type !== "popupbeforeposition" ) {
+                                       this.element
+                                               .addClass( "ui-textinput-autogrow-resize" )
+                                               .animationComplete(
+                                                       $.proxy( function() {
+                                                               this.element.removeClass( "ui-textinput-autogrow-resize" );
+                                                       }, this ),
+                                               "transition" );
+                               }
+                               this._prepareHeightUpdate();
+                       }
+               },
+
+               _unbindAutogrow: function() {
+                       this.element.removeClass( "ui-textinput-autogrow" );
+                       this._off( this.element, "keyup change input paste" );
+                       this._off( this.document,
+                               "pageshow popupbeforeposition updatelayout panelopen" );
+               },
+
+               keyupTimeout: null,
+
+               _prepareHeightUpdate: function( delay ) {
+                       if ( this.keyupTimeout ) {
+                               clearTimeout( this.keyupTimeout );
+                       }
+                       if ( delay === undefined ) {
+                               this._updateHeight();
+                       } else {
+                               this.keyupTimeout = this._delay( "_updateHeight", delay );
+                       }
+               },
+
+               _timeout: function() {
+                       this._prepareHeightUpdate( this.options.keyupTimeoutBuffer );
+               },
+
+               _updateHeight: function() {
+                       var paddingTop, paddingBottom, paddingHeight, scrollHeight, clientHeight,
+                               borderTop, borderBottom, borderHeight, height,
+                               scrollTop = this.window.scrollTop();
+                       this.keyupTimeout = 0;
+
+                       // IE8 textareas have the onpage property - others do not
+                       if ( !( "onpage" in this.element[ 0 ] ) ) {
+                               this.element.css({
+                                       "height": 0,
+                                       "min-height": 0,
+                                       "max-height": 0
+                               });
+                       }
+
+                       scrollHeight = this.element[ 0 ].scrollHeight;
+                       clientHeight = this.element[ 0 ].clientHeight;
+                       borderTop = parseFloat( this.element.css( "border-top-width" ) );
+                       borderBottom = parseFloat( this.element.css( "border-bottom-width" ) );
+                       borderHeight = borderTop + borderBottom;
+                       height = scrollHeight + borderHeight + 15;
+
+                       // Issue 6179: Padding is not included in scrollHeight and
+                       // clientHeight by Firefox if no scrollbar is visible. Because
+                       // textareas use the border-box box-sizing model, padding should be
+                       // included in the new (assigned) height. Because the height is set
+                       // to 0, clientHeight == 0 in Firefox. Therefore, we can use this to
+                       // check if padding must be added.
+                       if ( clientHeight === 0 ) {
+                               paddingTop = parseFloat( this.element.css( "padding-top" ) );
+                               paddingBottom = parseFloat( this.element.css( "padding-bottom" ) );
+                               paddingHeight = paddingTop + paddingBottom;
+
+                               height += paddingHeight;
+                       }
+
+                       this.element.css({
+                               "height": height,
+                               "min-height": "",
+                               "max-height": ""
+                       });
+
+                       this.window.scrollTop( scrollTop );
+               },
+
+               refresh: function() {
+                       if ( this.options.autogrow && this.isTextarea ) {
+                               this._updateHeight();
+                       }
+               },
+
+               _setOptions: function( options ) {
+
+                       this._super( options );
+
+                       if ( options.autogrow !== undefined && this.isTextarea ) {
+                               if ( options.autogrow ) {
+                                       this._autogrow();
+                               } else {
+                                       this._unbindAutogrow();
+                               }
+                       }
+               }
+
+       });
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.selectmenu", $.extend( {
+       initSelector: "select:not( :jqmData(role='slider')):not( :jqmData(role='flipswitch') )",
+
+       options: {
+               theme: null,
+               icon: "carat-d",
+               iconpos: "right",
+               inline: false,
+               corners: true,
+               shadow: true,
+               iconshadow: false, /* TODO: Deprecated in 1.4, remove in 1.5. */
+               overlayTheme: null,
+               dividerTheme: null,
+               hidePlaceholderMenuItems: true,
+               closeText: "Close",
+               nativeMenu: true,
+               // This option defaults to true on iOS devices.
+               preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1,
+               mini: false
+       },
+
+       _button: function() {
+               return $( "<div/>" );
+       },
+
+       _setDisabled: function( value ) {
+               this.element.attr( "disabled", value );
+               this.button.attr( "aria-disabled", value );
+               return this._setOption( "disabled", value );
+       },
+
+       _focusButton : function() {
+               var self = this;
+
+               setTimeout( function() {
+                       self.button.focus();
+               }, 40);
+       },
+
+       _selectOptions: function() {
+               return this.select.find( "option" );
+       },
+
+       // setup items that are generally necessary for select menu extension
+       _preExtension: function() {
+               var inline = this.options.inline || this.element.jqmData( "inline" ),
+                       mini = this.options.mini || this.element.jqmData( "mini" ),
+                       classes = "";
+               // TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577
+               /* if ( $el[0].className.length ) {
+                       classes = $el[0].className;
+               } */
+               if ( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) {
+                       classes = " ui-btn-left";
+               }
+
+               if (  !!~this.element[0].className.indexOf( "ui-btn-right" ) ) {
+                       classes = " ui-btn-right";
+               }
+
+               if ( inline ) {
+                       classes += " ui-btn-inline";
+               }
+               if ( mini ) {
+                       classes += " ui-mini";
+               }
+
+               this.select = this.element.removeClass( "ui-btn-left ui-btn-right" ).wrap( "<div class='ui-select" + classes + "'>" );
+               this.selectId  = this.select.attr( "id" ) || ( "select-" + this.uuid );
+               this.buttonId = this.selectId + "-button";
+               this.label = $( "label[for='"+ this.selectId +"']" );
+               this.isMultiple = this.select[ 0 ].multiple;
+       },
+
+       _destroy: function() {
+               var wrapper = this.element.parents( ".ui-select" );
+               if ( wrapper.length > 0 ) {
+                       if ( wrapper.is( ".ui-btn-left, .ui-btn-right" ) ) {
+                               this.element.addClass( wrapper.hasClass( "ui-btn-left" ) ? "ui-btn-left" : "ui-btn-right" );
+                       }
+                       this.element.insertAfter( wrapper );
+                       wrapper.remove();
+               }
+       },
+
+       _create: function() {
+               this._preExtension();
+
+               this.button = this._button();
+
+               var self = this,
+
+                       options = this.options,
+
+                       iconpos = options.icon ? ( options.iconpos || this.select.jqmData( "iconpos" ) ) : false,
+
+                       button = this.button
+                               .insertBefore( this.select )
+                               .attr( "id", this.buttonId )
+                               .addClass( "ui-btn" +
+                                       ( options.icon ? ( " ui-icon-" + options.icon + " ui-btn-icon-" + iconpos +
+                                       ( options.iconshadow ? " ui-shadow-icon" : "" ) ) :     "" ) + /* TODO: Remove in 1.5. */
+                                       ( options.theme ? " ui-btn-" + options.theme : "" ) +
+                                       ( options.corners ? " ui-corner-all" : "" ) +
+                                       ( options.shadow ? " ui-shadow" : "" ) );
+
+               this.setButtonText();
+
+               // Opera does not properly support opacity on select elements
+               // In Mini, it hides the element, but not its text
+               // On the desktop,it seems to do the opposite
+               // for these reasons, using the nativeMenu option results in a full native select in Opera
+               if ( options.nativeMenu && window.opera && window.opera.version ) {
+                       button.addClass( "ui-select-nativeonly" );
+               }
+
+               // Add counter for multi selects
+               if ( this.isMultiple ) {
+                       this.buttonCount = $( "<span>" )
+                               .addClass( "ui-li-count ui-body-inherit" )
+                               .hide()
+                               .appendTo( button.addClass( "ui-li-has-count" ) );
+               }
+
+               // Disable if specified
+               if ( options.disabled || this.element.attr( "disabled" )) {
+                       this.disable();
+               }
+
+               // Events on native select
+               this.select.change(function() {
+                       self.refresh();
+
+                       if ( !!options.nativeMenu ) {
+                               self._delay( function() {
+                                       self.select.blur();
+                               });
+                       }
+               });
+
+               this._handleFormReset();
+
+               this._on( this.button, {
+                       keydown: "_handleKeydown"
+               });
+
+               this.build();
+       },
+
+       build: function() {
+               var self = this;
+
+               this.select
+                       .appendTo( self.button )
+                       .bind( "vmousedown", function() {
+                               // Add active class to button
+                               self.button.addClass( $.mobile.activeBtnClass );
+                       })
+                       .bind( "focus", function() {
+                               self.button.addClass( $.mobile.focusClass );
+                       })
+                       .bind( "blur", function() {
+                               self.button.removeClass( $.mobile.focusClass );
+                       })
+                       .bind( "focus vmouseover", function() {
+                               self.button.trigger( "vmouseover" );
+                       })
+                       .bind( "vmousemove", function() {
+                               // Remove active class on scroll/touchmove
+                               self.button.removeClass( $.mobile.activeBtnClass );
+                       })
+                       .bind( "change blur vmouseout", function() {
+                               self.button.trigger( "vmouseout" )
+                                       .removeClass( $.mobile.activeBtnClass );
+                       });
+
+               // In many situations, iOS will zoom into the select upon tap, this prevents that from happening
+               self.button.bind( "vmousedown", function() {
+                       if ( self.options.preventFocusZoom ) {
+                                       $.mobile.zoom.disable( true );
+                       }
+               });
+               self.label.bind( "click focus", function() {
+                       if ( self.options.preventFocusZoom ) {
+                                       $.mobile.zoom.disable( true );
+                       }
+               });
+               self.select.bind( "focus", function() {
+                       if ( self.options.preventFocusZoom ) {
+                                       $.mobile.zoom.disable( true );
+                       }
+               });
+               self.button.bind( "mouseup", function() {
+                       if ( self.options.preventFocusZoom ) {
+                               setTimeout(function() {
+                                       $.mobile.zoom.enable( true );
+                               }, 0 );
+                       }
+               });
+               self.select.bind( "blur", function() {
+                       if ( self.options.preventFocusZoom ) {
+                               $.mobile.zoom.enable( true );
+                       }
+               });
+
+       },
+
+       selected: function() {
+               return this._selectOptions().filter( ":selected" );
+       },
+
+       selectedIndices: function() {
+               var self = this;
+
+               return this.selected().map(function() {
+                       return self._selectOptions().index( this );
+               }).get();
+       },
+
+       setButtonText: function() {
+               var self = this,
+                       selected = this.selected(),
+                       text = this.placeholder,
+                       span = $( document.createElement( "span" ) );
+
+               this.button.children( "span" ).not( ".ui-li-count" ).remove().end().end().prepend( (function() {
+                       if ( selected.length ) {
+                               text = selected.map(function() {
+                                       return $( this ).text();
+                               }).get().join( ", " );
+                       } else {
+                               text = self.placeholder;
+                       }
+
+                       if ( text ) {
+                               span.text( text );
+                       } else {
+
+                               // Set the contents to &nbsp; which we write as &#160; to be XHTML compliant - see gh-6699
+                               span.html( "&#160;" );
+                       }
+
+                       // TODO possibly aggregate multiple select option classes
+                       return span
+                               .addClass( self.select.attr( "class" ) )
+                               .addClass( selected.attr( "class" ) )
+                               .removeClass( "ui-screen-hidden" );
+               })());
+       },
+
+       setButtonCount: function() {
+               var selected = this.selected();
+
+               // multiple count inside button
+               if ( this.isMultiple ) {
+                       this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length );
+               }
+       },
+
+       _handleKeydown: function( /* event */ ) {
+               this._delay( "_refreshButton" );
+       },
+
+       _reset: function() {
+               this.refresh();
+       },
+
+       _refreshButton: function() {
+               this.setButtonText();
+               this.setButtonCount();
+       },
+
+       refresh: function() {
+               this._refreshButton();
+       },
+
+       // open and close preserved in native selects
+       // to simplify users code when looping over selects
+       open: $.noop,
+       close: $.noop,
+
+       disable: function() {
+               this._setDisabled( true );
+               this.button.addClass( "ui-state-disabled" );
+       },
+
+       enable: function() {
+               this._setDisabled( false );
+               this.button.removeClass( "ui-state-disabled" );
+       }
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.links = function( target ) {
+
+       //links within content areas, tests included with page
+       $( target )
+               .find( "a" )
+               .jqmEnhanceable()
+               .filter( ":jqmData(rel='popup')[href][href!='']" )
+               .each( function() {
+                       // Accessibility info for popups
+                       var element = this,
+                               idref = element.getAttribute( "href" ).substring( 1 );
+
+                       if ( idref ) {
+                               element.setAttribute( "aria-haspopup", true );
+                               element.setAttribute( "aria-owns", idref );
+                               element.setAttribute( "aria-expanded", false );
+                       }
+               })
+               .end()
+               .not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" )
+               .addClass( "ui-link" );
+
+};
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+function fitSegmentInsideSegment( windowSize, segmentSize, offset, desired ) {
+       var returnValue = desired;
+
+       if ( windowSize < segmentSize ) {
+               // Center segment if it's bigger than the window
+               returnValue = offset + ( windowSize - segmentSize ) / 2;
+       } else {
+               // Otherwise center it at the desired coordinate while keeping it completely inside the window
+               returnValue = Math.min( Math.max( offset, desired - segmentSize / 2 ), offset + windowSize - segmentSize );
+       }
+
+       return returnValue;
+}
+
+function getWindowCoordinates( theWindow ) {
+       return {
+               x: theWindow.scrollLeft(),
+               y: theWindow.scrollTop(),
+               cx: ( theWindow[ 0 ].innerWidth || theWindow.width() ),
+               cy: ( theWindow[ 0 ].innerHeight || theWindow.height() )
+       };
+}
+
+$.widget( "mobile.popup", {
+       options: {
+               wrapperClass: null,
+               theme: null,
+               overlayTheme: null,
+               shadow: true,
+               corners: true,
+               transition: "none",
+               positionTo: "origin",
+               tolerance: null,
+               closeLinkSelector: "a:jqmData(rel='back')",
+               closeLinkEvents: "click.popup",
+               navigateEvents: "navigate.popup",
+               closeEvents: "navigate.popup pagebeforechange.popup",
+               dismissible: true,
+               enhanced: false,
+
+               // NOTE Windows Phone 7 has a scroll position caching issue that
+               //      requires us to disable popup history management by default
+               //      https://github.com/jquery/jquery-mobile/issues/4784
+               //
+               // NOTE this option is modified in _create!
+               history: !$.mobile.browser.oldIE
+       },
+
+       // When the user depresses the mouse/finger on an element inside the popup while the popup is
+       // open, we ignore resize events for a short while. This prevents #6961.
+       _handleDocumentVmousedown: function( theEvent ) {
+               if ( this._isOpen && $.contains( this._ui.container[ 0 ], theEvent.target ) ) {
+                       this._ignoreResizeEvents();
+               }
+       },
+
+       _create: function() {
+               var theElement = this.element,
+                       myId = theElement.attr( "id" ),
+                       currentOptions = this.options;
+
+               // We need to adjust the history option to be false if there's no AJAX nav.
+               // We can't do it in the option declarations because those are run before
+               // it is determined whether there shall be AJAX nav.
+               currentOptions.history = currentOptions.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled;
+
+               this._on( this.document, {
+                       "vmousedown": "_handleDocumentVmousedown"
+               });
+
+               // Define instance variables
+               $.extend( this, {
+                       _scrollTop: 0,
+                       _page: theElement.closest( ".ui-page" ),
+                       _ui: null,
+                       _fallbackTransition: "",
+                       _currentTransition: false,
+                       _prerequisites: null,
+                       _isOpen: false,
+                       _tolerance: null,
+                       _resizeData: null,
+                       _ignoreResizeTo: 0,
+                       _orientationchangeInProgress: false
+               });
+
+               if ( this._page.length === 0 ) {
+                       this._page = $( "body" );
+               }
+
+               if ( currentOptions.enhanced ) {
+                       this._ui = {
+                               container: theElement.parent(),
+                               screen: theElement.parent().prev(),
+                               placeholder: $( this.document[ 0 ].getElementById( myId + "-placeholder" ) )
+                       };
+               } else {
+                       this._ui = this._enhance( theElement, myId );
+                       this._applyTransition( currentOptions.transition );
+               }
+               this
+                       ._setTolerance( currentOptions.tolerance )
+                       ._ui.focusElement = this._ui.container;
+
+               // Event handlers
+               this._on( this._ui.screen, { "vclick": "_eatEventAndClose" } );
+               this._on( this.window, {
+                       orientationchange: $.proxy( this, "_handleWindowOrientationchange" ),
+                       resize: $.proxy( this, "_handleWindowResize" ),
+                       keyup: $.proxy( this, "_handleWindowKeyUp" )
+               });
+               this._on( this.document, { "focusin": "_handleDocumentFocusIn" } );
+       },
+
+       _enhance: function( theElement, myId ) {
+               var currentOptions = this.options,
+                       wrapperClass = currentOptions.wrapperClass,
+                       ui = {
+                               screen: $( "<div class='ui-screen-hidden ui-popup-screen " +
+                               this._themeClassFromOption( "ui-overlay-", currentOptions.overlayTheme ) + "'></div>" ),
+                               placeholder: $( "<div style='display: none;'><!-- placeholder --></div>" ),
+                               container: $( "<div class='ui-popup-container ui-popup-hidden ui-popup-truncate" +
+                                       ( wrapperClass ? ( " " + wrapperClass ) : "" ) + "'></div>" )
+                       },
+                       fragment = this.document[ 0 ].createDocumentFragment();
+
+               fragment.appendChild( ui.screen[ 0 ] );
+               fragment.appendChild( ui.container[ 0 ] );
+
+               if ( myId ) {
+                       ui.screen.attr( "id", myId + "-screen" );
+                       ui.container.attr( "id", myId + "-popup" );
+                       ui.placeholder
+                               .attr( "id", myId + "-placeholder" )
+                               .html( "<!-- placeholder for " + myId + " -->" );
+               }
+
+               // Apply the proto
+               this._page[ 0 ].appendChild( fragment );
+               // Leave a placeholder where the element used to be
+               ui.placeholder.insertAfter( theElement );
+               theElement
+                       .detach()
+                       .addClass( "ui-popup " +
+                               this._themeClassFromOption( "ui-body-", currentOptions.theme ) + " " +
+                               ( currentOptions.shadow ? "ui-overlay-shadow " : "" ) +
+                               ( currentOptions.corners ? "ui-corner-all " : "" ) )
+                       .appendTo( ui.container );
+
+               return ui;
+       },
+
+       _eatEventAndClose: function( theEvent ) {
+               theEvent.preventDefault();
+               theEvent.stopImmediatePropagation();
+               if ( this.options.dismissible ) {
+                       this.close();
+               }
+               return false;
+       },
+
+       // Make sure the screen covers the entire document - CSS is sometimes not
+       // enough to accomplish this.
+       _resizeScreen: function() {
+               var screen = this._ui.screen,
+                       popupHeight = this._ui.container.outerHeight( true ),
+                       screenHeight = screen.removeAttr( "style" ).height(),
+
+                       // Subtracting 1 here is necessary for an obscure Andrdoid 4.0 bug where
+                       // the browser hangs if the screen covers the entire document :/
+                       documentHeight = this.document.height() - 1;
+
+               if ( screenHeight < documentHeight ) {
+                       screen.height( documentHeight );
+               } else if ( popupHeight > screenHeight ) {
+                       screen.height( popupHeight );
+               }
+       },
+
+       _handleWindowKeyUp: function( theEvent ) {
+               if ( this._isOpen && theEvent.keyCode === $.mobile.keyCode.ESCAPE ) {
+                       return this._eatEventAndClose( theEvent );
+               }
+       },
+
+       _expectResizeEvent: function() {
+               var windowCoordinates = getWindowCoordinates( this.window );
+
+               if ( this._resizeData ) {
+                       if ( windowCoordinates.x === this._resizeData.windowCoordinates.x &&
+                               windowCoordinates.y === this._resizeData.windowCoordinates.y &&
+                               windowCoordinates.cx === this._resizeData.windowCoordinates.cx &&
+                               windowCoordinates.cy === this._resizeData.windowCoordinates.cy ) {
+                               // timeout not refreshed
+                               return false;
+                       } else {
+                               // clear existing timeout - it will be refreshed below
+                               clearTimeout( this._resizeData.timeoutId );
+                       }
+               }
+
+               this._resizeData = {
+                       timeoutId: this._delay( "_resizeTimeout", 200 ),
+                       windowCoordinates: windowCoordinates
+               };
+
+               return true;
+       },
+
+       _resizeTimeout: function() {
+               if ( this._isOpen ) {
+                       if ( !this._expectResizeEvent() ) {
+                               if ( this._ui.container.hasClass( "ui-popup-hidden" ) ) {
+                                       // effectively rapid-open the popup while leaving the screen intact
+                                       this._ui.container.removeClass( "ui-popup-hidden ui-popup-truncate" );
+                                       this.reposition( { positionTo: "window" } );
+                                       this._ignoreResizeEvents();
+                               }
+
+                               this._resizeScreen();
+                               this._resizeData = null;
+                               this._orientationchangeInProgress = false;
+                       }
+               } else {
+                       this._resizeData = null;
+                       this._orientationchangeInProgress = false;
+               }
+       },
+
+       _stopIgnoringResizeEvents: function() {
+               this._ignoreResizeTo = 0;
+       },
+
+       _ignoreResizeEvents: function() {
+               if ( this._ignoreResizeTo ) {
+                       clearTimeout( this._ignoreResizeTo );
+               }
+               this._ignoreResizeTo = this._delay( "_stopIgnoringResizeEvents", 1000 );
+       },
+
+       _handleWindowResize: function(/* theEvent */) {
+               if ( this._isOpen && this._ignoreResizeTo === 0 ) {
+                       if ( ( this._expectResizeEvent() || this._orientationchangeInProgress ) &&
+                               !this._ui.container.hasClass( "ui-popup-hidden" ) ) {
+                               // effectively rapid-close the popup while leaving the screen intact
+                               this._ui.container
+                                       .addClass( "ui-popup-hidden ui-popup-truncate" )
+                                       .removeAttr( "style" );
+                       }
+               }
+       },
+
+       _handleWindowOrientationchange: function(/* theEvent */) {
+               if ( !this._orientationchangeInProgress && this._isOpen && this._ignoreResizeTo === 0 ) {
+                       this._expectResizeEvent();
+                       this._orientationchangeInProgress = true;
+               }
+       },
+
+       // When the popup is open, attempting to focus on an element that is not a
+       // child of the popup will redirect focus to the popup
+       _handleDocumentFocusIn: function( theEvent ) {
+               var target,
+                       targetElement = theEvent.target,
+                       ui = this._ui;
+
+               if ( !this._isOpen ) {
+                       return;
+               }
+
+               if ( targetElement !== ui.container[ 0 ] ) {
+                       target = $( targetElement );
+                       if ( !$.contains( ui.container[ 0 ], targetElement ) ) {
+                               $( this.document[ 0 ].activeElement ).one( "focus", $.proxy( function() {
+                                       this._safelyBlur( targetElement );
+                               }, this ) );
+                               ui.focusElement.focus();
+                               theEvent.preventDefault();
+                               theEvent.stopImmediatePropagation();
+                               return false;
+                       } else if ( ui.focusElement[ 0 ] === ui.container[ 0 ] ) {
+                               ui.focusElement = target;
+                       }
+               }
+
+               this._ignoreResizeEvents();
+       },
+
+       _themeClassFromOption: function( prefix, value ) {
+               return ( value ? ( value === "none" ? "" : ( prefix + value ) ) : ( prefix + "inherit" ) );
+       },
+
+       _applyTransition: function( value ) {
+               if ( value ) {
+                       this._ui.container.removeClass( this._fallbackTransition );
+                       if ( value !== "none" ) {
+                               this._fallbackTransition = $.mobile._maybeDegradeTransition( value );
+                               if ( this._fallbackTransition === "none" ) {
+                                       this._fallbackTransition = "";
+                               }
+                               this._ui.container.addClass( this._fallbackTransition );
+                       }
+               }
+
+               return this;
+       },
+
+       _setOptions: function( newOptions ) {
+               var currentOptions = this.options,
+                       theElement = this.element,
+                       screen = this._ui.screen;
+
+               if ( newOptions.wrapperClass !== undefined ) {
+                       this._ui.container
+                               .removeClass( currentOptions.wrapperClass )
+                               .addClass( newOptions.wrapperClass );
+               }
+
+               if ( newOptions.theme !== undefined ) {
+                       theElement
+                               .removeClass( this._themeClassFromOption( "ui-body-", currentOptions.theme ) )
+                               .addClass( this._themeClassFromOption( "ui-body-", newOptions.theme ) );
+               }
+
+               if ( newOptions.overlayTheme !== undefined ) {
+                       screen
+                               .removeClass( this._themeClassFromOption( "ui-overlay-", currentOptions.overlayTheme ) )
+                               .addClass( this._themeClassFromOption( "ui-overlay-", newOptions.overlayTheme ) );
+
+                       if ( this._isOpen ) {
+                               screen.addClass( "in" );
+                       }
+               }
+
+               if ( newOptions.shadow !== undefined ) {
+                       theElement.toggleClass( "ui-overlay-shadow", newOptions.shadow );
+               }
+
+               if ( newOptions.corners !== undefined ) {
+                       theElement.toggleClass( "ui-corner-all", newOptions.corners );
+               }
+
+               if ( newOptions.transition !== undefined ) {
+                       if ( !this._currentTransition ) {
+                               this._applyTransition( newOptions.transition );
+                       }
+               }
+
+               if ( newOptions.tolerance !== undefined ) {
+                       this._setTolerance( newOptions.tolerance );
+               }
+
+               if ( newOptions.disabled !== undefined ) {
+                       if ( newOptions.disabled ) {
+                               this.close();
+                       }
+               }
+
+               return this._super( newOptions );
+       },
+
+       _setTolerance: function( value ) {
+               var tol = { t: 30, r: 15, b: 30, l: 15 },
+                       ar;
+
+               if ( value !== undefined ) {
+                       ar = String( value ).split( "," );
+
+                       $.each( ar, function( idx, val ) { ar[ idx ] = parseInt( val, 10 ); } );
+
+                       switch( ar.length ) {
+                               // All values are to be the same
+                               case 1:
+                                       if ( !isNaN( ar[ 0 ] ) ) {
+                                               tol.t = tol.r = tol.b = tol.l = ar[ 0 ];
+                                       }
+                                       break;
+
+                               // The first value denotes top/bottom tolerance, and the second value denotes left/right tolerance
+                               case 2:
+                                       if ( !isNaN( ar[ 0 ] ) ) {
+                                               tol.t = tol.b = ar[ 0 ];
+                                       }
+                                       if ( !isNaN( ar[ 1 ] ) ) {
+                                               tol.l = tol.r = ar[ 1 ];
+                                       }
+                                       break;
+
+                               // The array contains values in the order top, right, bottom, left
+                               case 4:
+                                       if ( !isNaN( ar[ 0 ] ) ) {
+                                               tol.t = ar[ 0 ];
+                                       }
+                                       if ( !isNaN( ar[ 1 ] ) ) {
+                                               tol.r = ar[ 1 ];
+                                       }
+                                       if ( !isNaN( ar[ 2 ] ) ) {
+                                               tol.b = ar[ 2 ];
+                                       }
+                                       if ( !isNaN( ar[ 3 ] ) ) {
+                                               tol.l = ar[ 3 ];
+                                       }
+                                       break;
+
+                               default:
+                                       break;
+                       }
+               }
+
+               this._tolerance = tol;
+               return this;
+       },
+
+       _clampPopupWidth: function( infoOnly ) {
+               var menuSize,
+                       windowCoordinates = getWindowCoordinates( this.window ),
+                       // rectangle within which the popup must fit
+                       rectangle = {
+                               x: this._tolerance.l,
+                               y: windowCoordinates.y + this._tolerance.t,
+                               cx: windowCoordinates.cx - this._tolerance.l - this._tolerance.r,
+                               cy: windowCoordinates.cy - this._tolerance.t - this._tolerance.b
+                       };
+
+               if ( !infoOnly ) {
+                       // Clamp the width of the menu before grabbing its size
+                       this._ui.container.css( "max-width", rectangle.cx );
+               }
+
+               menuSize = {
+                       cx: this._ui.container.outerWidth( true ),
+                       cy: this._ui.container.outerHeight( true )
+               };
+
+               return { rc: rectangle, menuSize: menuSize };
+       },
+
+       _calculateFinalLocation: function( desired, clampInfo ) {
+               var returnValue,
+                       rectangle = clampInfo.rc,
+                       menuSize = clampInfo.menuSize;
+
+               // Center the menu over the desired coordinates, while not going outside
+               // the window tolerances. This will center wrt. the window if the popup is
+               // too large.
+               returnValue = {
+                       left: fitSegmentInsideSegment( rectangle.cx, menuSize.cx, rectangle.x, desired.x ),
+                       top: fitSegmentInsideSegment( rectangle.cy, menuSize.cy, rectangle.y, desired.y )
+               };
+
+               // Make sure the top of the menu is visible
+               returnValue.top = Math.max( 0, returnValue.top );
+
+               // If the height of the menu is smaller than the height of the document
+               // align the bottom with the bottom of the document
+
+               returnValue.top -= Math.min( returnValue.top,
+                       Math.max( 0, returnValue.top + menuSize.cy - this.document.height() ) );
+
+               return returnValue;
+       },
+
+       // Try and center the overlay over the given coordinates
+       _placementCoords: function( desired ) {
+               return this._calculateFinalLocation( desired, this._clampPopupWidth() );
+       },
+
+       _createPrerequisites: function( screenPrerequisite, containerPrerequisite, whenDone ) {
+               var prerequisites,
+                       self = this;
+
+               // It is important to maintain both the local variable prerequisites and
+               // self._prerequisites. The local variable remains in the closure of the
+               // functions which call the callbacks passed in. The comparison between the
+               // local variable and self._prerequisites is necessary, because once a
+               // function has been passed to .animationComplete() it will be called next
+               // time an animation completes, even if that's not the animation whose end
+               // the function was supposed to catch (for example, if an abort happens
+               // during the opening animation, the .animationComplete handler is not
+               // called for that animation anymore, but the handler remains attached, so
+               // it is called the next time the popup is opened - making it stale.
+               // Comparing the local variable prerequisites to the widget-level variable
+               // self._prerequisites ensures that callbacks triggered by a stale
+               // .animationComplete will be ignored.
+
+               prerequisites = {
+                       screen: $.Deferred(),
+                       container: $.Deferred()
+               };
+
+               prerequisites.screen.then( function() {
+                       if ( prerequisites === self._prerequisites ) {
+                               screenPrerequisite();
+                       }
+               });
+
+               prerequisites.container.then( function() {
+                       if ( prerequisites === self._prerequisites ) {
+                               containerPrerequisite();
+                       }
+               });
+
+               $.when( prerequisites.screen, prerequisites.container ).done( function() {
+                       if ( prerequisites === self._prerequisites ) {
+                               self._prerequisites = null;
+                               whenDone();
+                       }
+               });
+
+               self._prerequisites = prerequisites;
+       },
+
+       _animate: function( args ) {
+               // NOTE before removing the default animation of the screen
+               //      this had an animate callback that would resolve the deferred
+               //      now the deferred is resolved immediately
+               // TODO remove the dependency on the screen deferred
+               this._ui.screen
+                       .removeClass( args.classToRemove )
+                       .addClass( args.screenClassToAdd );
+
+               args.prerequisites.screen.resolve();
+
+               if ( args.transition && args.transition !== "none" ) {
+                       if ( args.applyTransition ) {
+                               this._applyTransition( args.transition );
+                       }
+                       if ( this._fallbackTransition ) {
+                               this._ui.container
+                                       .addClass( args.containerClassToAdd )
+                                       .removeClass( args.classToRemove )
+                                       .animationComplete( $.proxy( args.prerequisites.container, "resolve" ) );
+                               return;
+                       }
+               }
+               this._ui.container.removeClass( args.classToRemove );
+               args.prerequisites.container.resolve();
+       },
+
+       // The desired coordinates passed in will be returned untouched if no reference element can be identified via
+       // desiredPosition.positionTo. Nevertheless, this function ensures that its return value always contains valid
+       // x and y coordinates by specifying the center middle of the window if the coordinates are absent.
+       // options: { x: coordinate, y: coordinate, positionTo: string: "origin", "window", or jQuery selector
+       _desiredCoords: function( openOptions ) {
+               var offset,
+                       dst = null,
+                       windowCoordinates = getWindowCoordinates( this.window ),
+                       x = openOptions.x,
+                       y = openOptions.y,
+                       pTo = openOptions.positionTo;
+
+               // Establish which element will serve as the reference
+               if ( pTo && pTo !== "origin" ) {
+                       if ( pTo === "window" ) {
+                               x = windowCoordinates.cx / 2 + windowCoordinates.x;
+                               y = windowCoordinates.cy / 2 + windowCoordinates.y;
+                       } else {
+                               try {
+                                       dst = $( pTo );
+                               } catch( err ) {
+                                       dst = null;
+                               }
+                               if ( dst ) {
+                                       dst.filter( ":visible" );
+                                       if ( dst.length === 0 ) {
+                                               dst = null;
+                                       }
+                               }
+                       }
+               }
+
+               // If an element was found, center over it
+               if ( dst ) {
+                       offset = dst.offset();
+                       x = offset.left + dst.outerWidth() / 2;
+                       y = offset.top + dst.outerHeight() / 2;
+               }
+
+               // Make sure x and y are valid numbers - center over the window
+               if ( $.type( x ) !== "number" || isNaN( x ) ) {
+                       x = windowCoordinates.cx / 2 + windowCoordinates.x;
+               }
+               if ( $.type( y ) !== "number" || isNaN( y ) ) {
+                       y = windowCoordinates.cy / 2 + windowCoordinates.y;
+               }
+
+               return { x: x, y: y };
+       },
+
+       _reposition: function( openOptions ) {
+               // We only care about position-related parameters for repositioning
+               openOptions = {
+                       x: openOptions.x,
+                       y: openOptions.y,
+                       positionTo: openOptions.positionTo
+               };
+               this._trigger( "beforeposition", undefined, openOptions );
+               this._ui.container.offset( this._placementCoords( this._desiredCoords( openOptions ) ) );
+       },
+
+       reposition: function( openOptions ) {
+               if ( this._isOpen ) {
+                       this._reposition( openOptions );
+               }
+       },
+
+       _safelyBlur: function( currentElement ){
+               if ( currentElement !== this.window[ 0 ] &&
+                       currentElement.nodeName.toLowerCase() !== "body" ) {
+                               $( currentElement ).blur();
+               }
+       },
+
+       _openPrerequisitesComplete: function() {
+               var id = this.element.attr( "id" ),
+                       firstFocus = this._ui.container.find( ":focusable" ).first();
+
+               this._ui.container.addClass( "ui-popup-active" );
+               this._isOpen = true;
+               this._resizeScreen();
+
+               // Check to see if currElement is not a child of the container.  If it's not, blur
+               if ( !$.contains( this._ui.container[ 0 ], this.document[ 0 ].activeElement ) ) {
+                       this._safelyBlur( this.document[ 0 ].activeElement );
+               }
+               if ( firstFocus.length > 0 ) {
+                       this._ui.focusElement = firstFocus;
+               }
+               this._ignoreResizeEvents();
+               if ( id ) {
+                       this.document.find( "[aria-haspopup='true'][aria-owns='" +  id + "']" ).attr( "aria-expanded", true );
+               }
+               this._trigger( "afteropen" );
+       },
+
+       _open: function( options ) {
+               var openOptions = $.extend( {}, this.options, options ),
+                       // TODO move blacklist to private method
+                       androidBlacklist = ( function() {
+                               var ua = navigator.userAgent,
+                                       // Rendering engine is Webkit, and capture major version
+                                       wkmatch = ua.match( /AppleWebKit\/([0-9\.]+)/ ),
+                                       wkversion = !!wkmatch && wkmatch[ 1 ],
+                                       androidmatch = ua.match( /Android (\d+(?:\.\d+))/ ),
+                                       andversion = !!androidmatch && androidmatch[ 1 ],
+                                       chromematch = ua.indexOf( "Chrome" ) > -1;
+
+                               // Platform is Android, WebKit version is greater than 534.13 ( Android 3.2.1 ) and not Chrome.
+                               if ( androidmatch !== null && andversion === "4.0" && wkversion && wkversion > 534.13 && !chromematch ) {
+                                       return true;
+                               }
+                               return false;
+                       }());
+
+               // Count down to triggering "popupafteropen" - we have two prerequisites:
+               // 1. The popup window animation completes (container())
+               // 2. The screen opacity animation completes (screen())
+               this._createPrerequisites(
+                       $.noop,
+                       $.noop,
+                       $.proxy( this, "_openPrerequisitesComplete" ) );
+
+               this._currentTransition = openOptions.transition;
+               this._applyTransition( openOptions.transition );
+
+               this._ui.screen.removeClass( "ui-screen-hidden" );
+               this._ui.container.removeClass( "ui-popup-truncate" );
+
+               // Give applications a chance to modify the contents of the container before it appears
+               this._reposition( openOptions );
+
+               this._ui.container.removeClass( "ui-popup-hidden" );
+
+               if ( this.options.overlayTheme && androidBlacklist ) {
+                       /* TODO: The native browser on Android 4.0.X ("Ice Cream Sandwich") suffers from an issue where the popup overlay appears to be z-indexed above the popup itself when certain other styles exist on the same page -- namely, any element set to `position: fixed` and certain types of input. These issues are reminiscent of previously uncovered bugs in older versions of Android's native browser: https://github.com/scottjehl/Device-Bugs/issues/3
+                       This fix closes the following bugs ( I use "closes" with reluctance, and stress that this issue should be revisited as soon as possible ):
+                       https://github.com/jquery/jquery-mobile/issues/4816
+                       https://github.com/jquery/jquery-mobile/issues/4844
+                       https://github.com/jquery/jquery-mobile/issues/4874
+                       */
+
+                       // TODO sort out why this._page isn't working
+                       this.element.closest( ".ui-page" ).addClass( "ui-popup-open" );
+               }
+               this._animate({
+                       additionalCondition: true,
+                       transition: openOptions.transition,
+                       classToRemove: "",
+                       screenClassToAdd: "in",
+                       containerClassToAdd: "in",
+                       applyTransition: false,
+                       prerequisites: this._prerequisites
+               });
+       },
+
+       _closePrerequisiteScreen: function() {
+               this._ui.screen
+                       .removeClass( "out" )
+                       .addClass( "ui-screen-hidden" );
+       },
+
+       _closePrerequisiteContainer: function() {
+               this._ui.container
+                       .removeClass( "reverse out" )
+                       .addClass( "ui-popup-hidden ui-popup-truncate" )
+                       .removeAttr( "style" );
+       },
+
+       _closePrerequisitesDone: function() {
+               var container = this._ui.container,
+                       id = this.element.attr( "id" );
+
+               // remove the global mutex for popups
+               $.mobile.popup.active = undefined;
+
+               // Blur elements inside the container, including the container
+               $( ":focus", container[ 0 ] ).add( container[ 0 ] ).blur();
+
+               if ( id ) {
+                       this.document.find( "[aria-haspopup='true'][aria-owns='" +  id + "']" ).attr( "aria-expanded", false );
+               }
+
+               // alert users that the popup is closed
+               this._trigger( "afterclose" );
+       },
+
+       _close: function( immediate ) {
+               this._ui.container.removeClass( "ui-popup-active" );
+               this._page.removeClass( "ui-popup-open" );
+
+               this._isOpen = false;
+
+               // Count down to triggering "popupafterclose" - we have two prerequisites:
+               // 1. The popup window reverse animation completes (container())
+               // 2. The screen opacity animation completes (screen())
+               this._createPrerequisites(
+                       $.proxy( this, "_closePrerequisiteScreen" ),
+                       $.proxy( this, "_closePrerequisiteContainer" ),
+                       $.proxy( this, "_closePrerequisitesDone" ) );
+
+               this._animate( {
+                       additionalCondition: this._ui.screen.hasClass( "in" ),
+                       transition: ( immediate ? "none" : ( this._currentTransition ) ),
+                       classToRemove: "in",
+                       screenClassToAdd: "out",
+                       containerClassToAdd: "reverse out",
+                       applyTransition: true,
+                       prerequisites: this._prerequisites
+               });
+       },
+
+       _unenhance: function() {
+               if ( this.options.enhanced ) {
+                       return;
+               }
+
+               // Put the element back to where the placeholder was and remove the "ui-popup" class
+               this._setOptions( { theme: $.mobile.popup.prototype.options.theme } );
+               this.element
+                       // Cannot directly insertAfter() - we need to detach() first, because
+                       // insertAfter() will do nothing if the payload div was not attached
+                       // to the DOM at the time the widget was created, and so the payload
+                       // will remain inside the container even after we call insertAfter().
+                       // If that happens and we remove the container a few lines below, we
+                       // will cause an infinite recursion - #5244
+                       .detach()
+                       .insertAfter( this._ui.placeholder )
+                       .removeClass( "ui-popup ui-overlay-shadow ui-corner-all ui-body-inherit" );
+               this._ui.screen.remove();
+               this._ui.container.remove();
+               this._ui.placeholder.remove();
+       },
+
+       _destroy: function() {
+               if ( $.mobile.popup.active === this ) {
+                       this.element.one( "popupafterclose", $.proxy( this, "_unenhance" ) );
+                       this.close();
+               } else {
+                       this._unenhance();
+               }
+
+               return this;
+       },
+
+       _closePopup: function( theEvent, data ) {
+               var parsedDst, toUrl,
+                       currentOptions = this.options,
+                       immediate = false;
+
+               if ( ( theEvent && theEvent.isDefaultPrevented() ) || $.mobile.popup.active !== this ) {
+                       return;
+               }
+
+               // restore location on screen
+               window.scrollTo( 0, this._scrollTop );
+
+               if ( theEvent && theEvent.type === "pagebeforechange" && data ) {
+                       // Determine whether we need to rapid-close the popup, or whether we can
+                       // take the time to run the closing transition
+                       if ( typeof data.toPage === "string" ) {
+                               parsedDst = data.toPage;
+                       } else {
+                               parsedDst = data.toPage.jqmData( "url" );
+                       }
+                       parsedDst = $.mobile.path.parseUrl( parsedDst );
+                       toUrl = parsedDst.pathname + parsedDst.search + parsedDst.hash;
+
+                       if ( this._myUrl !== $.mobile.path.makeUrlAbsolute( toUrl ) ) {
+                               // Going to a different page - close immediately
+                               immediate = true;
+                       } else {
+                               theEvent.preventDefault();
+                       }
+               }
+
+               // remove nav bindings
+               this.window.off( currentOptions.closeEvents );
+               // unbind click handlers added when history is disabled
+               this.element.undelegate( currentOptions.closeLinkSelector, currentOptions.closeLinkEvents );
+
+               this._close( immediate );
+       },
+
+       // any navigation event after a popup is opened should close the popup
+       // NOTE the pagebeforechange is bound to catch navigation events that don't
+       //      alter the url (eg, dialogs from popups)
+       _bindContainerClose: function() {
+               this.window
+                       .on( this.options.closeEvents, $.proxy( this, "_closePopup" ) );
+       },
+
+       widget: function() {
+               return this._ui.container;
+       },
+
+       // TODO no clear deliniation of what should be here and
+       // what should be in _open. Seems to be "visual" vs "history" for now
+       open: function( options ) {
+               var url, hashkey, activePage, currentIsDialog, hasHash, urlHistory,
+                       self = this,
+                       currentOptions = this.options;
+
+               // make sure open is idempotent
+               if ( $.mobile.popup.active || currentOptions.disabled ) {
+                       return this;
+               }
+
+               // set the global popup mutex
+               $.mobile.popup.active = this;
+               this._scrollTop = this.window.scrollTop();
+
+               // if history alteration is disabled close on navigate events
+               // and leave the url as is
+               if ( !( currentOptions.history ) ) {
+                       self._open( options );
+                       self._bindContainerClose();
+
+                       // When histoy is disabled we have to grab the data-rel
+                       // back link clicks so we can close the popup instead of
+                       // relying on history to do it for us
+                       self.element
+                               .delegate( currentOptions.closeLinkSelector, currentOptions.closeLinkEvents, function( theEvent ) {
+                                       self.close();
+                                       theEvent.preventDefault();
+                               });
+
+                       return this;
+               }
+
+               // cache some values for min/readability
+               urlHistory = $.mobile.navigate.history;
+               hashkey = $.mobile.dialogHashKey;
+               activePage = $.mobile.activePage;
+               currentIsDialog = ( activePage ? activePage.hasClass( "ui-dialog" ) : false );
+               this._myUrl = url = urlHistory.getActive().url;
+               hasHash = ( url.indexOf( hashkey ) > -1 ) && !currentIsDialog && ( urlHistory.activeIndex > 0 );
+
+               if ( hasHash ) {
+                       self._open( options );
+                       self._bindContainerClose();
+                       return this;
+               }
+
+               // if the current url has no dialog hash key proceed as normal
+               // otherwise, if the page is a dialog simply tack on the hash key
+               if ( url.indexOf( hashkey ) === -1 && !currentIsDialog ) {
+                       url = url + (url.indexOf( "#" ) > -1 ? hashkey : "#" + hashkey);
+               } else {
+                       url = $.mobile.path.parseLocation().hash + hashkey;
+               }
+
+               // swallow the the initial navigation event, and bind for the next
+               this.window.one( "beforenavigate", function( theEvent ) {
+                       theEvent.preventDefault();
+                       self._open( options );
+                       self._bindContainerClose();
+               });
+
+               this.urlAltered = true;
+               $.mobile.navigate( url, { role: "dialog" } );
+
+               return this;
+       },
+
+       close: function() {
+               // make sure close is idempotent
+               if ( $.mobile.popup.active !== this ) {
+                       return this;
+               }
+
+               this._scrollTop = this.window.scrollTop();
+
+               if ( this.options.history && this.urlAltered ) {
+                       $.mobile.back();
+                       this.urlAltered = false;
+               } else {
+                       // simulate the nav bindings having fired
+                       this._closePopup();
+               }
+
+               return this;
+       }
+});
+
+// TODO this can be moved inside the widget
+$.mobile.popup.handleLink = function( $link ) {
+       var offset,
+               path = $.mobile.path,
+
+               // NOTE make sure to get only the hash from the href because ie7 (wp7)
+               //      returns the absolute href in this case ruining the element selection
+               popup = $( path.hashToSelector( path.parseUrl( $link.attr( "href" ) ).hash ) ).first();
+
+       if ( popup.length > 0 && popup.data( "mobile-popup" ) ) {
+               offset = $link.offset();
+               popup.popup( "open", {
+                       x: offset.left + $link.outerWidth() / 2,
+                       y: offset.top + $link.outerHeight() / 2,
+                       transition: $link.jqmData( "transition" ),
+                       positionTo: $link.jqmData( "position-to" )
+               });
+       }
+
+       //remove after delay
+       setTimeout( function() {
+               $link.removeClass( $.mobile.activeBtnClass );
+       }, 300 );
+};
+
+// TODO move inside _create
+$.mobile.document.on( "pagebeforechange", function( theEvent, data ) {
+       if ( data.options.role === "popup" ) {
+               $.mobile.popup.handleLink( data.options.link );
+               theEvent.preventDefault();
+       }
+});
+
+})( jQuery );
+
+/*
+* custom "selectmenu" plugin
+*/
+
+(function( $, undefined ) {
+
+var unfocusableItemSelector = ".ui-disabled,.ui-state-disabled,.ui-li-divider,.ui-screen-hidden,:jqmData(role='placeholder')",
+       goToAdjacentItem = function( item, target, direction ) {
+               var adjacent = item[ direction + "All" ]()
+                       .not( unfocusableItemSelector )
+                       .first();
+
+               // if there's a previous option, focus it
+               if ( adjacent.length ) {
+                       target
+                               .blur()
+                               .attr( "tabindex", "-1" );
+
+                       adjacent.find( "a" ).first().focus();
+               }
+       };
+
+$.widget( "mobile.selectmenu", $.mobile.selectmenu, {
+       _create: function() {
+               var o = this.options;
+
+               // Custom selects cannot exist inside popups, so revert the "nativeMenu"
+               // option to true if a parent is a popup
+               o.nativeMenu = o.nativeMenu || ( this.element.parents( ":jqmData(role='popup'),:mobile-popup" ).length > 0 );
+
+               return this._super();
+       },
+
+       _handleSelectFocus: function() {
+               this.element.blur();
+               this.button.focus();
+       },
+
+       _handleKeydown: function( event ) {
+               this._super( event );
+               this._handleButtonVclickKeydown( event );
+       },
+
+       _handleButtonVclickKeydown: function( event ) {
+               if ( this.options.disabled || this.isOpen || this.options.nativeMenu ) {
+                       return;
+               }
+
+               if (event.type === "vclick" ||
+                               event.keyCode && (event.keyCode === $.mobile.keyCode.ENTER || event.keyCode === $.mobile.keyCode.SPACE)) {
+
+                       this._decideFormat();
+                       if ( this.menuType === "overlay" ) {
+                               this.button.attr( "href", "#" + this.popupId ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "popup" );
+                       } else {
+                               this.button.attr( "href", "#" + this.dialogId ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "dialog" );
+                       }
+                       this.isOpen = true;
+                       // Do not prevent default, so the navigation may have a chance to actually open the chosen format
+               }
+       },
+
+       _handleListFocus: function( e ) {
+               var params = ( e.type === "focusin" ) ?
+                       { tabindex: "0", event: "vmouseover" }:
+                       { tabindex: "-1", event: "vmouseout" };
+
+               $( e.target )
+                       .attr( "tabindex", params.tabindex )
+                       .trigger( params.event );
+       },
+
+       _handleListKeydown: function( event ) {
+               var target = $( event.target ),
+                       li = target.closest( "li" );
+
+               // switch logic based on which key was pressed
+               switch ( event.keyCode ) {
+                       // up or left arrow keys
+               case 38:
+                       goToAdjacentItem( li, target, "prev" );
+                       return false;
+                       // down or right arrow keys
+               case 40:
+                       goToAdjacentItem( li, target, "next" );
+                       return false;
+                       // If enter or space is pressed, trigger click
+               case 13:
+               case 32:
+                       target.trigger( "click" );
+                       return false;
+               }
+       },
+
+       _handleMenuPageHide: function() {
+
+               // After the dialog's done, we may want to trigger change if the value has actually changed
+               this._delayedTrigger();
+
+               // TODO centralize page removal binding / handling in the page plugin.
+               // Suggestion from @jblas to do refcounting
+               //
+               // TODO extremely confusing dependency on the open method where the pagehide.remove
+               // bindings are stripped to prevent the parent page from disappearing. The way
+               // we're keeping pages in the DOM right now sucks
+               //
+               // rebind the page remove that was unbound in the open function
+               // to allow for the parent page removal from actions other than the use
+               // of a dialog sized custom select
+               //
+               // doing this here provides for the back button on the custom select dialog
+               this.thisPage.page( "bindRemove" );
+       },
+
+       _handleHeaderCloseClick: function() {
+               if ( this.menuType === "overlay" ) {
+                       this.close();
+                       return false;
+               }
+       },
+
+       _handleListItemClick: function( event ) {
+               var listItem = $( event.target ).closest( "li" ),
+
+                       // Index of option tag to be selected
+                       oldIndex = this.select[ 0 ].selectedIndex,
+                       newIndex = $.mobile.getAttribute( listItem, "option-index" ),
+                       option = this._selectOptions().eq( newIndex )[ 0 ];
+
+               // Toggle selected status on the tag for multi selects
+               option.selected = this.isMultiple ? !option.selected : true;
+
+               // Toggle checkbox class for multiple selects
+               if ( this.isMultiple ) {
+                       listItem.find( "a" )
+                               .toggleClass( "ui-checkbox-on", option.selected )
+                               .toggleClass( "ui-checkbox-off", !option.selected );
+               }
+
+               // If it's not a multiple select, trigger change after it has finished closing
+               if ( !this.isMultiple && oldIndex !== newIndex ) {
+                       this._triggerChange = true;
+               }
+
+               // Trigger change if it's a multiple select
+               // Hide custom select for single selects only - otherwise focus clicked item
+               // We need to grab the clicked item the hard way, because the list may have been rebuilt
+               if ( this.isMultiple ) {
+                       this.select.trigger( "change" );
+                       this.list.find( "li:not(.ui-li-divider)" ).eq( newIndex )
+                               .find( "a" ).first().focus();
+               }
+               else {
+                       this.close();
+               }
+
+               event.preventDefault();
+       },
+
+       build: function() {
+               var selectId, popupId, dialogId, label, thisPage, isMultiple, menuId,
+                       themeAttr, overlayTheme, overlayThemeAttr, dividerThemeAttr,
+                       menuPage, listbox, list, header, headerTitle, menuPageContent,
+                       menuPageClose, headerClose,
+                       o = this.options;
+
+               if ( o.nativeMenu ) {
+                       return this._super();
+               }
+
+               selectId = this.selectId;
+               popupId = selectId + "-listbox";
+               dialogId = selectId + "-dialog";
+               label = this.label;
+               thisPage = this.element.closest( ".ui-page" );
+               isMultiple = this.element[ 0 ].multiple;
+               menuId = selectId + "-menu";
+               themeAttr = o.theme ? ( " data-" + $.mobile.ns + "theme='" + o.theme + "'" ) : "";
+               overlayTheme = o.overlayTheme || o.theme || null;
+               overlayThemeAttr = overlayTheme ? ( " data-" + $.mobile.ns +
+                       "overlay-theme='" + overlayTheme + "'" ) : "";
+               dividerThemeAttr = ( o.dividerTheme && isMultiple ) ? ( " data-" + $.mobile.ns + "divider-theme='" + o.dividerTheme + "'" ) : "";
+               menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' class='ui-selectmenu' id='" + dialogId + "'" + themeAttr + overlayThemeAttr + ">" +
+                       "<div data-" + $.mobile.ns + "role='header'>" +
+                       "<div class='ui-title'></div>"+
+                       "</div>"+
+                       "<div data-" + $.mobile.ns + "role='content'></div>"+
+                       "</div>" );
+               listbox = $( "<div" + themeAttr + overlayThemeAttr + " id='" + popupId +
+                               "' class='ui-selectmenu'></div>" )
+                       .insertAfter( this.select )
+                       .popup();
+               list = $( "<ul class='ui-selectmenu-list' id='" + menuId + "' role='listbox' aria-labelledby='" + this.buttonId + "'" + themeAttr + dividerThemeAttr + "></ul>" ).appendTo( listbox );
+               header = $( "<div class='ui-header ui-bar-" + ( o.theme ? o.theme : "inherit" ) + "'></div>" ).prependTo( listbox );
+               headerTitle = $( "<h1 class='ui-title'></h1>" ).appendTo( header );
+
+               if ( this.isMultiple ) {
+                       headerClose = $( "<a>", {
+                               "role": "button",
+                               "text": o.closeText,
+                               "href": "#",
+                               "class": "ui-btn ui-corner-all ui-btn-left ui-btn-icon-notext ui-icon-delete"
+                       }).appendTo( header );
+               }
+
+               $.extend( this, {
+                       selectId: selectId,
+                       menuId: menuId,
+                       popupId: popupId,
+                       dialogId: dialogId,
+                       thisPage: thisPage,
+                       menuPage: menuPage,
+                       label: label,
+                       isMultiple: isMultiple,
+                       theme: o.theme,
+                       listbox: listbox,
+                       list: list,
+                       header: header,
+                       headerTitle: headerTitle,
+                       headerClose: headerClose,
+                       menuPageContent: menuPageContent,
+                       menuPageClose: menuPageClose,
+                       placeholder: ""
+               });
+
+               // Create list from select, update state
+               this.refresh();
+
+               if ( this._origTabIndex === undefined ) {
+                       // Map undefined to false, because this._origTabIndex === undefined
+                       // indicates that we have not yet checked whether the select has
+                       // originally had a tabindex attribute, whereas false indicates that
+                       // we have checked the select for such an attribute, and have found
+                       // none present.
+                       this._origTabIndex = ( this.select[ 0 ].getAttribute( "tabindex" ) === null ) ? false : this.select.attr( "tabindex" );
+               }
+               this.select.attr( "tabindex", "-1" );
+               this._on( this.select, { focus : "_handleSelectFocus" } );
+
+               // Button events
+               this._on( this.button, {
+                       vclick: "_handleButtonVclickKeydown"
+               });
+
+               // Events for list items
+               this.list.attr( "role", "listbox" );
+               this._on( this.list, {
+                       "focusin": "_handleListFocus",
+                       "focusout": "_handleListFocus",
+                       "keydown": "_handleListKeydown",
+                       "click li:not(.ui-disabled,.ui-state-disabled,.ui-li-divider)": "_handleListItemClick"
+               });
+
+               // button refocus ensures proper height calculation
+               // by removing the inline style and ensuring page inclusion
+               this._on( this.menuPage, { pagehide: "_handleMenuPageHide" } );
+
+               // Events on the popup
+               this._on( this.listbox, { popupafterclose: "_popupClosed" } );
+
+               // Close button on small overlays
+               if ( this.isMultiple ) {
+                       this._on( this.headerClose, { click: "_handleHeaderCloseClick" } );
+               }
+
+               return this;
+       },
+
+       _popupClosed: function() {
+               this.close();
+               this._delayedTrigger();
+       },
+
+       _delayedTrigger: function() {
+               if ( this._triggerChange ) {
+                       this.element.trigger( "change" );
+               }
+               this._triggerChange = false;
+       },
+
+       _isRebuildRequired: function() {
+               var list = this.list.find( "li" ),
+                       options = this._selectOptions().not( ".ui-screen-hidden" );
+
+               // TODO exceedingly naive method to determine difference
+               // ignores value changes etc in favor of a forcedRebuild
+               // from the user in the refresh method
+               return options.text() !== list.text();
+       },
+
+       selected: function() {
+               return this._selectOptions().filter( ":selected:not( :jqmData(placeholder='true') )" );
+       },
+
+       refresh: function( force ) {
+               var self, indices;
+
+               if ( this.options.nativeMenu ) {
+                       return this._super( force );
+               }
+
+               self = this;
+               if ( force || this._isRebuildRequired() ) {
+                       self._buildList();
+               }
+
+               indices = this.selectedIndices();
+
+               self.setButtonText();
+               self.setButtonCount();
+
+               self.list.find( "li:not(.ui-li-divider)" )
+                       .find( "a" ).removeClass( $.mobile.activeBtnClass ).end()
+                       .attr( "aria-selected", false )
+                       .each(function( i ) {
+                               var item = $( this );
+                               if ( $.inArray( i, indices ) > -1 ) {
+
+                                       // Aria selected attr
+                                       item.attr( "aria-selected", true );
+
+                                       // Multiple selects: add the "on" checkbox state to the icon
+                                       if ( self.isMultiple ) {
+                                               item.find( "a" ).removeClass( "ui-checkbox-off" ).addClass( "ui-checkbox-on" );
+                                       } else {
+                                               if ( item.hasClass( "ui-screen-hidden" ) ) {
+                                                       item.next().find( "a" ).addClass( $.mobile.activeBtnClass );
+                                               } else {
+                                                       item.find( "a" ).addClass( $.mobile.activeBtnClass );
+                                               }
+                                       }
+                               } else if ( self.isMultiple ) {
+                                       item.find( "a" ).removeClass( "ui-checkbox-on" ).addClass( "ui-checkbox-off" );
+                               }
+                       });
+       },
+
+       close: function() {
+               if ( this.options.disabled || !this.isOpen ) {
+                       return;
+               }
+
+               var self = this;
+
+               if ( self.menuType === "page" ) {
+                       self.menuPage.dialog( "close" );
+                       self.list.appendTo( self.listbox );
+               } else {
+                       self.listbox.popup( "close" );
+               }
+
+               self._focusButton();
+               // allow the dialog to be closed again
+               self.isOpen = false;
+       },
+
+       open: function() {
+               this.button.click();
+       },
+
+       _focusMenuItem: function() {
+               var selector = this.list.find( "a." + $.mobile.activeBtnClass );
+               if ( selector.length === 0 ) {
+                       selector = this.list.find( "li:not(" + unfocusableItemSelector + ") a.ui-btn" );
+               }
+               selector.first().focus();
+       },
+
+       _decideFormat: function() {
+               var self = this,
+                       $window = this.window,
+                       selfListParent = self.list.parent(),
+                       menuHeight = selfListParent.outerHeight(),
+                       scrollTop = $window.scrollTop(),
+                       btnOffset = self.button.offset().top,
+                       screenHeight = $window.height();
+
+               if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) {
+
+                       self.menuPage.appendTo( $.mobile.pageContainer ).page();
+                       self.menuPageContent = self.menuPage.find( ".ui-content" );
+                       self.menuPageClose = self.menuPage.find( ".ui-header a" );
+
+                       // prevent the parent page from being removed from the DOM,
+                       // otherwise the results of selecting a list item in the dialog
+                       // fall into a black hole
+                       self.thisPage.unbind( "pagehide.remove" );
+
+                       //for WebOS/Opera Mini (set lastscroll using button offset)
+                       if ( scrollTop === 0 && btnOffset > screenHeight ) {
+                               self.thisPage.one( "pagehide", function() {
+                                       $( this ).jqmData( "lastScroll", btnOffset );
+                               });
+                       }
+
+                       self.menuPage.one( {
+                               pageshow: $.proxy( this, "_focusMenuItem" ),
+                               pagehide: $.proxy( this, "close" )
+                       });
+
+                       self.menuType = "page";
+                       self.menuPageContent.append( self.list );
+                       self.menuPage
+                               .find( "div .ui-title" )
+                                       .text( self.label.getEncodedText() || self.placeholder );
+               } else {
+                       self.menuType = "overlay";
+
+                       self.listbox.one( { popupafteropen: $.proxy( this, "_focusMenuItem" ) } );
+               }
+       },
+
+       _buildList: function() {
+               var self = this,
+                       o = this.options,
+                       placeholder = this.placeholder,
+                       needPlaceholder = true,
+                       dataIcon = "false",
+                       $options, numOptions, select,
+                       dataPrefix = "data-" + $.mobile.ns,
+                       dataIndexAttr = dataPrefix + "option-index",
+                       dataIconAttr = dataPrefix + "icon",
+                       dataRoleAttr = dataPrefix + "role",
+                       dataPlaceholderAttr = dataPrefix + "placeholder",
+                       fragment = document.createDocumentFragment(),
+                       isPlaceholderItem = false,
+                       optGroup,
+                       i,
+                       option, $option, parent, text, anchor, classes,
+                       optLabel, divider, item;
+
+               self.list.empty().filter( ".ui-listview" ).listview( "destroy" );
+               $options = this._selectOptions();
+               numOptions = $options.length;
+               select = this.select[ 0 ];
+
+               for ( i = 0; i < numOptions;i++, isPlaceholderItem = false) {
+                       option = $options[i];
+                       $option = $( option );
+
+                       // Do not create options based on ui-screen-hidden select options
+                       if ( $option.hasClass( "ui-screen-hidden" ) ) {
+                               continue;
+                       }
+
+                       parent = option.parentNode;
+                       classes = [];
+
+                       // Although using .text() here raises the risk that, when we later paste this into the
+                       // list item we end up pasting possibly malicious things like <script> tags, that risk
+                       // only arises if we do something like $( "<li><a href='#'>" + text + "</a></li>" ). We
+                       // don't do that. We do document.createTextNode( text ) instead, which guarantees that
+                       // whatever we paste in will end up as text, with characters like <, > and & escaped.
+                       text = $option.text();
+                       anchor = document.createElement( "a" );
+                       anchor.setAttribute( "href", "#" );
+                       anchor.appendChild( document.createTextNode( text ) );
+
+                       // Are we inside an optgroup?
+                       if ( parent !== select && parent.nodeName.toLowerCase() === "optgroup" ) {
+                               optLabel = parent.getAttribute( "label" );
+                               if ( optLabel !== optGroup ) {
+                                       divider = document.createElement( "li" );
+                                       divider.setAttribute( dataRoleAttr, "list-divider" );
+                                       divider.setAttribute( "role", "option" );
+                                       divider.setAttribute( "tabindex", "-1" );
+                                       divider.appendChild( document.createTextNode( optLabel ) );
+                                       fragment.appendChild( divider );
+                                       optGroup = optLabel;
+                               }
+                       }
+
+                       if ( needPlaceholder && ( !option.getAttribute( "value" ) || text.length === 0 || $option.jqmData( "placeholder" ) ) ) {
+                               needPlaceholder = false;
+                               isPlaceholderItem = true;
+
+                               // If we have identified a placeholder, record the fact that it was
+                               // us who have added the placeholder to the option and mark it
+                               // retroactively in the select as well
+                               if ( null === option.getAttribute( dataPlaceholderAttr ) ) {
+                                       this._removePlaceholderAttr = true;
+                               }
+                               option.setAttribute( dataPlaceholderAttr, true );
+                               if ( o.hidePlaceholderMenuItems ) {
+                                       classes.push( "ui-screen-hidden" );
+                               }
+                               if ( placeholder !== text ) {
+                                       placeholder = self.placeholder = text;
+                               }
+                       }
+
+                       item = document.createElement( "li" );
+                       if ( option.disabled ) {
+                               classes.push( "ui-state-disabled" );
+                               item.setAttribute( "aria-disabled", true );
+                       }
+                       item.setAttribute( dataIndexAttr, i );
+                       item.setAttribute( dataIconAttr, dataIcon );
+                       if ( isPlaceholderItem ) {
+                               item.setAttribute( dataPlaceholderAttr, true );
+                       }
+                       item.className = classes.join( " " );
+                       item.setAttribute( "role", "option" );
+                       anchor.setAttribute( "tabindex", "-1" );
+                       if ( this.isMultiple ) {
+                               $( anchor ).addClass( "ui-btn ui-checkbox-off ui-btn-icon-right" );
+                       }
+
+                       item.appendChild( anchor );
+                       fragment.appendChild( item );
+               }
+
+               self.list[0].appendChild( fragment );
+
+               // Hide header if it's not a multiselect and there's no placeholder
+               if ( !this.isMultiple && !placeholder.length ) {
+                       this.header.addClass( "ui-screen-hidden" );
+               } else {
+                       this.headerTitle.text( this.placeholder );
+               }
+
+               // Now populated, create listview
+               self.list.listview();
+       },
+
+       _button: function() {
+               return this.options.nativeMenu ?
+                       this._super() :
+                       $( "<a>", {
+                               "href": "#",
+                               "role": "button",
+                               // TODO value is undefined at creation
+                               "id": this.buttonId,
+                               "aria-haspopup": "true",
+
+                               // TODO value is undefined at creation
+                               "aria-owns": this.menuId
+                       });
+       },
+
+       _destroy: function() {
+
+               if ( !this.options.nativeMenu ) {
+                       this.close();
+
+                       // Restore the tabindex attribute to its original value
+                       if ( this._origTabIndex !== undefined ) {
+                               if ( this._origTabIndex !== false ) {
+                                       this.select.attr( "tabindex", this._origTabIndex );
+                               } else {
+                                       this.select.removeAttr( "tabindex" );
+                               }
+                       }
+
+                       // Remove the placeholder attribute if we were the ones to add it
+                       if ( this._removePlaceholderAttr ) {
+                               this._selectOptions().removeAttr( "data-" + $.mobile.ns + "placeholder" );
+                       }
+
+                       // Remove the popup
+                       this.listbox.remove();
+
+                       // Remove the dialog
+                       this.menuPage.remove();
+               }
+
+               // Chain up
+               this._super();
+       }
+});
+
+})( jQuery );
+
+
+// buttonMarkup is deprecated as of 1.4.0 and will be removed in 1.5.0.
+
+(function( $, undefined ) {
+
+// General policy: Do not access data-* attributes except during enhancement.
+// In all other cases we determine the state of the button exclusively from its
+// className. That's why optionsToClasses expects a full complement of options,
+// and the jQuery plugin completes the set of options from the default values.
+
+// Map classes to buttonMarkup boolean options - used in classNameToOptions()
+var reverseBoolOptionMap = {
+               "ui-shadow" : "shadow",
+               "ui-corner-all" : "corners",
+               "ui-btn-inline" : "inline",
+               "ui-shadow-icon" : "iconshadow", /* TODO: Remove in 1.5 */
+               "ui-mini" : "mini"
+       },
+       getAttrFixed = function() {
+               var ret = $.mobile.getAttribute.apply( this, arguments );
+
+               return ( ret == null ? undefined : ret );
+       },
+       capitalLettersRE = /[A-Z]/g;
+
+// optionsToClasses:
+// @options: A complete set of options to convert to class names.
+// @existingClasses: extra classes to add to the result
+//
+// Converts @options to buttonMarkup classes and returns the result as an array
+// that can be converted to an element's className with .join( " " ). All
+// possible options must be set inside @options. Use $.fn.buttonMarkup.defaults
+// to get a complete set and use $.extend to override your choice of options
+// from that set.
+function optionsToClasses( options, existingClasses ) {
+       var classes = existingClasses ? existingClasses : [];
+
+       // Add classes to the array - first ui-btn
+       classes.push( "ui-btn" );
+
+       // If there is a theme
+       if ( options.theme ) {
+               classes.push( "ui-btn-" + options.theme );
+       }
+
+       // If there's an icon, add the icon-related classes
+       if ( options.icon ) {
+               classes = classes.concat([
+                       "ui-icon-" + options.icon,
+                       "ui-btn-icon-" + options.iconpos
+               ]);
+               if ( options.iconshadow ) {
+                       classes.push( "ui-shadow-icon" ); /* TODO: Remove in 1.5 */
+               }
+       }
+
+       // Add the appropriate class for each boolean option
+       if ( options.inline ) {
+               classes.push( "ui-btn-inline" );
+       }
+       if ( options.shadow ) {
+               classes.push( "ui-shadow" );
+       }
+       if ( options.corners ) {
+               classes.push( "ui-corner-all" );
+       }
+       if ( options.mini ) {
+               classes.push( "ui-mini" );
+       }
+
+       // Create a string from the array and return it
+       return classes;
+}
+
+// classNameToOptions:
+// @classes: A string containing a .className-style space-separated class list
+//
+// Loops over @classes and calculates an options object based on the
+// buttonMarkup-related classes it finds. It records unrecognized classes in an
+// array.
+//
+// Returns: An object containing the following items:
+//
+// "options": buttonMarkup options found to be present because of the
+// presence/absence of corresponding classes
+//
+// "unknownClasses": a string containing all the non-buttonMarkup-related
+// classes found in @classes
+//
+// "alreadyEnhanced": A boolean indicating whether the ui-btn class was among
+// those found to be present
+function classNameToOptions( classes ) {
+       var idx, map, unknownClass,
+               alreadyEnhanced = false,
+               noIcon = true,
+               o = {
+                       icon: "",
+                       inline: false,
+                       shadow: false,
+                       corners: false,
+                       iconshadow: false,
+                       mini: false
+               },
+               unknownClasses = [];
+
+       classes = classes.split( " " );
+
+       // Loop over the classes
+       for ( idx = 0 ; idx < classes.length ; idx++ ) {
+
+               // Assume it's an unrecognized class
+               unknownClass = true;
+
+               // Recognize boolean options from the presence of classes
+               map = reverseBoolOptionMap[ classes[ idx ] ];
+               if ( map !== undefined ) {
+                       unknownClass = false;
+                       o[ map ] = true;
+
+               // Recognize the presence of an icon and establish the icon position
+               } else if ( classes[ idx ].indexOf( "ui-btn-icon-" ) === 0 ) {
+                       unknownClass = false;
+                       noIcon = false;
+                       o.iconpos = classes[ idx ].substring( 12 );
+
+               // Establish which icon is present
+               } else if ( classes[ idx ].indexOf( "ui-icon-" ) === 0 ) {
+                       unknownClass = false;
+                       o.icon = classes[ idx ].substring( 8 );
+
+               // Establish the theme - this recognizes one-letter theme swatch names
+               } else if ( classes[ idx ].indexOf( "ui-btn-" ) === 0 && classes[ idx ].length === 8 ) {
+                       unknownClass = false;
+                       o.theme = classes[ idx ].substring( 7 );
+
+               // Recognize that this element has already been buttonMarkup-enhanced
+               } else if ( classes[ idx ] === "ui-btn" ) {
+                       unknownClass = false;
+                       alreadyEnhanced = true;
+               }
+
+               // If this class has not been recognized, add it to the list
+               if ( unknownClass ) {
+                       unknownClasses.push( classes[ idx ] );
+               }
+       }
+
+       // If a "ui-btn-icon-*" icon position class is absent there cannot be an icon
+       if ( noIcon ) {
+               o.icon = "";
+       }
+
+       return {
+               options: o,
+               unknownClasses: unknownClasses,
+               alreadyEnhanced: alreadyEnhanced
+       };
+}
+
+function camelCase2Hyphenated( c ) {
+       return "-" + c.toLowerCase();
+}
+
+// $.fn.buttonMarkup:
+// DOM: gets/sets .className
+//
+// @options: options to apply to the elements in the jQuery object
+// @overwriteClasses: boolean indicating whether to honour existing classes
+//
+// Calculates the classes to apply to the elements in the jQuery object based on
+// the options passed in. If @overwriteClasses is true, it sets the className
+// property of each element in the jQuery object to the buttonMarkup classes
+// it calculates based on the options passed in.
+//
+// If you wish to preserve any classes that are already present on the elements
+// inside the jQuery object, including buttonMarkup-related classes that were
+// added by a previous call to $.fn.buttonMarkup() or during page enhancement
+// then you should omit @overwriteClasses or set it to false.
+$.fn.buttonMarkup = function( options, overwriteClasses ) {
+       var idx, data, el, retrievedOptions, optionKey,
+               defaults = $.fn.buttonMarkup.defaults;
+
+       for ( idx = 0 ; idx < this.length ; idx++ ) {
+               el = this[ idx ];
+               data = overwriteClasses ?
+
+                       // Assume this element is not enhanced and ignore its classes
+                       { alreadyEnhanced: false, unknownClasses: [] } :
+
+                       // Otherwise analyze existing classes to establish existing options and
+                       // classes
+                       classNameToOptions( el.className );
+
+               retrievedOptions = $.extend( {},
+
+                       // If the element already has the class ui-btn, then we assume that
+                       // it has passed through buttonMarkup before - otherwise, the options
+                       // returned by classNameToOptions do not correctly reflect the state of
+                       // the element
+                       ( data.alreadyEnhanced ? data.options : {} ),
+
+                       // Finally, apply the options passed in
+                       options );
+
+               // If this is the first call on this element, retrieve remaining options
+               // from the data-attributes
+               if ( !data.alreadyEnhanced ) {
+                       for ( optionKey in defaults ) {
+                               if ( retrievedOptions[ optionKey ] === undefined ) {
+                                       retrievedOptions[ optionKey ] = getAttrFixed( el,
+                                               optionKey.replace( capitalLettersRE, camelCase2Hyphenated )
+                                       );
+                               }
+                       }
+               }
+
+               el.className = optionsToClasses(
+
+                       // Merge all the options and apply them as classes
+                       $.extend( {},
+
+                               // The defaults form the basis
+                               defaults,
+
+                               // Add the computed options
+                               retrievedOptions
+                       ),
+
+                       // ... and re-apply any unrecognized classes that were found
+                       data.unknownClasses ).join( " " );
+               if ( el.tagName.toLowerCase() !== "button" ) {
+                       el.setAttribute( "role", "button" );
+               }
+       }
+
+       return this;
+};
+
+// buttonMarkup defaults. This must be a complete set, i.e., a value must be
+// given here for all recognized options
+$.fn.buttonMarkup.defaults = {
+       icon: "",
+       iconpos: "left",
+       theme: null,
+       inline: false,
+       shadow: true,
+       corners: true,
+       iconshadow: false, /* TODO: Remove in 1.5. Option deprecated in 1.4. */
+       mini: false
+};
+
+$.extend( $.fn.buttonMarkup, {
+       initSelector: "a:jqmData(role='button'), .ui-bar > a, .ui-bar > :jqmData(role='controlgroup') > a, button:not(:jqmData(role='navbar') button)"
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.controlgroup", $.extend( {
+       options: {
+               enhanced: false,
+               theme: null,
+               shadow: false,
+               corners: true,
+               excludeInvisible: true,
+               type: "vertical",
+               mini: false
+       },
+
+       _create: function() {
+               var elem = this.element,
+                       opts = this.options,
+                       keepNative = $.mobile.page.prototype.keepNativeSelector();
+
+               // Run buttonmarkup
+               if ( $.fn.buttonMarkup ) {
+                       this.element
+                               .find( $.fn.buttonMarkup.initSelector )
+                               .not( keepNative )
+                               .buttonMarkup();
+               }
+               // Enhance child widgets
+               $.each( this._childWidgets, $.proxy( function( number, widgetName ) {
+                       if ( $.mobile[ widgetName ] ) {
+                               this.element
+                                       .find( $.mobile[ widgetName ].initSelector )
+                                       .not( keepNative )[ widgetName ]();
+                       }
+               }, this ));
+
+               $.extend( this, {
+                       _ui: null,
+                       _initialRefresh: true
+               });
+
+               if ( opts.enhanced ) {
+                       this._ui = {
+                               groupLegend: elem.children( ".ui-controlgroup-label" ).children(),
+                               childWrapper: elem.children( ".ui-controlgroup-controls" )
+                       };
+               } else {
+                       this._ui = this._enhance();
+               }
+
+       },
+
+       _childWidgets: [ "checkboxradio", "selectmenu", "button" ],
+
+       _themeClassFromOption: function( value ) {
+               return ( value ? ( value === "none" ? "" : "ui-group-theme-" + value ) : "" );
+       },
+
+       _enhance: function() {
+               var elem = this.element,
+                       opts = this.options,
+                       ui = {
+                               groupLegend: elem.children( "legend" ),
+                               childWrapper: elem
+                                       .addClass( "ui-controlgroup " +
+                                               "ui-controlgroup-" +
+                                                       ( opts.type === "horizontal" ? "horizontal" : "vertical" ) + " " +
+                                               this._themeClassFromOption( opts.theme ) + " " +
+                                               ( opts.corners ? "ui-corner-all " : "" ) +
+                                               ( opts.mini ? "ui-mini " : "" ) )
+                                       .wrapInner( "<div " +
+                                               "class='ui-controlgroup-controls " +
+                                                       ( opts.shadow === true ? "ui-shadow" : "" ) + "'></div>" )
+                                       .children()
+                       };
+
+               if ( ui.groupLegend.length > 0 ) {
+                       $( "<div role='heading' class='ui-controlgroup-label'></div>" )
+                               .append( ui.groupLegend )
+                               .prependTo( elem );
+               }
+
+               return ui;
+       },
+
+       _init: function() {
+               this.refresh();
+       },
+
+       _setOptions: function( options ) {
+               var callRefresh, returnValue,
+                       elem = this.element;
+
+               // Must have one of horizontal or vertical
+               if ( options.type !== undefined ) {
+                       elem
+                               .removeClass( "ui-controlgroup-horizontal ui-controlgroup-vertical" )
+                               .addClass( "ui-controlgroup-" + ( options.type === "horizontal" ? "horizontal" : "vertical" ) );
+                       callRefresh = true;
+               }
+
+               if ( options.theme !== undefined ) {
+                       elem
+                               .removeClass( this._themeClassFromOption( this.options.theme ) )
+                               .addClass( this._themeClassFromOption( options.theme ) );
+               }
+
+               if ( options.corners !== undefined ) {
+                       elem.toggleClass( "ui-corner-all", options.corners );
+               }
+
+               if ( options.mini !== undefined ) {
+                       elem.toggleClass( "ui-mini", options.mini );
+               }
+
+               if ( options.shadow !== undefined ) {
+                       this._ui.childWrapper.toggleClass( "ui-shadow", options.shadow );
+               }
+
+               if ( options.excludeInvisible !== undefined ) {
+                       this.options.excludeInvisible = options.excludeInvisible;
+                       callRefresh = true;
+               }
+
+               returnValue = this._super( options );
+
+               if ( callRefresh ) {
+                       this.refresh();
+               }
+
+               return returnValue;
+       },
+
+       container: function() {
+               return this._ui.childWrapper;
+       },
+
+       refresh: function() {
+               var $el = this.container(),
+                       els = $el.find( ".ui-btn" ).not( ".ui-slider-handle" ),
+                       create = this._initialRefresh;
+               if ( $.mobile.checkboxradio ) {
+                       $el.find( ":mobile-checkboxradio" ).checkboxradio( "refresh" );
+               }
+               this._addFirstLastClasses( els,
+                       this.options.excludeInvisible ? this._getVisibles( els, create ) : els,
+                       create );
+               this._initialRefresh = false;
+       },
+
+       // Caveat: If the legend is not the first child of the controlgroup at enhance
+       // time, it will be after _destroy().
+       _destroy: function() {
+               var ui, buttons,
+                       opts = this.options;
+
+               if ( opts.enhanced ) {
+                       return this;
+               }
+
+               ui = this._ui;
+               buttons = this.element
+                       .removeClass( "ui-controlgroup " +
+                               "ui-controlgroup-horizontal ui-controlgroup-vertical ui-corner-all ui-mini " +
+                               this._themeClassFromOption( opts.theme ) )
+                       .find( ".ui-btn" )
+                       .not( ".ui-slider-handle" );
+
+               this._removeFirstLastClasses( buttons );
+
+               ui.groupLegend.unwrap();
+               ui.childWrapper.children().unwrap();
+       }
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+       $.widget( "mobile.toolbar", {
+               initSelector: ":jqmData(role='footer'), :jqmData(role='header')",
+
+               options: {
+                       theme: null,
+                       addBackBtn: false,
+                       backBtnTheme: null,
+                       backBtnText: "Back"
+               },
+
+               _create: function() {
+                       var leftbtn, rightbtn,
+                               role =  this.element.is( ":jqmData(role='header')" ) ? "header" : "footer",
+                               page = this.element.closest( ".ui-page" );
+                       if ( page.length === 0 ) {
+                               page = false;
+                               this._on( this.document, {
+                                       "pageshow": "refresh"
+                               });
+                       }
+                       $.extend( this, {
+                               role: role,
+                               page: page,
+                               leftbtn: leftbtn,
+                               rightbtn: rightbtn
+                       });
+                       this.element.attr( "role", role === "header" ? "banner" : "contentinfo" ).addClass( "ui-" + role );
+                       this.refresh();
+                       this._setOptions( this.options );
+               },
+               _setOptions: function( o ) {
+                       if ( o.addBackBtn !== undefined ) {
+                               this._updateBackButton();
+                       }
+                       if ( o.backBtnTheme != null ) {
+                               this.element
+                                       .find( ".ui-toolbar-back-btn" )
+                                       .addClass( "ui-btn ui-btn-" + o.backBtnTheme );
+                       }
+                       if ( o.backBtnText !== undefined ) {
+                               this.element.find( ".ui-toolbar-back-btn .ui-btn-text" ).text( o.backBtnText );
+                       }
+                       if ( o.theme !== undefined ) {
+                               var currentTheme = this.options.theme ? this.options.theme : "inherit",
+                                       newTheme = o.theme ? o.theme : "inherit";
+
+                               this.element.removeClass( "ui-bar-" + currentTheme ).addClass( "ui-bar-" + newTheme );
+                       }
+
+                       this._super( o );
+               },
+               refresh: function() {
+                       if ( this.role === "header" ) {
+                               this._addHeaderButtonClasses();
+                       }
+                       if ( !this.page ) {
+                               this._setRelative();
+                               if ( this.role === "footer" ) {
+                                       this.element.appendTo( "body" );
+                               } else if ( this.role === "header" ) {
+                                       this._updateBackButton();
+                               }
+                       }
+                       this._addHeadingClasses();
+                       this._btnMarkup();
+               },
+
+               //we only want this to run on non fixed toolbars so make it easy to override
+               _setRelative: function() {
+                       $( "[data-"+ $.mobile.ns + "role='page']" ).css({ "position": "relative" });
+               },
+
+               // Deprecated in 1.4. As from 1.5 button classes have to be present in the markup.
+               _btnMarkup: function() {
+                       this.element
+                               .children( "a" )
+                               .filter( ":not([data-" + $.mobile.ns + "role='none'])" )
+                               .attr( "data-" + $.mobile.ns + "role", "button" );
+                       this.element.trigger( "create" );
+               },
+               // Deprecated in 1.4. As from 1.5 ui-btn-left/right classes have to be present in the markup.
+               _addHeaderButtonClasses: function() {
+                       var headerAnchors = this.element.children( "a, button" );
+
+                       // Do not mistake a back button for a left toolbar button
+                       this.leftbtn = headerAnchors.hasClass( "ui-btn-left" ) &&
+                               !headerAnchors.hasClass( "ui-toolbar-back-btn" );
+
+                       this.rightbtn = headerAnchors.hasClass( "ui-btn-right" );
+
+                       // Filter out right buttons and back buttons
+                       this.leftbtn = this.leftbtn ||
+                               headerAnchors.eq( 0 )
+                                       .not( ".ui-btn-right,.ui-toolbar-back-btn" )
+                                       .addClass( "ui-btn-left" )
+                                       .length;
+
+                       this.rightbtn = this.rightbtn || headerAnchors.eq( 1 ).addClass( "ui-btn-right" ).length;
+               },
+               _updateBackButton: function() {
+                       var backButton,
+                               options = this.options,
+                               theme = options.backBtnTheme || options.theme;
+
+                       // Retrieve the back button or create a new, empty one
+                       backButton = this._backButton = ( this._backButton || {} );
+
+                       // We add a back button only if the option to do so is on
+                       if ( this.options.addBackBtn &&
+
+                                       // This must also be a header toolbar
+                                       this.role === "header" &&
+
+                                       // There must be multiple pages in the DOM
+                                       $( ".ui-page" ).length > 1 &&
+                                       ( this.page ?
+
+                                               // If the toolbar is internal the page's URL must differ from the hash
+                                               ( this.page[ 0 ].getAttribute( "data-" + $.mobile.ns + "url" ) !==
+                                                       $.mobile.path.stripHash( location.hash ) ) :
+
+                                               // Otherwise, if the toolbar is external there must be at least one
+                                               // history item to which one can go back
+                                               ( $.mobile.navigate && $.mobile.navigate.history &&
+                                                       $.mobile.navigate.history.activeIndex > 0 ) ) &&
+
+                                       // The toolbar does not have a left button
+                                       !this.leftbtn ) {
+
+                               // Skip back button creation if one is already present
+                               if ( !backButton.attached ) {
+                                       this.backButton = backButton.element = ( backButton.element ||
+                                               $( "<a role='button' href='javascript:void(0);' " +
+                                                       "class='ui-btn ui-corner-all ui-shadow ui-btn-left " +
+                                                               ( theme ? "ui-btn-" + theme + " " : "" ) +
+                                                               "ui-toolbar-back-btn ui-icon-carat-l ui-btn-icon-left' " +
+                                                       "data-" + $.mobile.ns + "rel='back'>" + options.backBtnText +
+                                                       "</a>" ) )
+                                                       .prependTo( this.element );
+                                       backButton.attached = true;
+                               }
+
+                       // If we are not adding a back button, then remove the one present, if any
+                       } else if ( backButton.element ) {
+                               backButton.element.detach();
+                               backButton.attached = false;
+                       }
+               },
+               _addHeadingClasses: function() {
+                       this.element.children( "h1, h2, h3, h4, h5, h6" )
+                               .addClass( "ui-title" )
+                               // Regardless of h element number in src, it becomes h1 for the enhanced page
+                               .attr({
+                                       "role": "heading",
+                                       "aria-level": "1"
+                               });
+               },
+               _destroy: function() {
+                       var currentTheme;
+
+                       this.element.children( "h1, h2, h3, h4, h5, h6" )
+                               .removeClass( "ui-title" )
+                               .removeAttr( "role" )
+                               .removeAttr( "aria-level" );
+
+                       if ( this.role === "header" ) {
+                               this.element.children( "a, button" )
+                                       .removeClass( "ui-btn-left ui-btn-right ui-btn ui-shadow ui-corner-all" );
+                               if ( this.backButton) {
+                                       this.backButton.remove();
+                               }
+                       }
+
+                       currentTheme = this.options.theme ? this.options.theme : "inherit";
+                       this.element.removeClass( "ui-bar-" + currentTheme );
+
+                       this.element.removeClass( "ui-" + this.role ).removeAttr( "role" );
+               }
+       });
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+       $.widget( "mobile.toolbar", $.mobile.toolbar, {
+               options: {
+                       position:null,
+                       visibleOnPageShow: true,
+                       disablePageZoom: true,
+                       transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown)
+                       fullscreen: false,
+                       tapToggle: true,
+                       tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-flipswitch, .ui-popup, .ui-panel, .ui-panel-dismiss-open",
+                       hideDuringFocus: "input, textarea, select",
+                       updatePagePadding: true,
+                       trackPersistentToolbars: true,
+
+                       // Browser detection! Weeee, here we go...
+                       // Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately.
+                       // Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience.
+                       // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window
+                       // The following function serves to rule out some popular browsers with known fixed-positioning issues
+                       // This is a plugin option like any other, so feel free to improve or overwrite it
+                       supportBlacklist: function() {
+                               return !$.support.fixedPosition;
+                       }
+               },
+
+               _create: function() {
+                       this._super();
+                       this.pagecontainer = $( ":mobile-pagecontainer" );
+                       if ( this.options.position === "fixed" && !this.options.supportBlacklist() ) {
+                               this._makeFixed();
+                       }
+               },
+
+               _makeFixed: function() {
+                       this.element.addClass( "ui-"+ this.role +"-fixed" );
+                       this.updatePagePadding();
+                       this._addTransitionClass();
+                       this._bindPageEvents();
+                       this._bindToggleHandlers();
+               },
+
+               _setOptions: function( o ) {
+                       if ( o.position === "fixed" && this.options.position !== "fixed" ) {
+                               this._makeFixed();
+                       }
+                       if ( this.options.position === "fixed" && !this.options.supportBlacklist() ) {
+                               var $page = ( !!this.page )? this.page: ( $(".ui-page-active").length > 0 )? $(".ui-page-active"): $(".ui-page").eq(0);
+
+                               if ( o.fullscreen !== undefined) {
+                                       if ( o.fullscreen ) {
+                                               this.element.addClass( "ui-"+ this.role +"-fullscreen" );
+                                               $page.addClass( "ui-page-" + this.role + "-fullscreen" );
+                                       }
+                                       // If not fullscreen, add class to page to set top or bottom padding
+                                       else {
+                                               this.element.removeClass( "ui-"+ this.role +"-fullscreen" );
+                                               $page.removeClass( "ui-page-" + this.role + "-fullscreen" ).addClass( "ui-page-" + this.role+ "-fixed" );
+                                       }
+                               }
+                       }
+                       this._super(o);
+               },
+
+               _addTransitionClass: function() {
+                       var tclass = this.options.transition;
+
+                       if ( tclass && tclass !== "none" ) {
+                               // use appropriate slide for header or footer
+                               if ( tclass === "slide" ) {
+                                       tclass = this.element.hasClass( "ui-header" ) ? "slidedown" : "slideup";
+                               }
+
+                               this.element.addClass( tclass );
+                       }
+               },
+
+               _bindPageEvents: function() {
+                       var page = ( !!this.page )? this.element.closest( ".ui-page" ): this.document;
+                       //page event bindings
+                       // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up
+                       // This method is meant to disable zoom while a fixed-positioned toolbar page is visible
+                       this._on( page , {
+                               "pagebeforeshow": "_handlePageBeforeShow",
+                               "webkitAnimationStart":"_handleAnimationStart",
+                               "animationstart":"_handleAnimationStart",
+                               "updatelayout": "_handleAnimationStart",
+                               "pageshow": "_handlePageShow",
+                               "pagebeforehide": "_handlePageBeforeHide"
+                       });
+               },
+
+               _handlePageBeforeShow: function( ) {
+                       var o = this.options;
+                       if ( o.disablePageZoom ) {
+                               $.mobile.zoom.disable( true );
+                       }
+                       if ( !o.visibleOnPageShow ) {
+                               this.hide( true );
+                       }
+               },
+
+               _handleAnimationStart: function() {
+                       if ( this.options.updatePagePadding ) {
+                               this.updatePagePadding( ( !!this.page )? this.page: ".ui-page-active" );
+                       }
+               },
+
+               _handlePageShow: function() {
+                       this.updatePagePadding( ( !!this.page )? this.page: ".ui-page-active" );
+                       if ( this.options.updatePagePadding ) {
+                               this._on( this.window, { "throttledresize": "updatePagePadding" } );
+                       }
+               },
+
+               _handlePageBeforeHide: function( e, ui ) {
+                       var o = this.options,
+                               thisFooter, thisHeader, nextFooter, nextHeader;
+
+                       if ( o.disablePageZoom ) {
+                               $.mobile.zoom.enable( true );
+                       }
+                       if ( o.updatePagePadding ) {
+                               this._off( this.window, "throttledresize" );
+                       }
+
+                       if ( o.trackPersistentToolbars ) {
+                               thisFooter = $( ".ui-footer-fixed:jqmData(id)", this.page );
+                               thisHeader = $( ".ui-header-fixed:jqmData(id)", this.page );
+                               nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ) || $();
+                               nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ) || $();
+
+                               if ( nextFooter.length || nextHeader.length ) {
+
+                                       nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer );
+
+                                       ui.nextPage.one( "pageshow", function() {
+                                               nextHeader.prependTo( this );
+                                               nextFooter.appendTo( this );
+                                       });
+                               }
+                       }
+               },
+
+               _visible: true,
+
+               // This will set the content element's top or bottom padding equal to the toolbar's height
+               updatePagePadding: function( tbPage ) {
+                       var $el = this.element,
+                               header = ( this.role ==="header" ),
+                               pos = parseFloat( $el.css( header ? "top" : "bottom" ) );
+
+                       // This behavior only applies to "fixed", not "fullscreen"
+                       if ( this.options.fullscreen ) { return; }
+                       // tbPage argument can be a Page object or an event, if coming from throttled resize.
+                       tbPage = ( tbPage && tbPage.type === undefined && tbPage ) || this.page || $el.closest( ".ui-page" );
+                       tbPage = ( !!this.page )? this.page: ".ui-page-active";
+                       $( tbPage ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() + pos );
+               },
+
+               _useTransition: function( notransition ) {
+                       var $win = this.window,
+                               $el = this.element,
+                               scroll = $win.scrollTop(),
+                               elHeight = $el.height(),
+                               pHeight = ( !!this.page )? $el.closest( ".ui-page" ).height():$(".ui-page-active").height(),
+                               viewportHeight = $.mobile.getScreenHeight();
+
+                       return !notransition &&
+                               ( this.options.transition && this.options.transition !== "none" &&
+                               (
+                                       ( this.role === "header" && !this.options.fullscreen && scroll > elHeight ) ||
+                                       ( this.role === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight )
+                               ) || this.options.fullscreen
+                               );
+               },
+
+               show: function( notransition ) {
+                       var hideClass = "ui-fixed-hidden",
+                               $el = this.element;
+
+                       if ( this._useTransition( notransition ) ) {
+                               $el
+                                       .removeClass( "out " + hideClass )
+                                       .addClass( "in" )
+                                       .animationComplete(function () {
+                                               $el.removeClass( "in" );
+                                       });
+                       }
+                       else {
+                               $el.removeClass( hideClass );
+                       }
+                       this._visible = true;
+               },
+
+               hide: function( notransition ) {
+                       var hideClass = "ui-fixed-hidden",
+                               $el = this.element,
+                               // if it's a slide transition, our new transitions need the reverse class as well to slide outward
+                               outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" );
+
+                       if ( this._useTransition( notransition ) ) {
+                               $el
+                                       .addClass( outclass )
+                                       .removeClass( "in" )
+                                       .animationComplete(function() {
+                                               $el.addClass( hideClass ).removeClass( outclass );
+                                       });
+                       }
+                       else {
+                               $el.addClass( hideClass ).removeClass( outclass );
+                       }
+                       this._visible = false;
+               },
+
+               toggle: function() {
+                       this[ this._visible ? "hide" : "show" ]();
+               },
+
+               _bindToggleHandlers: function() {
+                       var self = this,
+                               o = self.options,
+                               delayShow, delayHide,
+                               isVisible = true,
+                               page = ( !!this.page )? this.page: $(".ui-page");
+
+                       // tap toggle
+                       page
+                               .bind( "vclick", function( e ) {
+                                       if ( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ) {
+                                               self.toggle();
+                                       }
+                               })
+                               .bind( "focusin focusout", function( e ) {
+                                       //this hides the toolbars on a keyboard pop to give more screen room and prevent ios bug which
+                                       //positions fixed toolbars in the middle of the screen on pop if the input is near the top or
+                                       //bottom of the screen addresses issues #4410 Footer navbar moves up when clicking on a textbox in an Android environment
+                                       //and issue #4113 Header and footer change their position after keyboard popup - iOS
+                                       //and issue #4410 Footer navbar moves up when clicking on a textbox in an Android environment
+                                       if ( screen.width < 1025 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ) {
+                                               //Fix for issue #4724 Moving through form in Mobile Safari with "Next" and "Previous" system
+                                               //controls causes fixed position, tap-toggle false Header to reveal itself
+                                               // isVisible instead of self._visible because the focusin and focusout events fire twice at the same time
+                                               // Also use a delay for hiding the toolbars because on Android native browser focusin is direclty followed
+                                               // by a focusout when a native selects opens and the other way around when it closes.
+                                               if ( e.type === "focusout" && !isVisible ) {
+                                                       isVisible = true;
+                                                       //wait for the stack to unwind and see if we have jumped to another input
+                                                       clearTimeout( delayHide );
+                                                       delayShow = setTimeout( function() {
+                                                               self.show();
+                                                       }, 0 );
+                                               } else if ( e.type === "focusin" && !!isVisible ) {
+                                                       //if we have jumped to another input clear the time out to cancel the show.
+                                                       clearTimeout( delayShow );
+                                                       isVisible = false;
+                                                       delayHide = setTimeout( function() {
+                                                               self.hide();
+                                                       }, 0 );
+                                               }
+                                       }
+                               });
+               },
+
+               _setRelative: function() {
+                       if( this.options.position !== "fixed" ){
+                               $( "[data-"+ $.mobile.ns + "role='page']" ).css({ "position": "relative" });
+                       }
+               },
+
+               _destroy: function() {
+                       var pageClasses, toolbarClasses, hasFixed, header, hasFullscreen,
+                               page = this.pagecontainer.pagecontainer( "getActivePage" );
+
+                       this._super();
+                       if ( this.options.position === "fixed" ) {
+                               hasFixed = $(  "body>.ui-" + this.role + "-fixed" )
+                                                       .add( page.find( ".ui-" + this.options.role + "-fixed" ) )
+                                                       .not( this.element ).length > 0;
+                               hasFullscreen = $(  "body>.ui-" + this.role + "-fixed" )
+                                                       .add( page.find( ".ui-" + this.options.role + "-fullscreen" ) )
+                                                       .not( this.element ).length > 0;
+                               toolbarClasses =  "ui-header-fixed ui-footer-fixed ui-header-fullscreen in out" +
+                                       " ui-footer-fullscreen fade slidedown slideup ui-fixed-hidden";
+                               this.element.removeClass( toolbarClasses );
+                               if ( !hasFullscreen ) {
+                                       pageClasses = "ui-page-" + this.role + "-fullscreen";
+                               }
+                               if ( !hasFixed ) {
+                                       header = this.role === "header";
+                                       pageClasses += " ui-page-" + this.role + "-fixed";
+                                       page.css( "padding-" + ( header ? "top" : "bottom" ), "" );
+                               }
+                               page.removeClass( pageClasses );
+                       }
+               }
+
+       });
+})( jQuery );
+
+(function( $, undefined ) {
+       $.widget( "mobile.toolbar", $.mobile.toolbar, {
+
+               _makeFixed: function() {
+                       this._super();
+                       this._workarounds();
+               },
+
+               //check the browser and version and run needed workarounds
+               _workarounds: function() {
+                       var ua = navigator.userAgent,
+                       platform = navigator.platform,
+                       // Rendering engine is Webkit, and capture major version
+                       wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
+                       wkversion = !!wkmatch && wkmatch[ 1 ],
+                       os = null,
+                       self = this;
+                       //set the os we are working in if it dosent match one with workarounds return
+                       if ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) {
+                               os = "ios";
+                       } else if ( ua.indexOf( "Android" ) > -1 ) {
+                               os = "android";
+                       } else {
+                               return;
+                       }
+                       //check os version if it dosent match one with workarounds return
+                       if ( os === "ios" ) {
+                               //iOS  workarounds
+                               self._bindScrollWorkaround();
+                       } else if ( os === "android" && wkversion && wkversion < 534 ) {
+                               //Android 2.3 run all Android 2.3 workaround
+                               self._bindScrollWorkaround();
+                               self._bindListThumbWorkaround();
+                       } else {
+                               return;
+                       }
+               },
+
+               //Utility class for checking header and footer positions relative to viewport
+               _viewportOffset: function() {
+                       var $el = this.element,
+                               header = $el.hasClass( "ui-header" ),
+                               offset = Math.abs( $el.offset().top - this.window.scrollTop() );
+                       if ( !header ) {
+                               offset = Math.round( offset - this.window.height() + $el.outerHeight() ) - 60;
+                       }
+                       return offset;
+               },
+
+               //bind events for _triggerRedraw() function
+               _bindScrollWorkaround: function() {
+                       var self = this;
+                       //bind to scrollstop and check if the toolbars are correctly positioned
+                       this._on( this.window, { scrollstop: function() {
+                               var viewportOffset = self._viewportOffset();
+                               //check if the header is visible and if its in the right place
+                               if ( viewportOffset > 2 && self._visible ) {
+                                       self._triggerRedraw();
+                               }
+                       }});
+               },
+
+               //this addresses issue #4250 Persistent footer instability in v1.1 with long select lists in Android 2.3.3
+               //and issue #3748 Android 2.x: Page transitions broken when fixed toolbars used
+               //the absolutely positioned thumbnail in a list view causes problems with fixed position buttons above in a nav bar
+               //setting the li's to -webkit-transform:translate3d(0,0,0); solves this problem to avoide potential issues in other
+               //platforms we scope this with the class ui-android-2x-fix
+               _bindListThumbWorkaround: function() {
+                       this.element.closest( ".ui-page" ).addClass( "ui-android-2x-fixed" );
+               },
+               //this addresses issues #4337 Fixed header problem after scrolling content on iOS and Android
+               //and device bugs project issue #1 Form elements can lose click hit area in position: fixed containers.
+               //this also addresses not on fixed toolbars page in docs
+               //adding 1px of padding to the bottom then removing it causes a "redraw"
+               //which positions the toolbars correctly (they will always be visually correct)
+               _triggerRedraw: function() {
+                       var paddingBottom = parseFloat( $( ".ui-page-active" ).css( "padding-bottom" ) );
+                       //trigger page redraw to fix incorrectly positioned fixed elements
+                       $( ".ui-page-active" ).css( "padding-bottom", ( paddingBottom + 1 ) + "px" );
+                       //if the padding is reset with out a timeout the reposition will not occure.
+                       //this is independant of JQM the browser seems to need the time to react.
+                       setTimeout( function() {
+                               $( ".ui-page-active" ).css( "padding-bottom", paddingBottom + "px" );
+                       }, 0 );
+               },
+
+               destroy: function() {
+                       this._super();
+                       //Remove the class we added to the page previously in android 2.x
+                       this.element.closest( ".ui-page-active" ).removeClass( "ui-android-2x-fix" );
+               }
+       });
+
+})( jQuery );
+
+
+( function( $, undefined ) {
+
+var ieHack = ( $.mobile.browser.oldIE && $.mobile.browser.oldIE <= 8 ),
+       uiTemplate = $(
+               "<div class='ui-popup-arrow-guide'></div>" +
+               "<div class='ui-popup-arrow-container" + ( ieHack ? " ie" : "" ) + "'>" +
+                       "<div class='ui-popup-arrow'></div>" +
+               "</div>"
+       );
+
+function getArrow() {
+       var clone = uiTemplate.clone(),
+               gd = clone.eq( 0 ),
+               ct = clone.eq( 1 ),
+               ar = ct.children();
+
+       return { arEls: ct.add( gd ), gd: gd, ct: ct, ar: ar };
+}
+
+$.widget( "mobile.popup", $.mobile.popup, {
+       options: {
+
+               arrow: ""
+       },
+
+       _create: function() {
+               var ar,
+                       ret = this._super();
+
+               if ( this.options.arrow ) {
+                       this._ui.arrow = ar = this._addArrow();
+               }
+
+               return ret;
+       },
+
+       _addArrow: function() {
+               var theme,
+                       opts = this.options,
+                       ar = getArrow();
+
+               theme = this._themeClassFromOption( "ui-body-", opts.theme );
+               ar.ar.addClass( theme + ( opts.shadow ? " ui-overlay-shadow" : "" ) );
+               ar.arEls.hide().appendTo( this.element );
+
+               return ar;
+       },
+
+       _unenhance: function() {
+               var ar = this._ui.arrow;
+
+               if ( ar ) {
+                       ar.arEls.remove();
+               }
+
+               return this._super();
+       },
+
+       // Pretend to show an arrow described by @p and @dir and calculate the
+       // distance from the desired point. If a best-distance is passed in, return
+       // the minimum of the one passed in and the one calculated.
+       _tryAnArrow: function( p, dir, desired, s, best ) {
+               var result, r, diff, desiredForArrow = {}, tip = {};
+
+               // If the arrow has no wiggle room along the edge of the popup, it cannot
+               // be displayed along the requested edge without it sticking out.
+               if ( s.arFull[ p.dimKey ] > s.guideDims[ p.dimKey ] ) {
+                       return best;
+               }
+
+               desiredForArrow[ p.fst ] = desired[ p.fst ] +
+                       ( s.arHalf[ p.oDimKey ] + s.menuHalf[ p.oDimKey ] ) * p.offsetFactor -
+                       s.contentBox[ p.fst ] + ( s.clampInfo.menuSize[ p.oDimKey ] - s.contentBox[ p.oDimKey ] ) * p.arrowOffsetFactor;
+               desiredForArrow[ p.snd ] = desired[ p.snd ];
+
+               result = s.result || this._calculateFinalLocation( desiredForArrow, s.clampInfo );
+               r = { x: result.left, y: result.top };
+
+               tip[ p.fst ] = r[ p.fst ] + s.contentBox[ p.fst ] + p.tipOffset;
+               tip[ p.snd ] = Math.max( result[ p.prop ] + s.guideOffset[ p.prop ] + s.arHalf[ p.dimKey ],
+                       Math.min( result[ p.prop ] + s.guideOffset[ p.prop ] + s.guideDims[ p.dimKey ] - s.arHalf[ p.dimKey ],
+                               desired[ p.snd ] ) );
+
+               diff = Math.abs( desired.x - tip.x ) + Math.abs( desired.y - tip.y );
+               if ( !best || diff < best.diff ) {
+                       // Convert tip offset to coordinates inside the popup
+                       tip[ p.snd ] -= s.arHalf[ p.dimKey ] + result[ p.prop ] + s.contentBox[ p.snd ];
+                       best = { dir: dir, diff: diff, result: result, posProp: p.prop, posVal: tip[ p.snd ] };
+               }
+
+               return best;
+       },
+
+       _getPlacementState: function( clamp ) {
+               var offset, gdOffset,
+                       ar = this._ui.arrow,
+                       state = {
+                               clampInfo: this._clampPopupWidth( !clamp ),
+                               arFull: { cx: ar.ct.width(), cy: ar.ct.height() },
+                               guideDims: { cx: ar.gd.width(), cy: ar.gd.height() },
+                               guideOffset: ar.gd.offset()
+                       };
+
+               offset = this.element.offset();
+
+               ar.gd.css( { left: 0, top: 0, right: 0, bottom: 0 } );
+               gdOffset = ar.gd.offset();
+               state.contentBox = {
+                       x: gdOffset.left - offset.left,
+                       y: gdOffset.top - offset.top,
+                       cx: ar.gd.width(),
+                       cy: ar.gd.height()
+               };
+               ar.gd.removeAttr( "style" );
+
+               // The arrow box moves between guideOffset and guideOffset + guideDims - arFull
+               state.guideOffset = { left: state.guideOffset.left - offset.left, top: state.guideOffset.top - offset.top };
+               state.arHalf = { cx: state.arFull.cx / 2, cy: state.arFull.cy / 2 };
+               state.menuHalf = { cx: state.clampInfo.menuSize.cx / 2, cy: state.clampInfo.menuSize.cy / 2 };
+
+               return state;
+       },
+
+       _placementCoords: function( desired ) {
+               var state, best, params, elOffset, bgRef,
+                       optionValue = this.options.arrow,
+                       ar = this._ui.arrow;
+
+               if ( !ar ) {
+                       return this._super( desired );
+               }
+
+               ar.arEls.show();
+
+               bgRef = {};
+               state = this._getPlacementState( true );
+               params = {
+                       "l": { fst: "x", snd: "y", prop: "top", dimKey: "cy", oDimKey: "cx", offsetFactor: 1, tipOffset:  -state.arHalf.cx, arrowOffsetFactor: 0 },
+                       "r": { fst: "x", snd: "y", prop: "top", dimKey: "cy", oDimKey: "cx", offsetFactor: -1, tipOffset: state.arHalf.cx + state.contentBox.cx, arrowOffsetFactor: 1 },
+                       "b": { fst: "y", snd: "x", prop: "left", dimKey: "cx", oDimKey: "cy", offsetFactor: -1, tipOffset: state.arHalf.cy + state.contentBox.cy, arrowOffsetFactor: 1 },
+                       "t": { fst: "y", snd: "x", prop: "left", dimKey: "cx", oDimKey: "cy", offsetFactor: 1, tipOffset: -state.arHalf.cy, arrowOffsetFactor: 0 }
+               };
+
+               // Try each side specified in the options to see on which one the arrow
+               // should be placed such that the distance between the tip of the arrow and
+               // the desired coordinates is the shortest.
+               $.each( ( optionValue === true ? "l,t,r,b" : optionValue ).split( "," ),
+                       $.proxy( function( key, value ) {
+                               best = this._tryAnArrow( params[ value ], value, desired, state, best );
+                       }, this ) );
+
+               // Could not place the arrow along any of the edges - behave as if showing
+               // the arrow was turned off.
+               if ( !best ) {
+                       ar.arEls.hide();
+                       return this._super( desired );
+               }
+
+               // Move the arrow into place
+               ar.ct
+                       .removeClass( "ui-popup-arrow-l ui-popup-arrow-t ui-popup-arrow-r ui-popup-arrow-b" )
+                       .addClass( "ui-popup-arrow-" + best.dir )
+                       .removeAttr( "style" ).css( best.posProp, best.posVal )
+                       .show();
+
+               // Do not move/size the background div on IE, because we use the arrow div for background as well.
+               if ( !ieHack ) {
+                       elOffset = this.element.offset();
+                       bgRef[ params[ best.dir ].fst ] = ar.ct.offset();
+                       bgRef[ params[ best.dir ].snd ] = {
+                               left: elOffset.left + state.contentBox.x,
+                               top: elOffset.top + state.contentBox.y
+                       };
+               }
+
+               return best.result;
+       },
+
+       _setOptions: function( opts ) {
+               var newTheme,
+                       oldTheme = this.options.theme,
+                       ar = this._ui.arrow,
+                       ret = this._super( opts );
+
+               if ( opts.arrow !== undefined ) {
+                       if ( !ar && opts.arrow ) {
+                               this._ui.arrow = this._addArrow();
+
+                               // Important to return here so we don't set the same options all over
+                               // again below.
+                               return;
+                       } else if ( ar && !opts.arrow ) {
+                               ar.arEls.remove();
+                               this._ui.arrow = null;
+                       }
+               }
+
+               // Reassign with potentially new arrow
+               ar = this._ui.arrow;
+
+               if ( ar ) {
+                       if ( opts.theme !== undefined ) {
+                               oldTheme = this._themeClassFromOption( "ui-body-", oldTheme );
+                               newTheme = this._themeClassFromOption( "ui-body-", opts.theme );
+                               ar.ar.removeClass( oldTheme ).addClass( newTheme );
+                       }
+
+                       if ( opts.shadow !== undefined ) {
+                               ar.ar.toggleClass( "ui-overlay-shadow", opts.shadow );
+                       }
+               }
+
+               return ret;
+       },
+
+       _destroy: function() {
+               var ar = this._ui.arrow;
+
+               if ( ar ) {
+                       ar.arEls.remove();
+               }
+
+               return this._super();
+       }
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.panel", {
+       options: {
+               classes: {
+                       panel: "ui-panel",
+                       panelOpen: "ui-panel-open",
+                       panelClosed: "ui-panel-closed",
+                       panelFixed: "ui-panel-fixed",
+                       panelInner: "ui-panel-inner",
+                       modal: "ui-panel-dismiss",
+                       modalOpen: "ui-panel-dismiss-open",
+                       pageContainer: "ui-panel-page-container",
+                       pageWrapper: "ui-panel-wrapper",
+                       pageFixedToolbar: "ui-panel-fixed-toolbar",
+                       pageContentPrefix: "ui-panel-page-content", /* Used for wrapper and fixed toolbars position, display and open classes. */
+                       animate: "ui-panel-animate"
+               },
+               animate: true,
+               theme: null,
+               position: "left",
+               dismissible: true,
+               display: "reveal", //accepts reveal, push, overlay
+               swipeClose: true,
+               positionFixed: false
+       },
+
+       _closeLink: null,
+       _parentPage: null,
+       _page: null,
+       _modal: null,
+       _panelInner: null,
+       _wrapper: null,
+       _fixedToolbars: null,
+
+       _create: function() {
+               var el = this.element,
+                       parentPage = el.closest( ".ui-page, :jqmData(role='page')" );
+
+               // expose some private props to other methods
+               $.extend( this, {
+                       _closeLink: el.find( ":jqmData(rel='close')" ),
+                       _parentPage: ( parentPage.length > 0 ) ? parentPage : false,
+                       _openedPage: null,
+                       _page: this._getPage,
+                       _panelInner: this._getPanelInner(),
+                       _fixedToolbars: this._getFixedToolbars
+               });
+               if ( this.options.display !== "overlay" ){
+                       this._getWrapper();
+               }
+               this._addPanelClasses();
+
+               // if animating, add the class to do so
+               if ( $.support.cssTransform3d && !!this.options.animate ) {
+                       this.element.addClass( this.options.classes.animate );
+               }
+
+               this._bindUpdateLayout();
+               this._bindCloseEvents();
+               this._bindLinkListeners();
+               this._bindPageEvents();
+
+               if ( !!this.options.dismissible ) {
+                       this._createModal();
+               }
+
+               this._bindSwipeEvents();
+       },
+
+       _getPanelInner: function() {
+               var panelInner = this.element.find( "." + this.options.classes.panelInner );
+
+               if ( panelInner.length === 0 ) {
+                       panelInner = this.element.children().wrapAll( "<div class='" + this.options.classes.panelInner + "' />" ).parent();
+               }
+
+               return panelInner;
+       },
+
+       _createModal: function() {
+               var self = this,
+                       target = self._parentPage ? self._parentPage.parent() : self.element.parent();
+
+               self._modal = $( "<div class='" + self.options.classes.modal + "'></div>" )
+                       .on( "mousedown", function() {
+                               self.close();
+                       })
+                       .appendTo( target );
+       },
+
+       _getPage: function() {
+               var page = this._openedPage || this._parentPage || $( "." + $.mobile.activePageClass );
+
+               return page;
+       },
+
+       _getWrapper: function() {
+               var wrapper = this._page().find( "." + this.options.classes.pageWrapper );
+               if ( wrapper.length === 0 ) {
+                       wrapper = this._page().children( ".ui-header:not(.ui-header-fixed), .ui-content:not(.ui-popup), .ui-footer:not(.ui-footer-fixed)" )
+                               .wrapAll( "<div class='" + this.options.classes.pageWrapper + "'></div>" )
+                               .parent();
+               }
+
+               this._wrapper = wrapper;
+       },
+
+       _getFixedToolbars: function() {
+               var extFixedToolbars = $( "body" ).children( ".ui-header-fixed, .ui-footer-fixed" ),
+                       intFixedToolbars = this._page().find( ".ui-header-fixed, .ui-footer-fixed" ),
+                       fixedToolbars = extFixedToolbars.add( intFixedToolbars ).addClass( this.options.classes.pageFixedToolbar );
+
+               return fixedToolbars;
+       },
+
+       _getPosDisplayClasses: function( prefix ) {
+               return prefix + "-position-" + this.options.position + " " + prefix + "-display-" + this.options.display;
+       },
+
+       _getPanelClasses: function() {
+               var panelClasses = this.options.classes.panel +
+                       " " + this._getPosDisplayClasses( this.options.classes.panel ) +
+                       " " + this.options.classes.panelClosed +
+                       " " + "ui-body-" + ( this.options.theme ? this.options.theme : "inherit" );
+
+               if ( !!this.options.positionFixed ) {
+                       panelClasses += " " + this.options.classes.panelFixed;
+               }
+
+               return panelClasses;
+       },
+
+       _addPanelClasses: function() {
+               this.element.addClass( this._getPanelClasses() );
+       },
+
+       _handleCloseClick: function( event ) {
+               if ( !event.isDefaultPrevented() ) {
+                       this.close();
+               }
+       },
+
+       _bindCloseEvents: function() {
+               this._on( this._closeLink, {
+                       "click": "_handleCloseClick"
+               });
+
+               this._on({
+                       "click a:jqmData(ajax='false')": "_handleCloseClick"
+               });
+       },
+
+       _positionPanel: function( scrollToTop ) {
+               var self = this,
+                       panelInnerHeight = self._panelInner.outerHeight(),
+                       expand = panelInnerHeight > $.mobile.getScreenHeight();
+
+               if ( expand || !self.options.positionFixed ) {
+                       if ( expand ) {
+                               self._unfixPanel();
+                               $.mobile.resetActivePageHeight( panelInnerHeight );
+                       }
+                       if ( scrollToTop ) {
+                               this.window[ 0 ].scrollTo( 0, $.mobile.defaultHomeScroll );
+                       }
+               } else {
+                       self._fixPanel();
+               }
+       },
+
+       _bindFixListener: function() {
+               this._on( $( window ), { "throttledresize": "_positionPanel" });
+       },
+
+       _unbindFixListener: function() {
+               this._off( $( window ), "throttledresize" );
+       },
+
+       _unfixPanel: function() {
+               if ( !!this.options.positionFixed && $.support.fixedPosition ) {
+                       this.element.removeClass( this.options.classes.panelFixed );
+               }
+       },
+
+       _fixPanel: function() {
+               if ( !!this.options.positionFixed && $.support.fixedPosition ) {
+                       this.element.addClass( this.options.classes.panelFixed );
+               }
+       },
+
+       _bindUpdateLayout: function() {
+               var self = this;
+
+               self.element.on( "updatelayout", function(/* e */) {
+                       if ( self._open ) {
+                               self._positionPanel();
+                       }
+               });
+       },
+
+       _bindLinkListeners: function() {
+               this._on( "body", {
+                       "click a": "_handleClick"
+               });
+
+       },
+
+       _handleClick: function( e ) {
+               var link,
+                       panelId = this.element.attr( "id" );
+
+               if ( e.currentTarget.href.split( "#" )[ 1 ] === panelId && panelId !== undefined ) {
+
+                       e.preventDefault();
+                       link = $( e.target );
+                       if ( link.hasClass( "ui-btn" ) ) {
+                               link.addClass( $.mobile.activeBtnClass );
+                               this.element.one( "panelopen panelclose", function() {
+                                       link.removeClass( $.mobile.activeBtnClass );
+                               });
+                       }
+                       this.toggle();
+               }
+       },
+
+       _bindSwipeEvents: function() {
+               var self = this,
+                       area = self._modal ? self.element.add( self._modal ) : self.element;
+
+               // on swipe, close the panel
+               if ( !!self.options.swipeClose ) {
+                       if ( self.options.position === "left" ) {
+                               area.on( "swipeleft.panel", function(/* e */) {
+                                       self.close();
+                               });
+                       } else {
+                               area.on( "swiperight.panel", function(/* e */) {
+                                       self.close();
+                               });
+                       }
+               }
+       },
+
+       _bindPageEvents: function() {
+               var self = this;
+
+               this.document
+                       // Close the panel if another panel on the page opens
+                       .on( "panelbeforeopen", function( e ) {
+                               if ( self._open && e.target !== self.element[ 0 ] ) {
+                                       self.close();
+                               }
+                       })
+                       // On escape, close? might need to have a target check too...
+                       .on( "keyup.panel", function( e ) {
+                               if ( e.keyCode === 27 && self._open ) {
+                                       self.close();
+                               }
+                       });
+               if ( !this._parentPage && this.options.display !== "overlay" ) {
+                       this._on( this.document, {
+                               "pageshow": function() {
+                                       this._openedPage = null;
+                                       this._getWrapper();
+                               }
+                       });
+               }
+               // Clean up open panels after page hide
+               if ( self._parentPage ) {
+                       this.document.on( "pagehide", ":jqmData(role='page')", function() {
+                               if ( self._open ) {
+                                       self.close( true );
+                               }
+                       });
+               } else {
+                       this.document.on( "pagebeforehide", function() {
+                               if ( self._open ) {
+                                       self.close( true );
+                               }
+                       });
+               }
+       },
+
+       // state storage of open or closed
+       _open: false,
+       _pageContentOpenClasses: null,
+       _modalOpenClasses: null,
+
+       open: function( immediate ) {
+               if ( !this._open ) {
+                       var self = this,
+                               o = self.options,
+
+                               _openPanel = function() {
+                                       self._off( self.document , "panelclose" );
+                                       self._page().jqmData( "panel", "open" );
+
+                                       if ( $.support.cssTransform3d && !!o.animate && o.display !== "overlay" ) {
+                                               self._wrapper.addClass( o.classes.animate );
+                                               self._fixedToolbars().addClass( o.classes.animate );
+                                       }
+
+                                       if ( !immediate && $.support.cssTransform3d && !!o.animate ) {
+                                               ( self._wrapper || self.element )
+                                                       .animationComplete( complete, "transition" );
+                                       } else {
+                                               setTimeout( complete, 0 );
+                                       }
+
+                                       if ( o.theme && o.display !== "overlay" ) {
+                                               self._page().parent()
+                                                       .addClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+                                       }
+
+                                       self.element
+                                               .removeClass( o.classes.panelClosed )
+                                               .addClass( o.classes.panelOpen );
+
+                                       self._positionPanel( true );
+
+                                       self._pageContentOpenClasses = self._getPosDisplayClasses( o.classes.pageContentPrefix );
+
+                                       if ( o.display !== "overlay" ) {
+                                               self._page().parent().addClass( o.classes.pageContainer );
+                                               self._wrapper.addClass( self._pageContentOpenClasses );
+                                               self._fixedToolbars().addClass( self._pageContentOpenClasses );
+                                       }
+
+                                       self._modalOpenClasses = self._getPosDisplayClasses( o.classes.modal ) + " " + o.classes.modalOpen;
+                                       if ( self._modal ) {
+                                               self._modal
+                                                       .addClass( self._modalOpenClasses )
+                                                       .height( Math.max( self._modal.height(), self.document.height() ) );
+                                       }
+                               },
+                               complete = function() {
+
+                                       // Bail if the panel was closed before the opening animation has completed
+                                       if ( !self._open ) {
+                                               return;
+                                       }
+
+                                       if ( o.display !== "overlay" ) {
+                                               self._wrapper.addClass( o.classes.pageContentPrefix + "-open" );
+                                               self._fixedToolbars().addClass( o.classes.pageContentPrefix + "-open" );
+                                       }
+
+                                       self._bindFixListener();
+
+                                       self._trigger( "open" );
+
+                                       self._openedPage = self._page();
+                               };
+
+                       self._trigger( "beforeopen" );
+
+                       if ( self._page().jqmData( "panel" ) === "open" ) {
+                               self._on( self.document, {
+                                       "panelclose": _openPanel
+                               });
+                       } else {
+                               _openPanel();
+                       }
+
+                       self._open = true;
+               }
+       },
+
+       close: function( immediate ) {
+               if ( this._open ) {
+                       var self = this,
+                               o = this.options,
+
+                               _closePanel = function() {
+
+                                       self.element.removeClass( o.classes.panelOpen );
+
+                                       if ( o.display !== "overlay" ) {
+                                               self._wrapper.removeClass( self._pageContentOpenClasses );
+                                               self._fixedToolbars().removeClass( self._pageContentOpenClasses );
+                                       }
+
+                                       if ( !immediate && $.support.cssTransform3d && !!o.animate ) {
+                                               ( self._wrapper || self.element )
+                                                       .animationComplete( complete, "transition" );
+                                       } else {
+                                               setTimeout( complete, 0 );
+                                       }
+
+                                       if ( self._modal ) {
+                                               self._modal
+                                                       .removeClass( self._modalOpenClasses )
+                                                       .height( "" );
+                                       }
+                               },
+                               complete = function() {
+                                       if ( o.theme && o.display !== "overlay" ) {
+                                               self._page().parent().removeClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+                                       }
+
+                                       self.element.addClass( o.classes.panelClosed );
+
+                                       if ( o.display !== "overlay" ) {
+                                               self._page().parent().removeClass( o.classes.pageContainer );
+                                               self._wrapper.removeClass( o.classes.pageContentPrefix + "-open" );
+                                               self._fixedToolbars().removeClass( o.classes.pageContentPrefix + "-open" );
+                                       }
+
+                                       if ( $.support.cssTransform3d && !!o.animate && o.display !== "overlay" ) {
+                                               self._wrapper.removeClass( o.classes.animate );
+                                               self._fixedToolbars().removeClass( o.classes.animate );
+                                       }
+
+                                       self._fixPanel();
+                                       self._unbindFixListener();
+                                       $.mobile.resetActivePageHeight();
+
+                                       self._page().jqmRemoveData( "panel" );
+
+                                       self._trigger( "close" );
+
+                                       self._openedPage = null;
+                               };
+
+                       self._trigger( "beforeclose" );
+
+                       _closePanel();
+
+                       self._open = false;
+               }
+       },
+
+       toggle: function() {
+               this[ this._open ? "close" : "open" ]();
+       },
+
+       _destroy: function() {
+               var otherPanels,
+               o = this.options,
+               multiplePanels = ( $( "body > :mobile-panel" ).length + $.mobile.activePage.find( ":mobile-panel" ).length ) > 1;
+
+               if ( o.display !== "overlay" ) {
+
+                       //  remove the wrapper if not in use by another panel
+                       otherPanels = $( "body > :mobile-panel" ).add( $.mobile.activePage.find( ":mobile-panel" ) );
+                       if ( otherPanels.not( ".ui-panel-display-overlay" ).not( this.element ).length === 0 ) {
+                               this._wrapper.children().unwrap();
+                       }
+
+                       if ( this._open ) {
+
+                               this._fixedToolbars().removeClass( o.classes.pageContentPrefix + "-open" );
+
+                               if ( $.support.cssTransform3d && !!o.animate ) {
+                                       this._fixedToolbars().removeClass( o.classes.animate );
+                               }
+
+                               this._page().parent().removeClass( o.classes.pageContainer );
+
+                               if ( o.theme ) {
+                                       this._page().parent().removeClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+                               }
+                       }
+               }
+
+               if ( !multiplePanels ) {
+
+                       this.document.off( "panelopen panelclose" );
+
+               }
+
+               if ( this._open ) {
+                       this._page().jqmRemoveData( "panel" );
+               }
+
+               this._panelInner.children().unwrap();
+
+               this.element
+                       .removeClass( [ this._getPanelClasses(), o.classes.panelOpen, o.classes.animate ].join( " " ) )
+                       .off( "swipeleft.panel swiperight.panel" )
+                       .off( "panelbeforeopen" )
+                       .off( "panelhide" )
+                       .off( "keyup.panel" )
+                       .off( "updatelayout" );
+
+               if ( this._modal ) {
+                       this._modal.remove();
+               }
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", {
+       options: {
+               classes: {
+                       table: "ui-table"
+               },
+               enhanced: false
+       },
+
+       _create: function() {
+               if ( !this.options.enhanced ) {
+                       this.element.addClass( this.options.classes.table );
+               }
+
+               // extend here, assign on refresh > _setHeaders
+               $.extend( this, {
+
+                       // Expose headers and allHeaders properties on the widget
+                       // headers references the THs within the first TR in the table
+                       headers: undefined,
+
+                       // allHeaders references headers, plus all THs in the thead, which may
+                       // include several rows, or not
+                       allHeaders: undefined
+               });
+
+               this._refresh( true );
+       },
+
+       _setHeaders: function() {
+               var trs = this.element.find( "thead tr" );
+
+               this.headers = this.element.find( "tr:eq(0)" ).children();
+               this.allHeaders = this.headers.add( trs.children() );
+       },
+
+       refresh: function() {
+               this._refresh();
+       },
+
+       rebuild: $.noop,
+
+       _refresh: function( /* create */ ) {
+               var table = this.element,
+                       trs = table.find( "thead tr" );
+
+               // updating headers on refresh (fixes #5880)
+               this._setHeaders();
+
+               // Iterate over the trs
+               trs.each( function() {
+                       var columnCount = 0;
+
+                       // Iterate over the children of the tr
+                       $( this ).children().each( function() {
+                               var span = parseInt( this.getAttribute( "colspan" ), 10 ),
+                                       selector = ":nth-child(" + ( columnCount + 1 ) + ")",
+                                       j;
+
+                               this.setAttribute( "data-" + $.mobile.ns + "colstart", columnCount + 1 );
+
+                               if ( span ) {
+                                       for( j = 0; j < span - 1; j++ ) {
+                                               columnCount++;
+                                               selector += ", :nth-child(" + ( columnCount + 1 ) + ")";
+                                       }
+                               }
+
+                               // Store "cells" data on header as a reference to all cells in the
+                               // same column as this TH
+                               $( this ).jqmData( "cells", table.find( "tr" ).not( trs.eq( 0 ) ).not( this ).children( selector ) );
+
+                               columnCount++;
+                       });
+               });
+       }
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", $.mobile.table, {
+       options: {
+               mode: "columntoggle",
+               columnBtnTheme: null,
+               columnPopupTheme: null,
+               columnBtnText: "Columns...",
+               classes: $.extend( $.mobile.table.prototype.options.classes, {
+                       popup: "ui-table-columntoggle-popup",
+                       columnBtn: "ui-table-columntoggle-btn",
+                       priorityPrefix: "ui-table-priority-",
+                       columnToggleTable: "ui-table-columntoggle"
+               })
+       },
+
+       _create: function() {
+               this._super();
+
+               if ( this.options.mode !== "columntoggle" ) {
+                       return;
+               }
+
+               $.extend( this, {
+                       _menu: null
+               });
+
+               if ( this.options.enhanced ) {
+                       this._menu = $( this.document[ 0 ].getElementById( this._id() + "-popup" ) ).children().first();
+                       this._addToggles( this._menu, true );
+               } else {
+                       this._menu = this._enhanceColToggle();
+                       this.element.addClass( this.options.classes.columnToggleTable );
+               }
+
+               this._setupEvents();
+
+               this._setToggleState();
+       },
+
+       _id: function() {
+               return ( this.element.attr( "id" ) || ( this.widgetName + this.uuid ) );
+       },
+
+       _setupEvents: function() {
+               //NOTE: inputs are bound in bindToggles,
+               // so it can be called on refresh, too
+
+               // update column toggles on resize
+               this._on( this.window, {
+                       throttledresize: "_setToggleState"
+               });
+               this._on( this._menu, {
+                       "change input": "_menuInputChange"
+               });
+       },
+
+       _addToggles: function( menu, keep ) {
+               var inputs,
+                       checkboxIndex = 0,
+                       opts = this.options,
+                       container = menu.controlgroup( "container" );
+
+               // allow update of menu on refresh (fixes #5880)
+               if ( keep ) {
+                       inputs = menu.find( "input" );
+               } else {
+                       container.empty();
+               }
+
+               // create the hide/show toggles
+               this.headers.not( "td" ).each( function() {
+                       var input, cells,
+                               header = $( this ),
+                               priority = $.mobile.getAttribute( this, "priority" );
+
+                       if ( priority ) {
+                               cells = header.add( header.jqmData( "cells" ) );
+                               cells.addClass( opts.classes.priorityPrefix + priority );
+
+                               // Make sure the (new?) checkbox is associated with its header via .jqmData() and
+                               // that, vice versa, the header is also associated with the checkbox
+                               input = ( keep ? inputs.eq( checkboxIndex++ ) :
+                                       $("<label><input type='checkbox' checked />" +
+                                               ( header.children( "abbr" ).first().attr( "title" ) ||
+                                                       header.text() ) +
+                                               "</label>" )
+                                               .appendTo( container )
+                                               .children( 0 )
+                                               .checkboxradio( {
+                                                       theme: opts.columnPopupTheme
+                                               }) )
+
+                                               // Associate the header with the checkbox
+                                               .jqmData( "header", header )
+                                               .jqmData( "cells", cells );
+
+                               // Associate the checkbox with the header
+                               header.jqmData( "input", input );
+                       }
+               });
+
+               // set bindings here
+               if ( !keep ) {
+                       menu.controlgroup( "refresh" );
+               }
+       },
+
+       _menuInputChange: function( evt ) {
+               var input = $( evt.target ),
+                       checked = input[ 0 ].checked;
+
+               input.jqmData( "cells" )
+                       .toggleClass( "ui-table-cell-hidden", !checked )
+                       .toggleClass( "ui-table-cell-visible", checked );
+       },
+
+       _unlockCells: function( cells ) {
+               // allow hide/show via CSS only = remove all toggle-locks
+               cells.removeClass( "ui-table-cell-hidden ui-table-cell-visible");
+       },
+
+       _enhanceColToggle: function() {
+               var id , menuButton, popup, menu,
+                       table = this.element,
+                       opts = this.options,
+                       ns = $.mobile.ns,
+                       fragment = this.document[ 0 ].createDocumentFragment();
+
+               id = this._id() + "-popup";
+               menuButton = $( "<a href='#" + id + "' " +
+                       "class='" + opts.classes.columnBtn + " ui-btn " +
+                       "ui-btn-" + ( opts.columnBtnTheme || "a" ) +
+                       " ui-corner-all ui-shadow ui-mini' " +
+                       "data-" + ns + "rel='popup'>" + opts.columnBtnText + "</a>" );
+               popup = $( "<div class='" + opts.classes.popup + "' id='" + id + "'></div>" );
+               menu = $( "<fieldset></fieldset>" ).controlgroup();
+
+               // set extension here, send "false" to trigger build/rebuild
+               this._addToggles( menu, false );
+
+               menu.appendTo( popup );
+
+               fragment.appendChild( popup[ 0 ] );
+               fragment.appendChild( menuButton[ 0 ] );
+               table.before( fragment );
+
+               popup.popup();
+
+               return menu;
+       },
+
+       rebuild: function() {
+               this._super();
+
+               if ( this.options.mode === "columntoggle" ) {
+                       // NOTE: rebuild passes "false", while refresh passes "undefined"
+                       // both refresh the table, but inside addToggles, !false will be true,
+                       // so a rebuild call can be indentified
+                       this._refresh( false );
+               }
+       },
+
+       _refresh: function( create ) {
+               var headers, hiddenColumns, index;
+
+               // Calling _super() here updates this.headers
+               this._super( create );
+
+               if ( !create && this.options.mode === "columntoggle" ) {
+                       headers = this.headers;
+                       hiddenColumns = [];
+
+                       // Find the index of the column header associated with each old checkbox among the
+                       // post-refresh headers and, if the header is still there, make sure the corresponding
+                       // column will be hidden if the pre-refresh checkbox indicates that the column is
+                       // hidden by recording its index in the array of hidden columns.
+                       this._menu.find( "input" ).each( function() {
+                               var input = $( this ),
+                                       header = input.jqmData( "header" ),
+                                       index = headers.index( header[ 0 ] );
+
+                               if ( index > -1 && !input.prop( "checked" ) ) {
+
+                                       // The column header associated with /this/ checkbox is still present in the
+                                       // post-refresh table and the checkbox is not checked, so the column associated
+                                       // with this column header is currently hidden. Let's record that.
+                                       hiddenColumns.push( index );
+                               }
+                       });
+
+                       // columns not being replaced must be cleared from input toggle-locks
+                       this._unlockCells( this.element.find( ".ui-table-cell-hidden, " +
+                               ".ui-table-cell-visible" ) );
+
+                       // update columntoggles and cells
+                       this._addToggles( this._menu, create );
+
+                       // At this point all columns are visible, so uncheck the checkboxes that correspond to
+                       // those columns we've found to be hidden
+                       for ( index = hiddenColumns.length - 1 ; index > -1 ; index-- ) {
+                               headers.eq( hiddenColumns[ index ] ).jqmData( "input" )
+                                       .prop( "checked", false )
+                                       .checkboxradio( "refresh" )
+                                       .trigger( "change" );
+                       }
+               }
+       },
+
+       _setToggleState: function() {
+               this._menu.find( "input" ).each( function() {
+                       var checkbox = $( this );
+
+                       this.checked = checkbox.jqmData( "cells" ).eq( 0 ).css( "display" ) === "table-cell";
+                       checkbox.checkboxradio( "refresh" );
+               });
+       },
+
+       _destroy: function() {
+               this._super();
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", $.mobile.table, {
+       options: {
+               mode: "reflow",
+               classes: $.extend( $.mobile.table.prototype.options.classes, {
+                       reflowTable: "ui-table-reflow",
+                       cellLabels: "ui-table-cell-label"
+               })
+       },
+
+       _create: function() {
+               this._super();
+
+               // If it's not reflow mode, return here.
+               if ( this.options.mode !== "reflow" ) {
+                       return;
+               }
+
+               if ( !this.options.enhanced ) {
+                       this.element.addClass( this.options.classes.reflowTable );
+
+                       this._updateReflow();
+               }
+       },
+
+       rebuild: function() {
+               this._super();
+
+               if ( this.options.mode === "reflow" ) {
+                       this._refresh( false );
+               }
+       },
+
+       _refresh: function( create ) {
+               this._super( create );
+               if ( !create && this.options.mode === "reflow" ) {
+                       this._updateReflow( );
+               }
+       },
+
+       _updateReflow: function() {
+               var table = this,
+                       opts = this.options;
+
+               // get headers in reverse order so that top-level headers are appended last
+               $( table.allHeaders.get().reverse() ).each( function() {
+                       var cells = $( this ).jqmData( "cells" ),
+                               colstart = $.mobile.getAttribute( this, "colstart" ),
+                               hierarchyClass = cells.not( this ).filter( "thead th" ).length && " ui-table-cell-label-top",
+                               contents = $( this ).clone().contents(),
+                               iteration, filter;
+
+                               if ( contents.length > 0  ) {
+
+                                       if ( hierarchyClass ) {
+                                               iteration = parseInt( this.getAttribute( "colspan" ), 10 );
+                                               filter = "";
+
+                                               if ( iteration ) {
+                                                       filter = "td:nth-child("+ iteration +"n + " + ( colstart ) +")";
+                                               }
+
+                                               table._addLabels( cells.filter( filter ),
+                                                       opts.classes.cellLabels + hierarchyClass, contents );
+                                       } else {
+                                               table._addLabels( cells, opts.classes.cellLabels, contents );
+                                       }
+
+                               }
+               });
+       },
+
+       _addLabels: function( cells, label, contents ) {
+               if ( contents.length === 1 && contents[ 0 ].nodeName.toLowerCase() === "abbr" ) {
+                       contents = contents.eq( 0 ).attr( "title" );
+               }
+               // .not fixes #6006
+               cells
+                       .not( ":has(b." + label + ")" )
+                               .prepend( $( "<b class='" + label + "'></b>" ).append( contents ) );
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// TODO rename filterCallback/deprecate and default to the item itself as the first argument
+var defaultFilterCallback = function( index, searchValue ) {
+       return ( ( "" + ( $.mobile.getAttribute( this, "filtertext" ) || $( this ).text() ) )
+               .toLowerCase().indexOf( searchValue ) === -1 );
+};
+
+$.widget( "mobile.filterable", {
+
+       initSelector: ":jqmData(filter='true')",
+
+       options: {
+               filterReveal: false,
+               filterCallback: defaultFilterCallback,
+               enhanced: false,
+               input: null,
+               children: "> li, > option, > optgroup option, > tbody tr, > .ui-controlgroup-controls > .ui-btn, > .ui-controlgroup-controls > .ui-checkbox, > .ui-controlgroup-controls > .ui-radio"
+       },
+
+       _create: function() {
+               var opts = this.options;
+
+               $.extend( this, {
+                       _search: null,
+                       _timer: 0
+               });
+
+               this._setInput( opts.input );
+               if ( !opts.enhanced ) {
+                       this._filterItems( ( ( this._search && this._search.val() ) || "" ).toLowerCase() );
+               }
+       },
+
+       _onKeyUp: function() {
+               var val, lastval,
+                       search = this._search;
+
+               if ( search ) {
+                       val = search.val().toLowerCase(),
+                       lastval = $.mobile.getAttribute( search[ 0 ], "lastval" ) + "";
+
+                       if ( lastval && lastval === val ) {
+                               // Execute the handler only once per value change
+                               return;
+                       }
+
+                       if ( this._timer ) {
+                               window.clearTimeout( this._timer );
+                               this._timer = 0;
+                       }
+
+                       this._timer = this._delay( function() {
+                               if ( this._trigger( "beforefilter", null, { input: search } ) === false ) {
+                                       return false;
+                               }
+
+                               // Change val as lastval for next execution
+                               search[ 0 ].setAttribute( "data-" + $.mobile.ns + "lastval", val );
+
+                               this._filterItems( val );
+                               this._timer = 0;
+                       }, 250 );
+               }
+       },
+
+       _getFilterableItems: function() {
+               var elem = this.element,
+                       children = this.options.children,
+                       items = !children ? { length: 0 }:
+                               $.isFunction( children ) ? children():
+                               children.nodeName ? $( children ):
+                               children.jquery ? children:
+                               this.element.find( children );
+
+               if ( items.length === 0 ) {
+                       items = elem.children();
+               }
+
+               return items;
+       },
+
+       _filterItems: function( val ) {
+               var idx, callback, length, dst,
+                       show = [],
+                       hide = [],
+                       opts = this.options,
+                       filterItems = this._getFilterableItems();
+
+               if ( val != null ) {
+                       callback = opts.filterCallback || defaultFilterCallback;
+                       length = filterItems.length;
+
+                       // Partition the items into those to be hidden and those to be shown
+                       for ( idx = 0 ; idx < length ; idx++ ) {
+                               dst = ( callback.call( filterItems[ idx ], idx, val ) ) ? hide : show;
+                               dst.push( filterItems[ idx ] );
+                       }
+               }
+
+               // If nothing is hidden, then the decision whether to hide or show the items
+               // is based on the "filterReveal" option.
+               if ( hide.length === 0 ) {
+                       filterItems[ ( opts.filterReveal && val.length === 0 ) ?
+                               "addClass" : "removeClass" ]( "ui-screen-hidden" );
+               } else {
+                       $( hide ).addClass( "ui-screen-hidden" );
+                       $( show ).removeClass( "ui-screen-hidden" );
+               }
+
+               this._refreshChildWidget();
+
+               this._trigger( "filter", null, {
+                       items: filterItems
+               });
+       },
+
+       // The Default implementation of _refreshChildWidget attempts to call
+       // refresh on collapsibleset, controlgroup, selectmenu, or listview
+       _refreshChildWidget: function() {
+               var widget, idx,
+                       recognizedWidgets = [ "collapsibleset", "selectmenu", "controlgroup", "listview" ];
+
+               for ( idx = recognizedWidgets.length - 1 ; idx > -1 ; idx-- ) {
+                       widget = recognizedWidgets[ idx ];
+                       if ( $.mobile[ widget ] ) {
+                               widget = this.element.data( "mobile-" + widget );
+                               if ( widget && $.isFunction( widget.refresh ) ) {
+                                       widget.refresh();
+                               }
+                       }
+               }
+       },
+
+       // TODO: When the input is not internal, do not even store it in this._search
+       _setInput: function ( selector ) {
+               var search = this._search;
+
+               // Stop a pending filter operation
+               if ( this._timer ) {
+                       window.clearTimeout( this._timer );
+                       this._timer = 0;
+               }
+
+               if ( search ) {
+                       this._off( search, "keyup change input" );
+                       search = null;
+               }
+
+               if ( selector ) {
+                       search = selector.jquery ? selector:
+                               selector.nodeName ? $( selector ):
+                               this.document.find( selector );
+
+                       this._on( search, {
+                               keydown: "_onKeyDown",
+                               keypress: "_onKeyPress",
+                               keyup: "_onKeyUp",
+                               change: "_onKeyUp",
+                               input: "_onKeyUp"
+                       });
+               }
+
+               this._search = search;
+       },
+
+       // Prevent form submission
+       _onKeyDown: function( event ) {
+               if ( event.keyCode === $.ui.keyCode.ENTER ) {
+                       event.preventDefault();
+                       this._preventKeyPress = true;
+               }
+       },
+
+       _onKeyPress: function( event ) {
+               if ( this._preventKeyPress ) {
+                       event.preventDefault();
+                       this._preventKeyPress = false;
+               }
+       },
+
+       _setOptions: function( options ) {
+               var refilter = !( ( options.filterReveal === undefined ) &&
+                               ( options.filterCallback === undefined ) &&
+                               ( options.children === undefined ) );
+
+               this._super( options );
+
+               if ( options.input !== undefined ) {
+                       this._setInput( options.input );
+                       refilter = true;
+               }
+
+               if ( refilter ) {
+                       this.refresh();
+               }
+       },
+
+       _destroy: function() {
+               var opts = this.options,
+                       items = this._getFilterableItems();
+
+               if ( opts.enhanced ) {
+                       items.toggleClass( "ui-screen-hidden", opts.filterReveal );
+               } else {
+                       items.removeClass( "ui-screen-hidden" );
+               }
+       },
+
+       refresh: function() {
+               if ( this._timer ) {
+                       window.clearTimeout( this._timer );
+                       this._timer = 0;
+               }
+               this._filterItems( ( ( this._search && this._search.val() ) || "" ).toLowerCase() );
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// Create a function that will replace the _setOptions function of a widget,
+// and will pass the options on to the input of the filterable.
+var replaceSetOptions = function( self, orig ) {
+               return function( options ) {
+                       orig.call( this, options );
+                       self._syncTextInputOptions( options );
+               };
+       },
+       rDividerListItem = /(^|\s)ui-li-divider(\s|$)/,
+       origDefaultFilterCallback = $.mobile.filterable.prototype.options.filterCallback;
+
+// Override the default filter callback with one that does not hide list dividers
+$.mobile.filterable.prototype.options.filterCallback = function( index, searchValue ) {
+       return !this.className.match( rDividerListItem ) &&
+               origDefaultFilterCallback.call( this, index, searchValue );
+};
+
+$.widget( "mobile.filterable", $.mobile.filterable, {
+       options: {
+               filterPlaceholder: "Filter items...",
+               filterTheme: null
+       },
+
+       _create: function() {
+               var idx, widgetName,
+                       elem = this.element,
+                       recognizedWidgets = [ "collapsibleset", "selectmenu", "controlgroup", "listview" ],
+                       createHandlers = {};
+
+               this._super();
+
+               $.extend( this, {
+                       _widget: null
+               });
+
+               for ( idx = recognizedWidgets.length - 1 ; idx > -1 ; idx-- ) {
+                       widgetName = recognizedWidgets[ idx ];
+                       if ( $.mobile[ widgetName ] ) {
+                               if ( this._setWidget( elem.data( "mobile-" + widgetName ) ) ) {
+                                       break;
+                               } else {
+                                       createHandlers[ widgetName + "create" ] = "_handleCreate";
+                               }
+                       }
+               }
+
+               if ( !this._widget ) {
+                       this._on( elem, createHandlers );
+               }
+       },
+
+       _handleCreate: function( evt ) {
+               this._setWidget( this.element.data( "mobile-" + evt.type.substring( 0, evt.type.length - 6 ) ) );
+       },
+
+       _trigger: function( type, event, data ) {
+               if ( this._widget && this._widget.widgetFullName === "mobile-listview" &&
+                       type === "beforefilter" ) {
+
+                       // Also trigger listviewbeforefilter if this widget is also a listview
+                       this._widget._trigger( "beforefilter", event, data );
+               }
+
+               // Passing back the response enables calling preventDefault()
+               return this._super( type, event, data );
+       },
+
+       _setWidget: function( widget ) {
+               if ( !this._widget && widget ) {
+                       this._widget = widget;
+                       this._widget._setOptions = replaceSetOptions( this, this._widget._setOptions );
+               }
+
+               if ( !!this._widget ) {
+                       this._syncTextInputOptions( this._widget.options );
+                       if ( this._widget.widgetName === "listview" ) {
+                               this._widget.options.hideDividers = true;
+                               this._widget.element.listview( "refresh" );
+                       }
+               }
+
+               return !!this._widget;
+       },
+
+       _isSearchInternal: function() {
+               return ( this._search && this._search.jqmData( "ui-filterable-" + this.uuid + "-internal" ) );
+       },
+
+       _setInput: function( selector ) {
+               var opts = this.options,
+                       updatePlaceholder = true,
+                       textinputOpts = {};
+
+               if ( !selector ) {
+                       if ( this._isSearchInternal() ) {
+
+                               // Ignore the call to set a new input if the selector goes to falsy and
+                               // the current textinput is already of the internally generated variety.
+                               return;
+                       } else {
+
+                               // Generating a new textinput widget. No need to set the placeholder
+                               // further down the function.
+                               updatePlaceholder = false;
+                               selector = $( "<input " +
+                                       "data-" + $.mobile.ns + "type='search' " +
+                                       "placeholder='" + opts.filterPlaceholder + "'></input>" )
+                                       .jqmData( "ui-filterable-" + this.uuid + "-internal", true );
+                               $( "<form class='ui-filterable'></form>" )
+                                       .append( selector )
+                                       .submit( function( evt ) {
+                                               evt.preventDefault();
+                                               selector.blur();
+                                       })
+                                       .insertBefore( this.element );
+                               if ( $.mobile.textinput ) {
+                                       if ( this.options.filterTheme != null ) {
+                                               textinputOpts[ "theme" ] = opts.filterTheme;
+                                       }
+
+                                       selector.textinput( textinputOpts );
+                               }
+                       }
+               }
+
+               this._super( selector );
+
+               if ( this._isSearchInternal() && updatePlaceholder ) {
+                       this._search.attr( "placeholder", this.options.filterPlaceholder );
+               }
+       },
+
+       _setOptions: function( options ) {
+               var ret = this._super( options );
+
+               // Need to set the filterPlaceholder after having established the search input
+               if ( options.filterPlaceholder !== undefined ) {
+                       if ( this._isSearchInternal() ) {
+                               this._search.attr( "placeholder", options.filterPlaceholder );
+                       }
+               }
+
+               if ( options.filterTheme !== undefined && this._search && $.mobile.textinput ) {
+                       this._search.textinput( "option", "theme", options.filterTheme );
+               }
+
+               return ret;
+       },
+
+       // The listview implementation accompanying this filterable backcompat layer will call
+       // filterable.refresh() after it's done refreshing the listview to make sure the filterable
+       // filters out any new items added. However, when the listview refresh has been initiated by
+       // the filterable itself, then such filtering has already taken place, and calling the
+       // filterable's refresh() method will cause an infinite recursion. We stop this by setting a
+       // flag that will cause the filterable's refresh() method to short-circuit.
+       _refreshChildWidget: function() {
+               this._refreshingChildWidget = true;
+               this._superApply( arguments );
+               this._refreshingChildWidget = false;
+       },
+
+       refresh: function() {
+               if ( !this._refreshingChildWidget ) {
+                       this._superApply( arguments );
+               }
+       },
+
+       _destroy: function() {
+               if ( this._isSearchInternal() ) {
+                       this._search.remove();
+               }
+               this._super();
+       },
+
+       _syncTextInputOptions: function( options ) {
+               var idx,
+                       textinputOptions = {};
+
+               // We only sync options if the filterable's textinput is of the internally
+               // generated variety, rather than one specified by the user.
+               if ( this._isSearchInternal() && $.mobile.textinput ) {
+
+                       // Apply only the options understood by textinput
+                       for ( idx in $.mobile.textinput.prototype.options ) {
+                               if ( options[ idx ] !== undefined ) {
+                                       if ( idx === "theme" && this.options.filterTheme != null ) {
+                                               textinputOptions[ idx ] = this.options.filterTheme;
+                                       } else {
+                                               textinputOptions[ idx ] = options[ idx ];
+                                       }
+                               }
+                       }
+                       this._search.textinput( "option", textinputOptions );
+               }
+       }
+});
+
+// Instantiate a filterable on a listview that has the data-filter="true" attribute
+// This is not necessary for static content, because the auto-enhance takes care of instantiating
+// the filterable upon encountering data-filter="true". However, because of 1.3.x it is expected
+// that a listview with data-filter="true" will be filterable even if you just instantiate a
+// listview on it. The extension below ensures that this continues to happen in 1.4.x.
+$.widget( "mobile.listview", $.mobile.listview, {
+       options: {
+               filter: false
+       },
+       _create: function() {
+               if ( this.options.filter === true &&
+                               !this.element.data( "mobile-filterable" ) ) {
+                       this.element.filterable();
+               }
+               return this._super();
+       },
+
+       refresh: function() {
+               var filterable;
+
+               this._superApply( arguments );
+
+               if ( this.options.filter === true ) {
+                       filterable = this.element.data( "mobile-filterable" );
+
+                       if ( filterable ) {
+                               filterable.refresh();
+                       }
+               }
+       }
+});
+
+})( jQuery );
+
+/*!
+ * jQuery UI Tabs fadf2b312a05040436451c64bbfaf4814bc62c56
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/tabs/
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var tabId = 0,
+       rhash = /#.*$/;
+
+function getNextTabId() {
+       return ++tabId;
+}
+
+function isLocal( anchor ) {
+       return anchor.hash.length > 1 &&
+               decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
+                       decodeURIComponent( location.href.replace( rhash, "" ) );
+}
+
+$.widget( "ui.tabs", {
+       version: "fadf2b312a05040436451c64bbfaf4814bc62c56",
+       delay: 300,
+       options: {
+               active: null,
+               collapsible: false,
+               event: "click",
+               heightStyle: "content",
+               hide: null,
+               show: null,
+
+               // callbacks
+               activate: null,
+               beforeActivate: null,
+               beforeLoad: null,
+               load: null
+       },
+
+       _create: function() {
+               var that = this,
+                       options = this.options;
+
+               this.running = false;
+
+               this.element
+                       .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
+                       .toggleClass( "ui-tabs-collapsible", options.collapsible )
+                       // Prevent users from focusing disabled tabs via click
+                       .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
+                               if ( $( this ).is( ".ui-state-disabled" ) ) {
+                                       event.preventDefault();
+                               }
+                       })
+                       // support: IE <9
+                       // Preventing the default action in mousedown doesn't prevent IE
+                       // from focusing the element, so if the anchor gets focused, blur.
+                       // We don't have to worry about focusing the previously focused
+                       // element since clicking on a non-focusable element should focus
+                       // the body anyway.
+                       .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
+                               if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+                                       this.blur();
+                               }
+                       });
+
+               this._processTabs();
+               options.active = this._initialActive();
+
+               // Take disabling tabs via class attribute from HTML
+               // into account and update option properly.
+               if ( $.isArray( options.disabled ) ) {
+                       options.disabled = $.unique( options.disabled.concat(
+                               $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+                                       return that.tabs.index( li );
+                               })
+                       ) ).sort();
+               }
+
+               // check for length avoids error when initializing empty list
+               if ( this.options.active !== false && this.anchors.length ) {
+                       this.active = this._findActive( options.active );
+               } else {
+                       this.active = $();
+               }
+
+               this._refresh();
+
+               if ( this.active.length ) {
+                       this.load( options.active );
+               }
+       },
+
+       _initialActive: function() {
+               var active = this.options.active,
+                       collapsible = this.options.collapsible,
+                       locationHash = location.hash.substring( 1 );
+
+               if ( active === null ) {
+                       // check the fragment identifier in the URL
+                       if ( locationHash ) {
+                               this.tabs.each(function( i, tab ) {
+                                       if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+                                               active = i;
+                                               return false;
+                                       }
+                               });
+                       }
+
+                       // check for a tab marked active via a class
+                       if ( active === null ) {
+                               active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+                       }
+
+                       // no active tab, set to false
+                       if ( active === null || active === -1 ) {
+                               active = this.tabs.length ? 0 : false;
+                       }
+               }
+
+               // handle numbers: negative, out of range
+               if ( active !== false ) {
+                       active = this.tabs.index( this.tabs.eq( active ) );
+                       if ( active === -1 ) {
+                               active = collapsible ? false : 0;
+                       }
+               }
+
+               // don't allow collapsible: false and active: false
+               if ( !collapsible && active === false && this.anchors.length ) {
+                       active = 0;
+               }
+
+               return active;
+       },
+
+       _getCreateEventData: function() {
+               return {
+                       tab: this.active,
+                       panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+               };
+       },
+
+       _tabKeydown: function( event ) {
+               var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
+                       selectedIndex = this.tabs.index( focusedTab ),
+                       goingForward = true;
+
+               if ( this._handlePageNav( event ) ) {
+                       return;
+               }
+
+               switch ( event.keyCode ) {
+                       case $.ui.keyCode.RIGHT:
+                       case $.ui.keyCode.DOWN:
+                               selectedIndex++;
+                               break;
+                       case $.ui.keyCode.UP:
+                       case $.ui.keyCode.LEFT:
+                               goingForward = false;
+                               selectedIndex--;
+                               break;
+                       case $.ui.keyCode.END:
+                               selectedIndex = this.anchors.length - 1;
+                               break;
+                       case $.ui.keyCode.HOME:
+                               selectedIndex = 0;
+                               break;
+                       case $.ui.keyCode.SPACE:
+                               // Activate only, no collapsing
+                               event.preventDefault();
+                               clearTimeout( this.activating );
+                               this._activate( selectedIndex );
+                               return;
+                       case $.ui.keyCode.ENTER:
+                               // Toggle (cancel delayed activation, allow collapsing)
+                               event.preventDefault();
+                               clearTimeout( this.activating );
+                               // Determine if we should collapse or activate
+                               this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+                               return;
+                       default:
+                               return;
+               }
+
+               // Focus the appropriate tab, based on which key was pressed
+               event.preventDefault();
+               clearTimeout( this.activating );
+               selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+               // Navigating with control key will prevent automatic activation
+               if ( !event.ctrlKey ) {
+                       // Update aria-selected immediately so that AT think the tab is already selected.
+                       // Otherwise AT may confuse the user by stating that they need to activate the tab,
+                       // but the tab will already be activated by the time the announcement finishes.
+                       focusedTab.attr( "aria-selected", "false" );
+                       this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+                       this.activating = this._delay(function() {
+                               this.option( "active", selectedIndex );
+                       }, this.delay );
+               }
+       },
+
+       _panelKeydown: function( event ) {
+               if ( this._handlePageNav( event ) ) {
+                       return;
+               }
+
+               // Ctrl+up moves focus to the current tab
+               if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+                       event.preventDefault();
+                       this.active.focus();
+               }
+       },
+
+       // Alt+page up/down moves focus to the previous/next tab (and activates)
+       _handlePageNav: function( event ) {
+               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+                       this._activate( this._focusNextTab( this.options.active - 1, false ) );
+                       return true;
+               }
+               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+                       this._activate( this._focusNextTab( this.options.active + 1, true ) );
+                       return true;
+               }
+       },
+
+       _findNextTab: function( index, goingForward ) {
+               var lastTabIndex = this.tabs.length - 1;
+
+               function constrain() {
+                       if ( index > lastTabIndex ) {
+                               index = 0;
+                       }
+                       if ( index < 0 ) {
+                               index = lastTabIndex;
+                       }
+                       return index;
+               }
+
+               while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+                       index = goingForward ? index + 1 : index - 1;
+               }
+
+               return index;
+       },
+
+       _focusNextTab: function( index, goingForward ) {
+               index = this._findNextTab( index, goingForward );
+               this.tabs.eq( index ).focus();
+               return index;
+       },
+
+       _setOption: function( key, value ) {
+               if ( key === "active" ) {
+                       // _activate() will handle invalid values and update this.options
+                       this._activate( value );
+                       return;
+               }
+
+               if ( key === "disabled" ) {
+                       // don't use the widget factory's disabled handling
+                       this._setupDisabled( value );
+                       return;
+               }
+
+               this._super( key, value);
+
+               if ( key === "collapsible" ) {
+                       this.element.toggleClass( "ui-tabs-collapsible", value );
+                       // Setting collapsible: false while collapsed; open first panel
+                       if ( !value && this.options.active === false ) {
+                               this._activate( 0 );
+                       }
+               }
+
+               if ( key === "event" ) {
+                       this._setupEvents( value );
+               }
+
+               if ( key === "heightStyle" ) {
+                       this._setupHeightStyle( value );
+               }
+       },
+
+       _tabId: function( tab ) {
+               return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+       },
+
+       _sanitizeSelector: function( hash ) {
+               return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+       },
+
+       refresh: function() {
+               var options = this.options,
+                       lis = this.tablist.children( ":has(a[href])" );
+
+               // get disabled tabs from class attribute from HTML
+               // this will get converted to a boolean if needed in _refresh()
+               options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+                       return lis.index( tab );
+               });
+
+               this._processTabs();
+
+               // was collapsed or no tabs
+               if ( options.active === false || !this.anchors.length ) {
+                       options.active = false;
+                       this.active = $();
+               // was active, but active tab is gone
+               } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+                       // all remaining tabs are disabled
+                       if ( this.tabs.length === options.disabled.length ) {
+                               options.active = false;
+                               this.active = $();
+                       // activate previous tab
+                       } else {
+                               this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+                       }
+               // was active, active tab still exists
+               } else {
+                       // make sure active index is correct
+                       options.active = this.tabs.index( this.active );
+               }
+
+               this._refresh();
+       },
+
+       _refresh: function() {
+               this._setupDisabled( this.options.disabled );
+               this._setupEvents( this.options.event );
+               this._setupHeightStyle( this.options.heightStyle );
+
+               this.tabs.not( this.active ).attr({
+                       "aria-selected": "false",
+                       tabIndex: -1
+               });
+               this.panels.not( this._getPanelForTab( this.active ) )
+                       .hide()
+                       .attr({
+                               "aria-expanded": "false",
+                               "aria-hidden": "true"
+                       });
+
+               // Make sure one tab is in the tab order
+               if ( !this.active.length ) {
+                       this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+               } else {
+                       this.active
+                               .addClass( "ui-tabs-active ui-state-active" )
+                               .attr({
+                                       "aria-selected": "true",
+                                       tabIndex: 0
+                               });
+                       this._getPanelForTab( this.active )
+                               .show()
+                               .attr({
+                                       "aria-expanded": "true",
+                                       "aria-hidden": "false"
+                               });
+               }
+       },
+
+       _processTabs: function() {
+               var that = this;
+
+               this.tablist = this._getList()
+                       .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+                       .attr( "role", "tablist" );
+
+               this.tabs = this.tablist.find( "> li:has(a[href])" )
+                       .addClass( "ui-state-default ui-corner-top" )
+                       .attr({
+                               role: "tab",
+                               tabIndex: -1
+                       });
+
+               this.anchors = this.tabs.map(function() {
+                               return $( "a", this )[ 0 ];
+                       })
+                       .addClass( "ui-tabs-anchor" )
+                       .attr({
+                               role: "presentation",
+                               tabIndex: -1
+                       });
+
+               this.panels = $();
+
+               this.anchors.each(function( i, anchor ) {
+                       var selector, panel, panelId,
+                               anchorId = $( anchor ).uniqueId().attr( "id" ),
+                               tab = $( anchor ).closest( "li" ),
+                               originalAriaControls = tab.attr( "aria-controls" );
+
+                       // inline tab
+                       if ( isLocal( anchor ) ) {
+                               selector = anchor.hash;
+                               panel = that.element.find( that._sanitizeSelector( selector ) );
+                       // remote tab
+                       } else {
+                               panelId = that._tabId( tab );
+                               selector = "#" + panelId;
+                               panel = that.element.find( selector );
+                               if ( !panel.length ) {
+                                       panel = that._createPanel( panelId );
+                                       panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+                               }
+                               panel.attr( "aria-live", "polite" );
+                       }
+
+                       if ( panel.length) {
+                               that.panels = that.panels.add( panel );
+                       }
+                       if ( originalAriaControls ) {
+                               tab.data( "ui-tabs-aria-controls", originalAriaControls );
+                       }
+                       tab.attr({
+                               "aria-controls": selector.substring( 1 ),
+                               "aria-labelledby": anchorId
+                       });
+                       panel.attr( "aria-labelledby", anchorId );
+               });
+
+               this.panels
+                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+                       .attr( "role", "tabpanel" );
+       },
+
+       // allow overriding how to find the list for rare usage scenarios (#7715)
+       _getList: function() {
+               return this.element.find( "ol,ul" ).eq( 0 );
+       },
+
+       _createPanel: function( id ) {
+               return $( "<div>" )
+                       .attr( "id", id )
+                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+                       .data( "ui-tabs-destroy", true );
+       },
+
+       _setupDisabled: function( disabled ) {
+               if ( $.isArray( disabled ) ) {
+                       if ( !disabled.length ) {
+                               disabled = false;
+                       } else if ( disabled.length === this.anchors.length ) {
+                               disabled = true;
+                       }
+               }
+
+               // disable tabs
+               for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
+                       if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+                               $( li )
+                                       .addClass( "ui-state-disabled" )
+                                       .attr( "aria-disabled", "true" );
+                       } else {
+                               $( li )
+                                       .removeClass( "ui-state-disabled" )
+                                       .removeAttr( "aria-disabled" );
+                       }
+               }
+
+               this.options.disabled = disabled;
+       },
+
+       _setupEvents: function( event ) {
+               var events = {
+                       click: function( event ) {
+                               event.preventDefault();
+                       }
+               };
+               if ( event ) {
+                       $.each( event.split(" "), function( index, eventName ) {
+                               events[ eventName ] = "_eventHandler";
+                       });
+               }
+
+               this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+               this._on( this.anchors, events );
+               this._on( this.tabs, { keydown: "_tabKeydown" } );
+               this._on( this.panels, { keydown: "_panelKeydown" } );
+
+               this._focusable( this.tabs );
+               this._hoverable( this.tabs );
+       },
+
+       _setupHeightStyle: function( heightStyle ) {
+               var maxHeight,
+                       parent = this.element.parent();
+
+               if ( heightStyle === "fill" ) {
+                       maxHeight = parent.height();
+                       maxHeight -= this.element.outerHeight() - this.element.height();
+
+                       this.element.siblings( ":visible" ).each(function() {
+                               var elem = $( this ),
+                                       position = elem.css( "position" );
+
+                               if ( position === "absolute" || position === "fixed" ) {
+                                       return;
+                               }
+                               maxHeight -= elem.outerHeight( true );
+                       });
+
+                       this.element.children().not( this.panels ).each(function() {
+                               maxHeight -= $( this ).outerHeight( true );
+                       });
+
+                       this.panels.each(function() {
+                               $( this ).height( Math.max( 0, maxHeight -
+                                       $( this ).innerHeight() + $( this ).height() ) );
+                       })
+                       .css( "overflow", "auto" );
+               } else if ( heightStyle === "auto" ) {
+                       maxHeight = 0;
+                       this.panels.each(function() {
+                               maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+                       }).height( maxHeight );
+               }
+       },
+
+       _eventHandler: function( event ) {
+               var options = this.options,
+                       active = this.active,
+                       anchor = $( event.currentTarget ),
+                       tab = anchor.closest( "li" ),
+                       clickedIsActive = tab[ 0 ] === active[ 0 ],
+                       collapsing = clickedIsActive && options.collapsible,
+                       toShow = collapsing ? $() : this._getPanelForTab( tab ),
+                       toHide = !active.length ? $() : this._getPanelForTab( active ),
+                       eventData = {
+                               oldTab: active,
+                               oldPanel: toHide,
+                               newTab: collapsing ? $() : tab,
+                               newPanel: toShow
+                       };
+
+               event.preventDefault();
+
+               if ( tab.hasClass( "ui-state-disabled" ) ||
+                               // tab is already loading
+                               tab.hasClass( "ui-tabs-loading" ) ||
+                               // can't switch durning an animation
+                               this.running ||
+                               // click on active header, but not collapsible
+                               ( clickedIsActive && !options.collapsible ) ||
+                               // allow canceling activation
+                               ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+                       return;
+               }
+
+               options.active = collapsing ? false : this.tabs.index( tab );
+
+               this.active = clickedIsActive ? $() : tab;
+               if ( this.xhr ) {
+                       this.xhr.abort();
+               }
+
+               if ( !toHide.length && !toShow.length ) {
+                       $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+               }
+
+               if ( toShow.length ) {
+                       this.load( this.tabs.index( tab ), event );
+               }
+               this._toggle( event, eventData );
+       },
+
+       // handles show/hide for selecting tabs
+       _toggle: function( event, eventData ) {
+               var that = this,
+                       toShow = eventData.newPanel,
+                       toHide = eventData.oldPanel;
+
+               this.running = true;
+
+               function complete() {
+                       that.running = false;
+                       that._trigger( "activate", event, eventData );
+               }
+
+               function show() {
+                       eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+                       if ( toShow.length && that.options.show ) {
+                               that._show( toShow, that.options.show, complete );
+                       } else {
+                               toShow.show();
+                               complete();
+                       }
+               }
+
+               // start out by hiding, then showing, then completing
+               if ( toHide.length && this.options.hide ) {
+                       this._hide( toHide, this.options.hide, function() {
+                               eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+                               show();
+                       });
+               } else {
+                       eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+                       toHide.hide();
+                       show();
+               }
+
+               toHide.attr({
+                       "aria-expanded": "false",
+                       "aria-hidden": "true"
+               });
+               eventData.oldTab.attr( "aria-selected", "false" );
+               // If we're switching tabs, remove the old tab from the tab order.
+               // If we're opening from collapsed state, remove the previous tab from the tab order.
+               // If we're collapsing, then keep the collapsing tab in the tab order.
+               if ( toShow.length && toHide.length ) {
+                       eventData.oldTab.attr( "tabIndex", -1 );
+               } else if ( toShow.length ) {
+                       this.tabs.filter(function() {
+                               return $( this ).attr( "tabIndex" ) === 0;
+                       })
+                       .attr( "tabIndex", -1 );
+               }
+
+               toShow.attr({
+                       "aria-expanded": "true",
+                       "aria-hidden": "false"
+               });
+               eventData.newTab.attr({
+                       "aria-selected": "true",
+                       tabIndex: 0
+               });
+       },
+
+       _activate: function( index ) {
+               var anchor,
+                       active = this._findActive( index );
+
+               // trying to activate the already active panel
+               if ( active[ 0 ] === this.active[ 0 ] ) {
+                       return;
+               }
+
+               // trying to collapse, simulate a click on the current active header
+               if ( !active.length ) {
+                       active = this.active;
+               }
+
+               anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+               this._eventHandler({
+                       target: anchor,
+                       currentTarget: anchor,
+                       preventDefault: $.noop
+               });
+       },
+
+       _findActive: function( index ) {
+               return index === false ? $() : this.tabs.eq( index );
+       },
+
+       _getIndex: function( index ) {
+               // meta-function to give users option to provide a href string instead of a numerical index.
+               if ( typeof index === "string" ) {
+                       index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
+               }
+
+               return index;
+       },
+
+       _destroy: function() {
+               if ( this.xhr ) {
+                       this.xhr.abort();
+               }
+
+               this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
+
+               this.tablist
+                       .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+                       .removeAttr( "role" );
+
+               this.anchors
+                       .removeClass( "ui-tabs-anchor" )
+                       .removeAttr( "role" )
+                       .removeAttr( "tabIndex" )
+                       .removeUniqueId();
+
+               this.tabs.add( this.panels ).each(function() {
+                       if ( $.data( this, "ui-tabs-destroy" ) ) {
+                               $( this ).remove();
+                       } else {
+                               $( this )
+                                       .removeClass( "ui-state-default ui-state-active ui-state-disabled " +
+                                               "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
+                                       .removeAttr( "tabIndex" )
+                                       .removeAttr( "aria-live" )
+                                       .removeAttr( "aria-busy" )
+                                       .removeAttr( "aria-selected" )
+                                       .removeAttr( "aria-labelledby" )
+                                       .removeAttr( "aria-hidden" )
+                                       .removeAttr( "aria-expanded" )
+                                       .removeAttr( "role" );
+                       }
+               });
+
+               this.tabs.each(function() {
+                       var li = $( this ),
+                               prev = li.data( "ui-tabs-aria-controls" );
+                       if ( prev ) {
+                               li
+                                       .attr( "aria-controls", prev )
+                                       .removeData( "ui-tabs-aria-controls" );
+                       } else {
+                               li.removeAttr( "aria-controls" );
+                       }
+               });
+
+               this.panels.show();
+
+               if ( this.options.heightStyle !== "content" ) {
+                       this.panels.css( "height", "" );
+               }
+       },
+
+       enable: function( index ) {
+               var disabled = this.options.disabled;
+               if ( disabled === false ) {
+                       return;
+               }
+
+               if ( index === undefined ) {
+                       disabled = false;
+               } else {
+                       index = this._getIndex( index );
+                       if ( $.isArray( disabled ) ) {
+                               disabled = $.map( disabled, function( num ) {
+                                       return num !== index ? num : null;
+                               });
+                       } else {
+                               disabled = $.map( this.tabs, function( li, num ) {
+                                       return num !== index ? num : null;
+                               });
+                       }
+               }
+               this._setupDisabled( disabled );
+       },
+
+       disable: function( index ) {
+               var disabled = this.options.disabled;
+               if ( disabled === true ) {
+                       return;
+               }
+
+               if ( index === undefined ) {
+                       disabled = true;
+               } else {
+                       index = this._getIndex( index );
+                       if ( $.inArray( index, disabled ) !== -1 ) {
+                               return;
+                       }
+                       if ( $.isArray( disabled ) ) {
+                               disabled = $.merge( [ index ], disabled ).sort();
+                       } else {
+                               disabled = [ index ];
+                       }
+               }
+               this._setupDisabled( disabled );
+       },
+
+       load: function( index, event ) {
+               index = this._getIndex( index );
+               var that = this,
+                       tab = this.tabs.eq( index ),
+                       anchor = tab.find( ".ui-tabs-anchor" ),
+                       panel = this._getPanelForTab( tab ),
+                       eventData = {
+                               tab: tab,
+                               panel: panel
+                       };
+
+               // not remote
+               if ( isLocal( anchor[ 0 ] ) ) {
+                       return;
+               }
+
+               this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+               // support: jQuery <1.8
+               // jQuery <1.8 returns false if the request is canceled in beforeSend,
+               // but as of 1.8, $.ajax() always returns a jqXHR object.
+               if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+                       tab.addClass( "ui-tabs-loading" );
+                       panel.attr( "aria-busy", "true" );
+
+                       this.xhr
+                               .success(function( response ) {
+                                       // support: jQuery <1.8
+                                       // http://bugs.jquery.com/ticket/11778
+                                       setTimeout(function() {
+                                               panel.html( response );
+                                               that._trigger( "load", event, eventData );
+                                       }, 1 );
+                               })
+                               .complete(function( jqXHR, status ) {
+                                       // support: jQuery <1.8
+                                       // http://bugs.jquery.com/ticket/11778
+                                       setTimeout(function() {
+                                               if ( status === "abort" ) {
+                                                       that.panels.stop( false, true );
+                                               }
+
+                                               tab.removeClass( "ui-tabs-loading" );
+                                               panel.removeAttr( "aria-busy" );
+
+                                               if ( jqXHR === that.xhr ) {
+                                                       delete that.xhr;
+                                               }
+                                       }, 1 );
+                               });
+               }
+       },
+
+       _ajaxSettings: function( anchor, event, eventData ) {
+               var that = this;
+               return {
+                       url: anchor.attr( "href" ),
+                       beforeSend: function( jqXHR, settings ) {
+                               return that._trigger( "beforeLoad", event,
+                                       $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
+                       }
+               };
+       },
+
+       _getPanelForTab: function( tab ) {
+               var id = $( tab ).attr( "aria-controls" );
+               return this.element.find( this._sanitizeSelector( "#" + id ) );
+       }
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+})( jQuery );
+
+(function( $, window ) {
+
+       $.mobile.iosorientationfixEnabled = true;
+
+       // This fix addresses an iOS bug, so return early if the UA claims it's something else.
+       var ua = navigator.userAgent,
+               zoom,
+               evt, x, y, z, aig;
+       if ( !( /iPhone|iPad|iPod/.test( navigator.platform ) && /OS [1-5]_[0-9_]* like Mac OS X/i.test( ua ) && ua.indexOf( "AppleWebKit" ) > -1 ) ) {
+               $.mobile.iosorientationfixEnabled = false;
+               return;
+       }
+
+       zoom = $.mobile.zoom;
+
+       function checkTilt( e ) {
+               evt = e.originalEvent;
+               aig = evt.accelerationIncludingGravity;
+
+               x = Math.abs( aig.x );
+               y = Math.abs( aig.y );
+               z = Math.abs( aig.z );
+
+               // If portrait orientation and in one of the danger zones
+               if ( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ) {
+                               if ( zoom.enabled ) {
+                                       zoom.disable();
+                               }
+               }       else if ( !zoom.enabled ) {
+                               zoom.enable();
+               }
+       }
+
+       $.mobile.document.on( "mobileinit", function() {
+               if ( $.mobile.iosorientationfixEnabled ) {
+                       $.mobile.window
+                               .bind( "orientationchange.iosorientationfix", zoom.enable )
+                               .bind( "devicemotion.iosorientationfix", checkTilt );
+               }
+       });
+
+}( jQuery, this ));
+
+(function( $, window, undefined ) {
+       var     $html = $( "html" ),
+               $window = $.mobile.window;
+
+       //remove initial build class (only present on first pageshow)
+       function hideRenderingClass() {
+               $html.removeClass( "ui-mobile-rendering" );
+       }
+
+       // trigger mobileinit event - useful hook for configuring $.mobile settings before they're used
+       $( window.document ).trigger( "mobileinit" );
+
+       // support conditions
+       // if device support condition(s) aren't met, leave things as they are -> a basic, usable experience,
+       // otherwise, proceed with the enhancements
+       if ( !$.mobile.gradeA() ) {
+               return;
+       }
+
+       // override ajaxEnabled on platforms that have known conflicts with hash history updates
+       // or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini)
+       if ( $.mobile.ajaxBlacklist ) {
+               $.mobile.ajaxEnabled = false;
+       }
+
+       // Add mobile, initial load "rendering" classes to docEl
+       $html.addClass( "ui-mobile ui-mobile-rendering" );
+
+       // This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire,
+       // this ensures the rendering class is removed after 5 seconds, so content is visible and accessible
+       setTimeout( hideRenderingClass, 5000 );
+
+       $.extend( $.mobile, {
+               // find and enhance the pages in the dom and transition to the first page.
+               initializePage: function() {
+                       // find present pages
+                       var path = $.mobile.path,
+                               $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ),
+                               hash = path.stripHash( path.stripQueryParams(path.parseLocation().hash) ),
+                               theLocation = $.mobile.path.parseLocation(),
+                               hashPage = hash ? document.getElementById( hash ) : undefined;
+
+                       // if no pages are found, create one with body's inner html
+                       if ( !$pages.length ) {
+                               $pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 );
+                       }
+
+                       // add dialogs, set data-url attrs
+                       $pages.each(function() {
+                               var $this = $( this );
+
+                               // unless the data url is already set set it to the pathname
+                               if ( !$this[ 0 ].getAttribute( "data-" + $.mobile.ns + "url" ) ) {
+                                       $this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) ||
+                                               path.convertUrlToDataUrl( theLocation.pathname + theLocation.search ) );
+                               }
+                       });
+
+                       // define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback)
+                       $.mobile.firstPage = $pages.first();
+
+                       // define page container
+                       $.mobile.pageContainer = $.mobile.firstPage
+                               .parent()
+                               .addClass( "ui-mobile-viewport" )
+                               .pagecontainer();
+
+                       // initialize navigation events now, after mobileinit has occurred and the page container
+                       // has been created but before the rest of the library is alerted to that fact
+                       $.mobile.navreadyDeferred.resolve();
+
+                       // alert listeners that the pagecontainer has been determined for binding
+                       // to events triggered on it
+                       $window.trigger( "pagecontainercreate" );
+
+                       // cue page loading message
+                       $.mobile.loading( "show" );
+
+                       //remove initial build class (only present on first pageshow)
+                       hideRenderingClass();
+
+                       // if hashchange listening is disabled, there's no hash deeplink,
+                       // the hash is not valid (contains more than one # or does not start with #)
+                       // or there is no page with that hash, change to the first page in the DOM
+                       // Remember, however, that the hash can also be a path!
+                       if ( ! ( $.mobile.hashListeningEnabled &&
+                               $.mobile.path.isHashValid( location.hash ) &&
+                               ( $( hashPage ).is( ":jqmData(role='page')" ) ||
+                                       $.mobile.path.isPath( hash ) ||
+                                       hash === $.mobile.dialogHashKey ) ) ) {
+
+                               // make sure to set initial popstate state if it exists
+                               // so that navigation back to the initial page works properly
+                               if ( $.event.special.navigate.isPushStateEnabled() ) {
+                                       $.mobile.navigate.navigator.squash( path.parseLocation().href );
+                               }
+
+                               $.mobile.changePage( $.mobile.firstPage, {
+                                       transition: "none",
+                                       reverse: true,
+                                       changeHash: false,
+                                       fromHashChange: true
+                               });
+                       } else {
+                               // trigger hashchange or navigate to squash and record the correct
+                               // history entry for an initial hash path
+                               if ( !$.event.special.navigate.isPushStateEnabled() ) {
+                                       $window.trigger( "hashchange", [true] );
+                               } else {
+                                       // TODO figure out how to simplify this interaction with the initial history entry
+                                       // at the bottom js/navigate/navigate.js
+                                       $.mobile.navigate.history.stack = [];
+                                       $.mobile.navigate( $.mobile.path.isPath( location.hash ) ? location.hash : location.href );
+                               }
+                       }
+               }
+       });
+
+       $(function() {
+               //Run inlineSVG support test
+               $.support.inlineSVG();
+
+               // check which scrollTop value should be used by scrolling to 1 immediately at domready
+               // then check what the scroll top is. Android will report 0... others 1
+               // note that this initial scroll won't hide the address bar. It's just for the check.
+
+               // hide iOS browser chrome on load if hideUrlBar is true this is to try and do it as soon as possible
+               if ( $.mobile.hideUrlBar ) {
+                       window.scrollTo( 0, 1 );
+               }
+
+               // if defaultHomeScroll hasn't been set yet, see if scrollTop is 1
+               // it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar)
+               // so if it's 1, use 0 from now on
+               $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $.mobile.window.scrollTop() === 1 ) ? 0 : 1;
+
+               //dom-ready inits
+               if ( $.mobile.autoInitializePage ) {
+                       $.mobile.initializePage();
+               }
+
+               // window load event
+               // hide iOS browser chrome on load if hideUrlBar is true this is as fall back incase we were too early before
+               if ( $.mobile.hideUrlBar ) {
+                       $window.load( $.mobile.silentScroll );
+               }
+
+               if ( !$.support.cssPointerEvents ) {
+                       // IE and Opera don't support CSS pointer-events: none that we use to disable link-based buttons
+                       // by adding the 'ui-disabled' class to them. Using a JavaScript workaround for those browser.
+                       // https://github.com/jquery/jquery-mobile/issues/3558
+
+                       // DEPRECATED as of 1.4.0 - remove ui-disabled after 1.4.0 release
+                       // only ui-state-disabled should be present thereafter
+                       $.mobile.document.delegate( ".ui-state-disabled,.ui-disabled", "vclick",
+                               function( e ) {
+                                       e.preventDefault();
+                                       e.stopImmediatePropagation();
+                               }
+                       );
+               }
+       });
+}( jQuery, this ));
+
+
+}));