From 45fdafe6a302bc0bbca7d07045b7f8848bf4853f Mon Sep 17 00:00:00 2001 From: Marc Schwartz Date: Tue, 19 Jun 2012 18:31:16 -0400 Subject: [PATCH] Use dev-pilot url and open mhealth logo as icon. --- dashboard/assets/www/css/base.css | 81 - dashboard/assets/www/css/master.css | 97 - dashboard/assets/www/detail.html | 28 - dashboard/assets/www/img/fatigue.png | Bin 1195 -> 0 bytes dashboard/assets/www/img/focus.png | Bin 1818 -> 0 bytes dashboard/assets/www/img/fun.png | Bin 1716 -> 0 bytes dashboard/assets/www/img/gi.png | Bin 1545 -> 0 bytes dashboard/assets/www/img/line.jpg | Bin 4132 -> 0 bytes dashboard/assets/www/img/more.png | Bin 285 -> 0 bytes dashboard/assets/www/img/pain.png | Bin 907 -> 0 bytes dashboard/assets/www/img/refresh.png | Bin 1104 -> 0 bytes dashboard/assets/www/img/sleep.png | Bin 866 -> 0 bytes dashboard/assets/www/img/spinner.gif | Bin 6948 -> 0 bytes dashboard/assets/www/index.html | 55 - dashboard/assets/www/js/cordova-1.7.0.js | 4972 --------- dashboard/assets/www/js/data.js | 119 - dashboard/assets/www/js/date.format.js | 125 - dashboard/assets/www/js/jquery.1.7.1.min.js | 4 - .../css/themes/default/images/ajax-loader.gif | Bin 7825 -> 0 bytes .../css/themes/default/images/ajax-loader.png | Bin 340 -> 0 bytes .../themes/default/images/icons-18-black.png | Bin 1767 -> 0 bytes .../themes/default/images/icons-18-white.png | Bin 1806 -> 0 bytes .../themes/default/images/icons-36-black.png | Bin 3611 -> 0 bytes .../themes/default/images/icons-36-white.png | Bin 3648 -> 0 bytes .../themes/default/jquery.mobile-1.1.0.css | 2053 ---- .../default/jquery.mobile-1.1.0.min.css | 2 - .../default/jquery.mobile.structure-1.1.0.css | 946 -- .../jquery.mobile.structure-1.1.0.min.css | 2 - .../default/jquery.mobile.theme-1.1.0.css | 1167 --- .../default/jquery.mobile.theme-1.1.0.min.css | 2 - .../demos/docs/_assets/css/jqm-docs.css | 359 - .../demos/docs/_assets/images/ios_icon.png | Bin 1861 -> 0 bytes .../demos/docs/_assets/images/ios_startup.png | Bin 11371 -> 0 bytes .../demos/docs/_assets/images/jqm-sitebg.png | Bin 9698 -> 0 bytes .../demos/docs/_assets/images/jquery-logo.png | Bin 3790 -> 0 bytes .../docs/_assets/images/mobile-devices.png | Bin 54174 -> 0 bytes .../demos/docs/_assets/images/px-ccc.gif | Bin 43 -> 0 bytes .../_assets/images/themroller-mobile-logo.png | Bin 19940 -> 0 bytes .../demos/docs/_assets/images/version.png | Bin 2254 -> 0 bytes .../demos/docs/_assets/js/_viewsource.js | 42 - .../demos/docs/_assets/js/jqm-docs.js | 52 - .../demos/docs/about/accessibility.html | 70 - .../demos/docs/about/features.html | 77 - .../demos/docs/about/getting-started.html | 171 - .../demos/docs/about/index.html | 40 - .../demos/docs/about/intro.html | 70 - .../demos/docs/about/platforms.html | 108 - .../demos/docs/api/data-attributes.html | 530 - .../demos/docs/api/events-nav.html | 557 - .../demos/docs/api/events.html | 514 - .../demos/docs/api/globalconfig.html | 181 - .../demos/docs/api/index.html | 40 - .../demos/docs/api/mediahelpers.html | 133 - .../demos/docs/api/methods.html | 597 -- .../demos/docs/api/themes.html | 291 - .../demos/docs/buttons/api-buttons.html | 45 - .../demos/docs/buttons/buttons-events.html | 92 - .../demos/docs/buttons/buttons-grouped.html | 112 - .../demos/docs/buttons/buttons-icons.html | 247 - .../demos/docs/buttons/buttons-inline.html | 99 - .../demos/docs/buttons/buttons-methods.html | 98 - .../demos/docs/buttons/buttons-options.html | 153 - .../demos/docs/buttons/buttons-themes.html | 130 - .../demos/docs/buttons/buttons-types.html | 119 - .../demos/docs/buttons/index.html | 43 - .../demos/docs/config/dialogTransition.html | 44 - .../demos/docs/config/iOSFullscreen.html | 50 - .../demos/docs/config/index.html | 86 - .../demos/docs/config/jq17b1.html | 37 - .../demos/docs/config/loadingMessage.html | 43 - .../config/loadingMessageTextVisible.html | 84 - .../demos/docs/config/minScrollBack.html | 43 - .../docs/config/pageLoadErrorMessage.html | 45 - .../demos/docs/config/pageTransition.html | 43 - .../demos/docs/config/pushState.html | 44 - .../demos/docs/config/touchOverflow.html | 51 - .../demos/docs/content/api-content.html | 42 - .../content/content-collapsible-events.html | 109 - .../content/content-collapsible-methods.html | 67 - .../content/content-collapsible-options.html | 178 - .../content-collapsible-set-events.html | 89 - .../content-collapsible-set-methods.html | 80 - .../content-collapsible-set-options.html | 112 - .../docs/content/content-collapsible-set.html | 198 - .../docs/content/content-collapsible.html | 226 - .../demos/docs/content/content-grids.html | 193 - .../demos/docs/content/content-html.html | 144 - .../demos/docs/content/content-themes.html | 144 - .../demos/docs/content/index.html | 45 - .../demos/docs/forms/checkboxes/events.html | 104 - .../demos/docs/forms/checkboxes/index.html | 189 - .../demos/docs/forms/checkboxes/methods.html | 108 - .../demos/docs/forms/checkboxes/options.html | 98 - .../demos/docs/forms/docs-forms.html | 267 - .../demos/docs/forms/forms-all-compare.html | 263 - .../demos/docs/forms/forms-all-mini.html | 245 - .../demos/docs/forms/forms-all-native.html | 250 - .../demos/docs/forms/forms-all.html | 247 - .../docs/forms/forms-sample-response.php | 81 - .../docs/forms/forms-sample-selfsubmit.php | 80 - .../demos/docs/forms/forms-sample.html | 114 - .../demos/docs/forms/forms-themes.html | 408 - .../demos/docs/forms/index.html | 50 - .../docs/forms/plugin-eventsmethods.html | 73 - .../demos/docs/forms/radiobuttons/events.html | 106 - .../demos/docs/forms/radiobuttons/index.html | 225 - .../docs/forms/radiobuttons/methods.html | 108 - .../docs/forms/radiobuttons/options.html | 98 - .../demos/docs/forms/search/events.html | 103 - .../demos/docs/forms/search/index.html | 141 - .../demos/docs/forms/search/methods.html | 100 - .../demos/docs/forms/search/options.html | 113 - .../demos/docs/forms/selects/custom.html | 424 - .../demos/docs/forms/selects/events.html | 105 - .../demos/docs/forms/selects/index.html | 418 - .../demos/docs/forms/selects/methods.html | 126 - .../demos/docs/forms/selects/options.html | 173 - .../demos/docs/forms/slider/events.html | 104 - .../demos/docs/forms/slider/index.html | 179 - .../demos/docs/forms/slider/methods.html | 108 - .../demos/docs/forms/slider/options.html | 131 - .../demos/docs/forms/switch/events.html | 104 - .../demos/docs/forms/switch/index.html | 210 - .../demos/docs/forms/switch/methods.html | 108 - .../demos/docs/forms/switch/options.html | 123 - .../demos/docs/forms/textinputs/events.html | 103 - .../demos/docs/forms/textinputs/index.html | 244 - .../demos/docs/forms/textinputs/methods.html | 100 - .../demos/docs/forms/textinputs/options.html | 117 - .../jquery.mobile-1.1.0/demos/docs/index.html | 33 - .../demos/docs/lists/docs-lists.html | 177 - .../demos/docs/lists/images/album-af.jpg | Bin 10197 -> 0 bytes .../demos/docs/lists/images/album-ag.jpg | Bin 9044 -> 0 bytes .../demos/docs/lists/images/album-bb.jpg | Bin 4319 -> 0 bytes .../demos/docs/lists/images/album-bk.jpg | Bin 7671 -> 0 bytes .../demos/docs/lists/images/album-hc.jpg | Bin 12825 -> 0 bytes .../demos/docs/lists/images/album-k.jpg | Bin 4120 -> 0 bytes .../demos/docs/lists/images/album-mg.jpg | Bin 5955 -> 0 bytes .../demos/docs/lists/images/album-ok.jpg | Bin 11084 -> 0 bytes .../demos/docs/lists/images/album-p.jpg | Bin 8342 -> 0 bytes .../demos/docs/lists/images/album-rh.jpg | Bin 9336 -> 0 bytes .../demos/docs/lists/images/album-ws.jpg | Bin 5569 -> 0 bytes .../demos/docs/lists/images/album-xx.jpg | Bin 3593 -> 0 bytes .../demos/docs/lists/images/de.png | Bin 545 -> 0 bytes .../demos/docs/lists/images/fi.png | Bin 489 -> 0 bytes .../demos/docs/lists/images/gb.png | Bin 599 -> 0 bytes .../demos/docs/lists/images/gf.png | Bin 545 -> 0 bytes .../demos/docs/lists/images/sj.png | Bin 512 -> 0 bytes .../demos/docs/lists/images/us.png | Bin 609 -> 0 bytes .../demos/docs/lists/index.html | 72 - .../demos/docs/lists/lists-all-full.html | 174 - .../demos/docs/lists/lists-count.html | 83 - .../demos/docs/lists/lists-divider.html | 114 - .../demos/docs/lists/lists-events.html | 108 - .../demos/docs/lists/lists-formatting.html | 135 - .../demos/docs/lists/lists-forms-inset.html | 249 - .../demos/docs/lists/lists-forms.html | 249 - .../demos/docs/lists/lists-icons.html | 89 - .../demos/docs/lists/lists-inset.html | 175 - .../demos/docs/lists/lists-methods.html | 108 - .../demos/docs/lists/lists-nested.html | 194 - .../demos/docs/lists/lists-ol.html | 98 - .../demos/docs/lists/lists-options.html | 222 - .../demos/docs/lists/lists-performance.html | 578 - .../docs/lists/lists-readonly-inset.html | 171 - .../demos/docs/lists/lists-readonly.html | 173 - .../docs/lists/lists-search-filtertext.html | 94 - .../demos/docs/lists/lists-search-inset.html | 100 - .../lists/lists-search-with-dividers.html | 113 - .../demos/docs/lists/lists-search.html | 100 - .../docs/lists/lists-split-purchase.html | 35 - .../demos/docs/lists/lists-split.html | 147 - .../demos/docs/lists/lists-themes.html | 264 - .../demos/docs/lists/lists-thumbnails.html | 135 - .../demos/docs/lists/lists-ul.html | 100 - .../jquery.mobile-1.1.0/demos/docs/nav.html | 296 - .../demos/docs/pages/dialog-alt.html | 33 - .../demos/docs/pages/dialog-buttons.html | 33 - .../demos/docs/pages/dialog-overlay.html | 32 - .../demos/docs/pages/dialog-success.html | 31 - .../demos/docs/pages/dialog-with-select.html | 118 - .../demos/docs/pages/dialog.html | 34 - .../docs/pages/docs-links-urltest/index.html | 28 - .../docs/pages/dynamic-samples/animals.html | 27 - .../docs/pages/dynamic-samples/category.php | 150 - .../docs/pages/dynamic-samples/colors.html | 31 - .../docs/pages/dynamic-samples/index.html | 26 - .../sample-reuse-page-external.html | 121 - .../dynamic-samples/sample-reuse-page.html | 197 - .../docs/pages/dynamic-samples/vehicles.html | 27 - .../demos/docs/pages/index.html | 52 - .../demos/docs/pages/multipage-template.html | 83 - .../demos/docs/pages/page-anatomy.html | 225 - .../demos/docs/pages/page-cache.html | 125 - .../docs/pages/page-customtransitions.html | 297 - .../demos/docs/pages/page-dialogs.html | 129 - .../demos/docs/pages/page-dynamic.html | 300 - .../demos/docs/pages/page-links.html | 147 - .../demos/docs/pages/page-navmodel.html | 182 - .../demos/docs/pages/page-scripting.html | 156 - .../demos/docs/pages/page-template.html | 34 - .../demos/docs/pages/page-titles.html | 82 - .../docs/pages/page-transitions-dialog.html | 34 - .../docs/pages/page-transitions-page.html | 69 - .../demos/docs/pages/page-transitions.html | 174 - .../demos/docs/pages/pages-themes.html | 150 - .../docs/pages/pages-themes/theme-a.html | 163 - .../docs/pages/pages-themes/theme-b.html | 163 - .../docs/pages/pages-themes/theme-c.html | 163 - .../docs/pages/pages-themes/theme-d.html | 163 - .../docs/pages/pages-themes/theme-e.html | 163 - .../demos/docs/pages/phonegap.html | 115 - .../demos/docs/pages/touchoverflow.html | 127 - .../demos/docs/pages/transition-success.html | 33 - .../docs/toolbars/bars-fixed-events.html | 84 - .../docs/toolbars/bars-fixed-forms-a.html | 299 - .../docs/toolbars/bars-fixed-forms-b.html | 129 - .../docs/toolbars/bars-fixed-forms-c.html | 129 - .../docs/toolbars/bars-fixed-forms-d.html | 153 - .../docs/toolbars/bars-fixed-forms-e.html | 153 - .../docs/toolbars/bars-fixed-forms-f.html | 129 - .../docs/toolbars/bars-fixed-forms-g.html | 231 - .../docs/toolbars/bars-fixed-forms-h.html | 135 - .../demos/docs/toolbars/bars-fixed-forms.html | 45 - .../docs/toolbars/bars-fixed-methods.html | 134 - .../docs/toolbars/bars-fixed-options.html | 177 - .../demos/docs/toolbars/bars-fixed.html | 231 - .../demos/docs/toolbars/bars-fullscreen.html | 68 - .../demos/docs/toolbars/bars-themes.html | 177 - .../demos/docs/toolbars/docs-bars.html | 85 - .../demos/docs/toolbars/docs-footers.html | 153 - .../demos/docs/toolbars/docs-headers.html | 216 - .../demos/docs/toolbars/docs-navbar.html | 318 - .../demos/docs/toolbars/footer-persist-a.html | 114 - .../demos/docs/toolbars/footer-persist-b.html | 140 - .../demos/docs/toolbars/footer-persist-c.html | 121 - .../demos/docs/toolbars/footer-persist-d.html | 92 - .../docs/toolbars/glyphish-icons/09-chat2.png | Bin 3022 -> 0 bytes .../toolbars/glyphish-icons/100-coffee.png | Bin 2967 -> 0 bytes .../toolbars/glyphish-icons/18-envelope.png | Bin 2946 -> 0 bytes .../docs/toolbars/glyphish-icons/19-gear.png | Bin 3133 -> 0 bytes .../docs/toolbars/glyphish-icons/21-skull.png | Bin 3105 -> 0 bytes .../docs/toolbars/glyphish-icons/30-key.png | Bin 2972 -> 0 bytes .../toolbars/glyphish-icons/34-coffee.png | Bin 3052 -> 0 bytes .../toolbars/glyphish-icons/88-beermug.png | Bin 3080 -> 0 bytes .../Read me first - license.txt | 13 - .../demos/docs/toolbars/images/photo-run.jpeg | Bin 120968 -> 0 bytes .../demos/docs/toolbars/index.html | 45 - .../js/jquery.mobile-1.1.0/demos/index.html | 76 - .../js/jquery.mobile-1.1.0/demos/js/jquery.js | 9272 ----------------- .../demos/js/jquery.mobile-1.1.0.js | 7551 -------------- .../demos/js/jquery.mobile-1.1.0.min.js | 177 - .../images/ajax-loader.gif | Bin 7825 -> 0 bytes .../images/ajax-loader.png | Bin 340 -> 0 bytes .../images/icons-18-black.png | Bin 1767 -> 0 bytes .../images/icons-18-white.png | Bin 1806 -> 0 bytes .../images/icons-36-black.png | Bin 3611 -> 0 bytes .../images/icons-36-white.png | Bin 3648 -> 0 bytes .../jquery.mobile-1.1.0.css | 2053 ---- .../jquery.mobile-1.1.0.js | 7551 -------------- .../jquery.mobile-1.1.0.min.css | 2 - .../jquery.mobile-1.1.0.min.js | 177 - .../jquery.mobile.structure-1.1.0.css | 946 -- .../jquery.mobile.structure-1.1.0.min.css | 2 - .../jquery.mobile.theme-1.1.0.css | 1167 --- .../jquery.mobile.theme-1.1.0.min.css | 2 - dashboard/assets/www/js/main.js | 146 - dashboard/assets/www/js/ohmage.js | 185 - dashboard/assets/www/lorem.html | 28 - dashboard/assets/www/old_index.html | 202 - dashboard/res/drawable/icon.png | Bin 5800 -> 5332 bytes .../cordova/example/cordovaExample.java | 10 +- 272 files changed, 4 insertions(+), 65185 deletions(-) delete mode 100644 dashboard/assets/www/css/base.css delete mode 100644 dashboard/assets/www/css/master.css delete mode 100644 dashboard/assets/www/detail.html delete mode 100644 dashboard/assets/www/img/fatigue.png delete mode 100644 dashboard/assets/www/img/focus.png delete mode 100644 dashboard/assets/www/img/fun.png delete mode 100644 dashboard/assets/www/img/gi.png delete mode 100644 dashboard/assets/www/img/line.jpg delete mode 100644 dashboard/assets/www/img/more.png delete mode 100644 dashboard/assets/www/img/pain.png delete mode 100644 dashboard/assets/www/img/refresh.png delete mode 100644 dashboard/assets/www/img/sleep.png delete mode 100644 dashboard/assets/www/img/spinner.gif delete mode 100644 dashboard/assets/www/index.html delete mode 100644 dashboard/assets/www/js/cordova-1.7.0.js delete mode 100644 dashboard/assets/www/js/data.js delete mode 100644 dashboard/assets/www/js/date.format.js delete mode 100644 dashboard/assets/www/js/jquery.1.7.1.min.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.gif delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-18-black.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-18-white.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-36-black.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-36-white.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/css/jqm-docs.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/ios_icon.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/ios_startup.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jqm-sitebg.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jquery-logo.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/mobile-devices.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/px-ccc.gif delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/themroller-mobile-logo.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/version.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/js/_viewsource.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/js/jqm-docs.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/accessibility.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/features.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/getting-started.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/intro.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/platforms.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/data-attributes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events-nav.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/globalconfig.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/mediahelpers.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/api-buttons.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-grouped.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-icons.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-inline.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-types.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/dialogTransition.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/iOSFullscreen.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/jq17b1.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessage.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessageTextVisible.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/minScrollBack.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageLoadErrorMessage.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageTransition.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pushState.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/touchOverflow.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/api-content.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-grids.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-html.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/docs-forms.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-compare.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-mini.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-native.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-response.php delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-selfsubmit.php delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/plugin-eventsmethods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/custom.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/docs-lists.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-af.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ag.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-bb.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-bk.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-hc.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-k.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-mg.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ok.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-p.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-rh.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ws.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-xx.jpg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/de.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/fi.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gb.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gf.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/sj.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/us.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-all-full.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-count.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-divider.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-formatting.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms-inset.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-icons.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-inset.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-nested.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ol.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-performance.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly-inset.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-filtertext.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-inset.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-with-dividers.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split-purchase.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-thumbnails.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ul.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/nav.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-alt.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-buttons.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-overlay.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-success.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-with-select.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/docs-links-urltest/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/animals.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/category.php delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/colors.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page-external.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/vehicles.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/multipage-template.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-anatomy.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-cache.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-customtransitions.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dialogs.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dynamic.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-links.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-navmodel.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-scripting.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-template.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-titles.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-dialog.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-page.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-a.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-b.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-c.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-d.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-e.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/phonegap.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/touchoverflow.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/transition-success.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-events.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-a.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-b.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-c.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-d.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-e.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-f.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-g.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-h.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-methods.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-options.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fullscreen.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-themes.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-bars.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-footers.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-headers.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-navbar.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-a.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-b.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-c.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-d.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/09-chat2.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/100-coffee.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/18-envelope.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/19-gear.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/21-skull.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/30-key.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/34-coffee.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/88-beermug.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/Read me first - license.txt delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/images/photo-run.jpeg delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/index.html delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.mobile-1.1.0.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.mobile-1.1.0.min.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/ajax-loader.gif delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/ajax-loader.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/icons-18-black.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/icons-18-white.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/icons-36-black.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/images/icons-36-white.png delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile-1.1.0.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile-1.1.0.min.js delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile.structure-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile.structure-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile.theme-1.1.0.css delete mode 100644 dashboard/assets/www/js/jquery.mobile-1.1.0/jquery.mobile.theme-1.1.0.min.css delete mode 100644 dashboard/assets/www/js/main.js delete mode 100644 dashboard/assets/www/js/ohmage.js delete mode 100644 dashboard/assets/www/lorem.html delete mode 100644 dashboard/assets/www/old_index.html diff --git a/dashboard/assets/www/css/base.css b/dashboard/assets/www/css/base.css deleted file mode 100644 index 64e8922..0000000 --- a/dashboard/assets/www/css/base.css +++ /dev/null @@ -1,81 +0,0 @@ - -body{ - margin: 0; - padding: 0; - width: 1000%; - height: 100%; - background: #000; - font-family: sans-serif; -} - -td{ - text-align:center; - border-bottom: 1px black solid; - border-right: 1px #333 solid; -} - -.col tbody tr td{ - background: rgb(128, 128, 128) url('../img/more.png') bottom right no-repeat; - border-bottom: 1px #ccc solid; - border-right: 1px #ccc solid; -} - -.icons tbody tr td{ - background-color: #fff; - background-image: none; - border: 1px #ccc solid; - border-top: none; -} - -thead tr td{ - background-color: #000; - background-image: none; - color: #eee; -} - -.icons thead tr td{ - background-color: #000; -} -.loginForm{ - position:fixed; - top:0px; - left:0px; - background-color: #111; -} -.loginForm h2{ - color:white; - margin-left: 50px; -} - -.loginForm div{ - text-align: left; - padding: 0 50px; -} -.loginForm .labelWrap{ - margin-top: 20px; -} -.loginForm div label{ - color:#888; - font-weight: bold; - font-size: 14px; - text-transform: uppercase; -} -.loginForm div input{ - font-size: 32px; - border:none; -} -.loginForm div input[type=submit]{ - background-color: #888; - height:50px; - margin-top: 30px; - border-radius: 20px; - border: 1px white solid; - color:white; -} - -.spinner{ - background: url(../img/spinner.gif); - position: fixed; - width: 125px; - height: 125px; -} \ No newline at end of file diff --git a/dashboard/assets/www/css/master.css b/dashboard/assets/www/css/master.css deleted file mode 100644 index 4ddc0c0..0000000 --- a/dashboard/assets/www/css/master.css +++ /dev/null @@ -1,97 +0,0 @@ -body { - background:#fff none repeat scroll 0 0; - color:#666; - font-family:Helvetica; - font-size:72%; - line-height:1.5em; - margin:0; - padding:0; - border-top:1px solid #393939; -} - -#info{ - background:#ffa; - border: 1px solid #ffd324; - -webkit-border-radius: 5px; - border-radius: 5px; - clear:both; - margin:15px 6px 0; - width:295px; - padding:4px 0px 2px 10px; -} - -#info > h4{ - font-size:.95em; - margin:5px 0; -} - -#stage.theme{ - padding-top:3px; -} - -/* Definition List */ -#stage.theme > dl{ - padding-top:10px; - clear:both; - margin:0; - list-style-type:none; - padding-left:10px; - overflow:auto; -} - -#stage.theme > dl > dt{ - font-weight:bold; - float:left; - margin-left:5px; -} - -#stage.theme > dl > dd{ - width:45px; - float:left; - color:#a87; - font-weight:bold; -} - -/* Content Styling */ -#stage.theme > h1, #stage.theme > h2, #stage.theme > p{ - margin:1em 0 .5em 13px; -} - -#stage.theme > h1{ - color:#eee; - font-size:1.6em; - text-align:center; - margin:0; - margin-top:15px; - padding:0; -} - -#stage.theme > h2{ - clear:both; - margin:0; - padding:3px; - font-size:1em; - text-align:center; -} - -/* Stage Buttons */ -#stage.theme a.btn{ - border: 1px solid #555; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align:center; - display:block; - float:left; - background:#444; - width:150px; - color:#9ab; - font-size:1.1em; - text-decoration:none; - padding:1.2em 0; - margin:3px 0px 3px 5px; -} -#stage.theme a.btn.large{ - width:308px; - padding:1.2em 0; -} - diff --git a/dashboard/assets/www/detail.html b/dashboard/assets/www/detail.html deleted file mode 100644 index 1637403..0000000 --- a/dashboard/assets/www/detail.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - Media Example - - - -
- -
-
Today: 5/9/2012
- - - - - diff --git a/dashboard/assets/www/img/fatigue.png b/dashboard/assets/www/img/fatigue.png deleted file mode 100644 index 209d63869763dbac51dfc05c2cc2e492a9d8793f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1195 zcmV;c1XTNpP)Px#24YJ`L;&#s?*I(FXn&Glzrx*QmJ%yc6NMxe1CtROeS-=9EM?4RaLdMwK|o0|;=gUMw2 z=vDB$^$dr@7K_EQ$49f-Y&04X1VJDO5(%$mQ~6GP$v_5s$~w(a}+}*?f0*S5;LNjYiMU&x65WI-M4a#g&znp9kD-x6Ni- zT3U)kBC%MEVVI$zp^=f1*Vk8(NL1$Y`IJf}MN!#omZGS~$Hzb*@cjJj@pyDPom#C{ zsZ=77=>5{ca3~b=`~AUS(BW`k820q^q*N-kTCG$nmCNNCjYh3j!!Qh&N+k$_0)fEt z^76yOLpU7H<#M@PP9P9K5QJfvMx#+Gl|rEq!!Q&@5d>jbmSLDeq450te0Fvg4u^$8 zq1){q9v*hNTt1&~Vq$_Ii0$p|!NEZehx4O1nM~&P_V(rF#qDuU&tqS5Hx-JMJ(p@GBU*lf0ZJ`ck%hr_9> zt7~m-^?JQEH8t^gJe$qh?RFT3Z*Om#nws9u`2FcL8jTed6?JuW<>lq+bo%h{aD9Cp zK@f_foK7c-qJ=^MhG7IjxLj_jRPuN{EX&H}^4Zzh+1Xhxm&@n#TUuH^HJvm~=W;ob zNaXc;kB*K|6y4d`AxTmo5M;Ainx?f{Eso=7J}xm+%b#R33e7{>4SgU<#2`cL~}zL@_i^9K{2bI(@azdHZ`002ov JPDHLkV1mWOHk|+f diff --git a/dashboard/assets/www/img/focus.png b/dashboard/assets/www/img/focus.png deleted file mode 100644 index f7adfcfc3a82fb9137b3b15801ddde1b0409b743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1818 zcmV+#2j%#QP)Px#24YJ`L;&#s?*I#L_t(o!?l=8Pg8pr#(#Tv_d;75DlL~HDHnw_slb2`6A3kjfdmo_ zo{@2)abWx+eg+*FoEax37#tWPQ3Qeki3Az}TPRYn7fQ>e?WVN*Oimk0OUpUF?@F4q zY4+OBdYfZ3%Om}lq+45CxZQ5n*VozF+G2Ba6P->+Q&SVo z&CS%;*JHQaX=-Y^a8Bu>RVa$W#>NH<3kyt5P2qOC2?PR!!(qbVFdB^ptJR9dV!>=S z)7aR^&6_vr@9)QIwIT=tS@Mf9BNUV7>;*?hM=UNb^8WpMK7IPc($W%pdwWH}n@lFE ztE({@jhIX(?%cVFeu5r_=G`#S07u1AqPX7Y`mhpsTCvT+c|Q&4}Aq1Ws2`Fwah9=5l)+27yC;c#%}$`xX<7;SBBJbd_&+S*z^eE5JyqrvO-GCDen z)oR6NvmppVc}7kHnVFekbaa$NBEitm5Dtd}wOUOq7GrX9k~eSO@Z-l1o;-QN@bEBZ zvpFyM+}s>Cn+?C;&&0$80MDL1Ly`)uDHfRKA5$fhN#^J0+1}p9Znx9f*@;G@K@bG0 zs;cPj?#AhKVl*0w#bN~@0J^)ovDs{hqR8Cb9HXP7jE|3#OeV_%$%fD8!|ir+cz8&4 zb#=l2X0sWm(@Ae{FO7|jC6A^?qoJy*3Q-h!`}QsS`}=u^qQE0rSrkQKeSICT*NZI6 z93LMSRv?Ph*Vp56x#;QXDGB7-wQCFx4x-oV`SRrpu~>|nnwmVHh-YQVhTrdJb8{2F z-_NgKzu4W~%}X8(1_=g(BoYZsCR5pl<#ak}XlTIa^X28rvQo66rPFCV9uMJgnB(JP zK7am9JRaxXy?aztRN!{I`TqSoYiny992_7?5(5JR=Ym*WUFG%b*DNe7aCCIU#>NJn zot;!vRFv+l(P$K}*Na}S$7ZvkC<^1_)RS}pJ1z2oD@kGT^i%Q7mJ3Zv0j zb|_{t83aKfolXOgNF+$5Ql)3j@$oTBOG^X-0h*heX=rFbr_*6H8VlNbI-MpSk260% zPa=^ZnM`80+Zh@fA`}WSHa3RYY{uj9aCmr_yUu7d=GuJ$kZe`aXq2g`DFT52q9`&w zJ&jteW@l#yl}eSXD$8Op7-Vd0jERW}1VNy;x0kxQI%2UHuU@@Ek|bnVW^;2hcc06b zFH>1rnWuzwdcdVpDSrO^$;`|Q`}_MuA`w#larG?5T{v*L?T2Y5lki%vMdvg zM$zl_^!E0$yu6Ix?z6X=!12c$n+guNTNt0K{Uk;BvX>@9(F+z8;lIbzvZ>REkh2#M;^#zkmNG zl}Zr~hgn-&L!;5)a=EyF|9+lH^Q1X#*7o*xo<4n=lP44k6*cI2vAes=?CdNCgMpfw z8ay5kJ3BkrY&Hf52Wf9_KmS2m`6n`&jG`!tl1`@;pU{uR{KZ$OeT{7K&4XU6?Pt&qNN)Q20A)Auv)Euv{ap5MY6xoD^4u7MyS? zM@L8QsQte~I`6@#tE-FKw{Nqzx5x7GGO{e^^@@Mn@c#3rr_Px#24YJ`L;&#s?*Iu%dKmA=;W$Ol@2kUomml7#}e) zG4UU8<<=D|{{o{;v`b7(W75{pm5)%mkTjYa9;LJ(3>0KcdCUyM4D00EZGUGq zbMKw`?m726=X@7dRTcWnz#t66&{0fP)qj109`Y9yMHP$1YPHI;tRzVWgTZ34;5beY zgwbd`@N@WYZ#p+ssZ`SGbfHjaG#aX^>h*e~(TE_3D2hDK%d%`TnXFbTK@cvNOQ+NQ zD-wUebgoboC6~*k)9HG>uGj1P`}@siGlpRphM_1b2m(#hEX#5n$1n_vqE4sN0RxLhum%Y~w77t$XvFbvDG zTrQU*kw`Qe#c}-d<;y2doH)$k34#!bL~^;@rAwDCT)3bG5FjCbzrWLuQmORj&6^i5 zUPK}hilR^ywcG6&h8+llq9}%8;cz$*2uw{)*=#lhL0}jLNQmF>Z~FzqjYi|+$B(aG zy^6(RySuxkQYn>6#pCg6wd!;_&1Q3Nr2hVXmStyWXUpaC#fulMR;%`B#P9dRFbrIY zMx%j1V0Cqs<2VR{L{Y3(tNDC>dwZLrs8gp-*=)80eR}`?eJYh28X7u%`ZU-X48wie zihMpF3N~KaT800u^W@hI4_3IXkWnY-SzCOKP55w@cZ{L=dmRv5E*X!Mb z+1c3%hr@|PLQ#|+#9dxq&gb(KMcuxA+ith-yCFdk0LK;<7N)1Cy~zazkc0`B+D|`y9PtkbgfovQ-I^RMx!A~ z(vi9g&-3f+>$9`7f*|;OzGkx-jYikj*1#-+AO?fMU@$bB%{`_awSxg`wOVUyYYfA9 zz20WCSt^xwcXuHOGMmj)Q&VTooIwx-6gL!tAd|_Y*Xt1kIjTc|!P+?kGZ+lFZr!?f z@80O>Xd;mSO%DYQIvfs%!%?YJ09g+Mpp__9RXdxO#bSB(?3vkYrfC{QQ9$~3(0o3h zD2lmUE}zfW>-AQvC5oaf%j$0f8IB+b`rE)W48yfrjbRuqua6x&HZU-ts%o)VR1^ir z@jaO1$B*BOCKHb14u|9TZ^Ln1lBAa}UoI{# zf>W_ttv7Dm0NW}Q3Mh&a1hEHm?%cUAU%o&PDI^zkgrLp|PM%o+WH^N-rCx#R4PDc&CSh)!{JCIGC4UpF)`7u+}cvN z+ikPiNRm8i4u!+vm6a8chRtSkb#?X0lP4I4jg5_=DB7k^CnF~&CJ2HEg+fO{nxCI9 zm&@9#PNzG2_UzrecfqN2djmnx;NYOw>+S37d-v|$A(29%(8|gR%d%QBc|4w{PoHXn zZGQo!C`!FvPo+{jJ39nHjEs!@3xMOeg@uK=xw%9l0Xhhd<9F`ddGzSf^z<}fgeIW6 zRVNr_S+-Cpq|<4h=ZA-fJsuB&Alfp9Vb<5zKYaM``Sa&wG6@)T_3G6J4<3Nz1B>^U zgI&T?mgQ_VOOj-*R%^9dJkK)>!*N`-TK)O+=f=iHJRWCRc6fN0Ac*tl&(F-vT)TEn zQ*>QQx?8GuO$&mM$z(P*HZqyaj~_our4q}sf*`1>YBrmJZXO>W_xXGTL1>!x0IA;N zek03rrBcb|aty;rl7wN{$jFG(={)4EXn&aA*P?yLd)%QQ2>K6Gki#)RGYS&`0000< KMNUMnLSTYQ%_|fD diff --git a/dashboard/assets/www/img/gi.png b/dashboard/assets/www/img/gi.png deleted file mode 100644 index 176e253adcf2a8240eeeba7054215d44cdc5894c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545 zcmV+k2KM=hP)Px#24YJ`L;&#s?*IQ#coK*?fwLt}#Mi((qILQH2;*<&+CGkfMa7oD+V zcJl27>0I=O&4#u2diHNW>%X40_ST4q@GsCG{7dv3(S|ShzJuC6Zm{SK7am9e0)3`Hf&(WjvYLF_>e##z|_QW6@C=1b7O&fk;?M1-lSDZ0D6dGX=}O-)TyS6BZWNK7u5 zi{9Q|dU|@;yLT^*jg1%#24Z0}8Vw5z3j~8fqS5GbQ|ffM-ENwjn^9Gj_V#uvDk^>+ zB&Lpz4*L81vD@wJ+_{rbD8&5yJmGMdv9U1%fdE-qS3g@At@m)Nz8j0}p4i*Y)gUqNo(yh&eQUsr6pnaySr6BCImU zdU_gFRjIA5W&Qf~Sglsxzkkp4^fXqh6{FGkLzq}wC=|kCv3&7JTU#5Qot>1Gm64vF zj;gBE)zy)no{rIIM61=VnC8jJNqjyZe!m}8RVgSaASWm1yCAW)Kp;R(O$`o*1I@s| zfK*pkbK$}T4jw#+q9}}xj-uD=$HadB~&&1T-bd4t2@;NHD^WM^lSnVGpFgovQk zYDr5=!(=jX|Neb8Z{ED*C1QQMy1MA??d8;|Q`l^_oIfTfCn+f@SrRBUHI-;IN=ix! zUayzKhY!=-+`Oz9(?~cr>siP!5D zpU)>gpHE)Cd@0+uZ4;Z#CO2-}kku3-B11z%qSb1pv$Jy%B6dtnOh{8xlK=upWo4y2 zd-iN~Ktx2YT)83!gFzY_8)bBKRHmk;7GXw5M zrKP1shK7d3>2ykQaq%LA-ELpKq4`!VEiF=BUM^*2Wn!^d1Q3hGBInPaUp0^XaP=J+ v7{KLnVYOO0e*E~Ve(7m`{|)#JvV#5uW!eB;t`vdK00000NkvXXu0mjfSSjHV diff --git a/dashboard/assets/www/img/line.jpg b/dashboard/assets/www/img/line.jpg deleted file mode 100644 index bd03f2ba97c5b3bbc086e52074b5b0f17ccc84e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4132 zcmdUyXH-+!7J$#aX+RQ4qlFeA5Q=mH0i@SZqzZzCk^~4P#1KHNs0<_Eh@v8biXft( z1C9lhu^{50BZGnk`+z(Yl+joa6~?@qah5u7tyk7t@6X$Jt&=bN?0xpWd!L(oBEKyk z2BhEsZUBH_0QkrSnBfRRCoY4)E__)0ED1Wp(qC? z0gx?{N}>XN7z^SP7`T1_17&~(b^s*va>ZfM0WruLfa~we$VH44{HGvmyuF3QK;*hr zPy~bVr~W_vAoIi$DF9Fe;^4p+GFI$N4JA`T3g5+EP z&;*5ED&VCfY>O~K5)rB)Hiyv$??pW&O6Elw5{BHjAqo)unzqNptcDYBEDi<6U;y){z)&+;!PKU@84 zQ1teb#p}pFdIo9qebIgK{i4fh0Dv=v)MoP+UCK@XI=%rw>+TmFb1wjD#Q?Nl{px-+ z6#FGzDiyoh*c22LSPKO_Yehjn%fB`FZ28aOt9aImc%N&>@Drpa=VeJ5ilXvzvU2hy zj9hUtPr$JH$4&fSJARecS9#2d5~K25nm`3=7<n9Mc=BoABaF=dG5%$M zE0C{nt}uAd<7%Vgkrz|6`%%aKpXj`F$QM93fKc@;0C;aKL`flAO^&P zC4dLgK{k+p0t2uKnC7| z83=-K5D}t6+K>Tc0$D=#5C`&r{Gm`N3W|r4pfpGXG}8!PRgBd>C$r&%;;X zoA5CF44y&(6dt94GDKOSI4ECKI4S{^ijtsKqsmZKs0LIksuR_Vx{ew~O`_hTv1lrq zfwn@sp@Y!#(LD50^lJ1*bPf6-x*gqvzK$M2%g`S&M2s%R661>DVisW1Fa?+rOckaH za{_Y_a}zU$d5gtjHLxtKGd2htkIlfYz;49u#=X`%)5cli+;QQ!WSkUN zg4>BZj5~)L#Es$JDdCk2lhm9Hv~DbJ{oRah$SDlsYz z-xDYV3xY3U5h0JTiEx0>MYuzFO(YUciC)A6qLjFa*i5`Yd`Nt!N>#O1<*M>k*QnO2 zwyO@RK37v#Gg0$aTcWmHtxD~f+Euklk}}DZttQoyPLYO4Q)DXHjvP+TCT}FS zkS~+RDL9HL#h=2b6jSz5E>K3PD5^2lm&&8Ar#4bAQpadm8jHrIWzfoL-_!bOGIff& zqk63RGWA;ZGwQ<{C=F8$u11zdg~m~hTN)oU^)$UT1)8Ort(t?H(^@)OURnaJGOaeP zn_3^V8QT8Znc7>lJG39r(R2%XB)x#XhklVhsYBCo)8Xlq=^WL$s|)K|=tk+T(A}ro zr#q#muNSB%*4wFfL2puDL*Gk3Lw}q8S^WtEs)2`r&|sUvIfJJRb%r-1i&4$!VaN=1 z4TB8x4C@X14QGs4M)Qr<8MPTbFjg_<7^fOT*_O*>4-Sz0VEYdPx>>%JM$%+qYCS%cXPbF4YXJkxx)`85mJf^Cs*QEPG4 z61H@*6k6`K9GHWd<1$Ayr(w>J6~W5eD&Ojm)rhr*b*S|^>kjMZHcXoYn=LlIHXm)- zwpq4~w)gBPcENV*>^kjU*<0B2>}&0BI1n8I9M(9Tba?4#=_qjA<9M4*Wrwl9Wp}fG zcXD=;IJG)WI5VA-oOd}7acG_9o@JRC5>oM$U=$Y)<;Q7eQ*o*JgU4AIPK)*7-et(MpeE%B%hXF3M*J9w zjf{w_jeHzs7qv2~H<}uq7~K;6HpVBWBIe$Fv-x@RyJOX27sWQmPRIGhRmKf3uvxHb z!IgM=yfFS`0xlsop($Z%q5s0|3&$3*7nLl!wV1Vd+2YGf=u5JeoJmwmOinzOgh`4^ zYDt<+4o_}Ko=V}S>`IaGe0e)~&-h;aZTty=yP#6=B-K5&GIc!7J#A~+M7n2sRr;jR zS6Cx_nGuvxmoc3go_Qcso)wqXmaUYXlzmD>5oL;ca`bbSdQ0B`zCKB-y^>^|6M_B!LeoJWuj$$g%*XSg-@0TEZ@HZy@I!* zd!^yZwJS$fd9SKp4XsXD-Mz+mP4SwsqQIhqYgN`}uKi`5?Yhc!Z`Q}H?=03UE-D`V zCh(g>C8{NolA&+izOCDU-XPr2U+Pf0v-D#bzwGC7+w!XN*^Ru7KYwTUUG;bJO{tsu zE1W9!Y{qUDZN9a|bIZX>a^>>M(XC-y+qW^cm2G>oJ#qWxD#xn29V$EWb_`dCR-fF- z+_`z@Y)yL2&03$@wq3frN_S1~=IO`?@zW`wbr+3 zw3QzLNAiw5{UPaxTSr5Vb|2#$YdvmqeAfx;iL!R6y|7)@k=`+UGXCViso+!Hoo<~c zezgAaz-hzNwP)1NRGd{gTYOf2Zuz;XE^*i7`Ly$+-HF}zE-bikqbIVb|6<6+OFsqt zbfMR~_uM7-OQ$cpUOx3R=jVJX-s`J&8*Icf34$K`mJLoxh z{<`1wpKfq(T)8>#=D@A_w{8zD8XCUMzde2@>(0x&`FCgT72U_&FMB|GQ1wvvVZ*QH zzqSoK4WAkD8|ix#{pj8(Z}i#Ua{o3vR{WUwxax_)ljd>z@zWCl6W5+Dd^+|_{A^~j z#*V?ZSym5TfJryza@NM?nnd!23+V2j&=e+Oz z5clE9Ou;N}w)%JT-#b5se7rBumdoYOfvPt@Cq)4GUC3DglHUWxfP}n12zU~KK+;qr zs%h%bNF-XzJ@5o3Kob^=)h%9Bgd7{wfezO$~V+s8cBFG%|A0X&M?d zx+$HmOQ)OK8tWrsY-?%FVzI0(*=$=|Hrva~^Xnz#U4X2F97F6;kP(2%5Q+@Rdq5U) zjzKB@`g{=#8jFMeL8q7{0T@wZuvi%N$rwTajUn4n>>Z*Fy(6R6J0-78p*pf<5?b+g z@?X|eILPk;0t!MxqsYJ${E#GD#uZn;7xdmeU6F}*J8pN(!7+o&Y!k9aou~v8@f@on zg47_@)8JVEMHoQu!X;sjyAs30gl{7K28`{^Q}$MRF)PjN2%XHrg||l|Hte9Zw0s8_ zO#%=ToLmRej(X)o1s>~fWF&h3uYx()$PRxXf0Tnsu?=hgvGo&o{O#_Cn@uly-v2_y z%<7#|3P)FH)>s?Fc2%tzGO3!s{pR9zB@7S*P$9Cd!M3-MBcN6NwT$JN;SFV`rP^CU z)X|j?bBlLr>SdSOS1Y)uYNMaBeVVjo*cD7%l4kC>d%*rTIwDwW6OJBiZaPSux4!Ab zWx;kqUR+ZB20#H|aF#i^kzJ(Pg-@5#_tab;ZzydD;748bW)^Xo5orrwJoXrSc<q`s{uq|w`{}vQrFC1cKAQWY?U$Da x-$Z(6AD!iRuDLQVkX0->TVc~(eE^`bNJG!_g%+y@EL|!ZE W_ivWIlQ)5GVDNPHb6Mw<&;$V2hhPQ( diff --git a/dashboard/assets/www/img/pain.png b/dashboard/assets/www/img/pain.png deleted file mode 100644 index dbfd26ccda3a245827f28dfbf74520765083f960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmV;619bd}P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01sgR01sgSs6VG^00007bV*G`2iyh= z5-%PG*mgw#00Rq2L_t(Y$JLk5ODa(m$GhW9*AcyzWoku14M=2!NSgu|BG|@S4!Egy zEs9q44+t(om$_D%}2qA((O{VEij`J4s*;SAj@*c_Zy+PN5${f7?aIrudc2XNV0Zzc6JsDgE6 za#E>Oz6Db#6e5v`&1PF#T9PD5am-gS4-XG4%l7v64h#(3-QCq2);^|Esa#)Q`~7}| zkilSxMx%;yeF;-8mlKJ^)YKGB(-6WyAb>G$FuolO#&~aUZ+v{5BuRoG`uh5gj*c2n z>1b7`TrRh@wKXy_LJ$N1z+^J5tgMKls2N6*q}$uu#l=O3!vO#Q08kX=a=C79Zko65o15$I?gl^2YPCkA(R!P>Wempn`1siC_0lw5V;BsEP$=~F_NK-I*)&Y$ z^LdWrHa9oZ>9izCwRWS?$S{m3iltHsLP${*0HB@|&>#`WvYg3ewzszr4-d21>>s@d zA&MKQ2cDvo{^{%b0c|4v5TcCyGna}6L;jrCq2LM!8!teL*@9!6jMa_<9sZ@%^V#CA3 z006ySKRPR9g%JcH9*;YnPLd?My1Hg(XAcezK0ZFwE774QTwY#YPEJnJ zG|e!~`uh6Q(^IQKy*VbCOioWvBZTJX=Q)lmm&0>NB5Ibp9nAgx zeJ~hgS@z=MqCo;yV|9<`SUV_8BKNL8~fG`ERNc>2x}+ hieB))-U$9B<_Cgshw{)%B>MmW002ovPDHLkV1iYRlPLfI diff --git a/dashboard/assets/www/img/refresh.png b/dashboard/assets/www/img/refresh.png deleted file mode 100644 index 2903dc989ca85e6ccf5cbc9901ce0b5e4ad9ba30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmV-W1h4yvP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iyh` z0|hE-M=)dn00YoTL_t(o!>w0cOEO&)U1yv^{FpOoWR!MOJxUfxWPuf3L{Jh@H_;EQ z+qwu!EeeBzk|-jAOt2}HCQ!$Zv5U%iFCMDLnwh3I7kHtw&socT_Fnr80ieJDY&ILb zUN3rkd*N_6RAXdWMmn9w)zuY>#Ud0%duyKOAxRR*cLLhm+c7yg375--pFoyn#N%;f zG8xqC^@eAmPzW5yAsUTp3utX^MJN=4&*#H$Ac`V(c6Ly$RsjGL6B8I59K_w-9k#c( z)df&Wv9z=Vv)PPhfDnR>jScvGzV|;Q2m&IJ2-wfT4u=CPD=S~p_8TaQg2lzfFTVi* z^SRKPO|B;jz()pHmc{)1ydiRiVUWpWP%4$6C<<&g8$2El2qFJZ03ifJLqp(sUU!is zNjNw-KrWY4eeQ5LFg`wx?(XiN2{4<@7#kbYU2t@Cgo}#{-Izk5fX&TK{Q2_-)6>(s zKF}awWMo8lFw|D*ClTdz%UH_e!phm>FKFqazY5g;V?WNkMSdLyWN^W zl}ZJPM8Xic$z;OZ+#K}w`z%0F6fk{#eVRchCntu}?smJOC<`^ z+!z)h2m%B_XjpHtSU@QS$8n&Pg6DZ~9EY~HHatB&{S{!fT2(iEczF1=(a5q4S(Y{1 zw!w(hTB=!?nwo;&??SUb;1IG*XzZ=z`&P)QmOR*DVNJAl}eB#3Ds)V@WkXe4i<|=)fq)m{1`@Rpp=4A z`ehQvVll(+I6OS8Y0H8j{Jjqt9it4xAQFifCg*uxHM4I>CX@OZ_)NaFwT0W;Tf<_* z;jrdWNs@$Gtp=75@~r?u2%^!bVe*!i7A!0*fa5sLn8U-vk0Sg|fTAb}27@RTi{BcQ z+wI2e>?~MT)8kMq7Lmgp=W54l_p`}_N-R4Upn4nPS8gSfuFekcEIC|zA$7#$r&M@NSt;&eKVL?U76PVpb% WzpNfBRHH2b0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01sgR01sgSs6VG^00007bV*G`2iyh= z5-vAgao=bF00QDkL_t(o!|j(nNGnYghM(Q6!GvVNpGb^^7^5VGC`8as5rSA*3sx2u z7TVZY*lA~{U?Fx!Stm~S&-39sb-5>51!zC|Fa~Ot) znfJVhk%SO}I*?4Ar~y*9Ac|#KY;SL)>pEj&W290kWcdsDPEJllFc=hmzh9(MDPh~T z_zEeeX<`@#mSs^cm-(u0mg^)&>d36MiiTluc6P@5`#Xt5f}WlpTrSs74|5y`%d(JV z8MoVwqA35nSJN~Kg#xXutqctf)dtDu^Q^6{q3b%`-QCR1&5=r_Xm4)^KnTIZ!vm#K ziRi%kld9iY&`0ih{@EVRUqqKp;RY79$>yqbLg1YL)f%bxu!D@%#O3 zZEbx7d3<~XKvh*Ll?ugTk;}_VN~IFHT#n`CWmHuqlgW@yrzsYT=(>(+nmj*0W83z3 zvrCc$z`?-*ZEbBtA`vDgCRkcp0^t1ooQsPK01AZy?CmA1Rz48kT^Oz68U^yOifLRrluwV{ML#@BBEF<3ez-2GMW5d-`Uv_A8w>l zsj#}b%I4-KGcz-Eb#;-=X1Tq+MO9V8;V`PIGBPrPBuUt|{p(#J%k=g25eNioM#O(S zlF4LPSy^Frc9zc0P9`TOF$@Er&xhOX#FE2j^d3t(c zcXyX;HcKLrprxhduSWjf-X4zQpzHe2+qYV+qG=kMrhQ$GghC;FKHsMfKEp65m&?4p zz10ShB#G(iX~xIL@p`?V26A|KNIIS7?(VKOh^ng0&(G7_+xw}{(9zMs@$vCT5Jge& zdcC+@E(Qh$h(scv?uS?`Ml>4b>goz11d5`d#N%-m78YihwZyk`lq6jvdk^lez07*qoM6N<$g20K0P5=M^ diff --git a/dashboard/assets/www/img/spinner.gif b/dashboard/assets/www/img/spinner.gif deleted file mode 100644 index fbd01055f99ae03270f7878bab918702dc7683d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6948 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 F`5*iY2gU#Z diff --git a/dashboard/assets/www/index.html b/dashboard/assets/www/index.html deleted file mode 100644 index b5fb6c8..0000000 --- a/dashboard/assets/www/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/cordova-1.7.0.js b/dashboard/assets/www/js/cordova-1.7.0.js deleted file mode 100644 index abd2a0d..0000000 --- a/dashboard/assets/www/js/cordova-1.7.0.js +++ /dev/null @@ -1,4972 +0,0 @@ -// commit 1c9ac3578a369dcb35b168c3e2d7ce2e89d45d12 - -// File generated at :: Tue May 01 2012 13:42:28 GMT-0700 (PDT) - -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ - -;(function() { - -// file: lib/scripts/require.js -var require, - define; - -(function () { - var modules = {}; - - function build(module) { - var factory = module.factory; - module.exports = {}; - delete module.factory; - factory(require, module.exports, module); - return module.exports; - } - - require = function (id) { - if (!modules[id]) { - throw "module " + id + " not found"; - } - return modules[id].factory ? build(modules[id]) : modules[id].exports; - }; - - define = function (id, factory) { - if (modules[id]) { - throw "module " + id + " already defined"; - } - - modules[id] = { - id: id, - factory: factory - }; - }; - - define.remove = function (id) { - delete modules[id]; - }; - -})(); - -//Export for use in node -if (typeof module === "object" && typeof require === "function") { - module.exports.require = require; - module.exports.define = define; -} -// file: lib/cordova.js -define("cordova", function(require, exports, module) { -var channel = require('cordova/channel'); - -/** - * Listen for DOMContentLoaded and notify our channel subscribers. - */ -document.addEventListener('DOMContentLoaded', function() { - channel.onDOMContentLoaded.fire(); -}, false); -if (document.readyState == 'complete') { - channel.onDOMContentLoaded.fire(); -} - -/** - * Intercept calls to addEventListener + removeEventListener and handle deviceready, - * resume, and pause events. - */ -var m_document_addEventListener = document.addEventListener; -var m_document_removeEventListener = document.removeEventListener; -var m_window_addEventListener = window.addEventListener; -var m_window_removeEventListener = window.removeEventListener; - -/** - * Houses custom event handlers to intercept on document + window event listeners. - */ -var documentEventHandlers = {}, - windowEventHandlers = {}; - -document.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (e == 'deviceready') { - channel.onDeviceReady.subscribeOnce(handler); - } else if (e == 'resume') { - channel.onResume.subscribe(handler); - // if subscribing listener after event has already fired, invoke the handler - if (channel.onResume.fired && typeof handler == 'function') { - handler(); - } - } else if (e == 'pause') { - channel.onPause.subscribe(handler); - } else if (typeof documentEventHandlers[e] != 'undefined') { - documentEventHandlers[e].subscribe(handler); - } else { - m_document_addEventListener.call(document, evt, handler, capture); - } -}; - -window.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (typeof windowEventHandlers[e] != 'undefined') { - windowEventHandlers[e].subscribe(handler); - } else { - m_window_addEventListener.call(window, evt, handler, capture); - } -}; - -document.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // Check for pause/resume events first. - if (e == 'resume') { - channel.onResume.unsubscribe(handler); - } else if (e == 'pause') { - channel.onPause.unsubscribe(handler); - // If unsubcribing from an event that is handled by a plugin - } else if (typeof documentEventHandlers[e] != "undefined") { - documentEventHandlers[e].unsubscribe(handler); - } else { - m_document_removeEventListener.call(document, evt, handler, capture); - } -}; - -window.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // If unsubcribing from an event that is handled by a plugin - if (typeof windowEventHandlers[e] != "undefined") { - windowEventHandlers[e].unsubscribe(handler); - } else { - m_window_removeEventListener.call(window, evt, handler, capture); - } -}; - -function createEvent(type, data) { - var event = document.createEvent('Events'); - event.initEvent(type, false, false); - if (data) { - for (var i in data) { - if (data.hasOwnProperty(i)) { - event[i] = data[i]; - } - } - } - return event; -} - -if(typeof window.console === "undefined") { - window.console = { - log:function(){} - }; -} - -var cordova = { - define:define, - require:require, - /** - * Methods to add/remove your own addEventListener hijacking on document + window. - */ - addWindowEventHandler:function(event, opts) { - return (windowEventHandlers[event] = channel.create(event, opts)); - }, - addDocumentEventHandler:function(event, opts) { - return (documentEventHandlers[event] = channel.create(event, opts)); - }, - removeWindowEventHandler:function(event) { - delete windowEventHandlers[event]; - }, - removeDocumentEventHandler:function(event) { - delete documentEventHandlers[event]; - }, - /** - * Retreive original event handlers that were replaced by Cordova - * - * @return object - */ - getOriginalHandlers: function() { - return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, - 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; - }, - /** - * Method to fire event from native code - */ - fireDocumentEvent: function(type, data) { - var evt = createEvent(type, data); - if (typeof documentEventHandlers[type] != 'undefined') { - documentEventHandlers[type].fire(evt); - } else { - document.dispatchEvent(evt); - } - }, - fireWindowEvent: function(type, data) { - var evt = createEvent(type,data); - if (typeof windowEventHandlers[type] != 'undefined') { - windowEventHandlers[type].fire(evt); - } else { - window.dispatchEvent(evt); - } - }, - // TODO: this is Android only; think about how to do this better - shuttingDown:false, - UsePolling:false, - // END TODO - - // TODO: iOS only - // This queue holds the currently executing command and all pending - // commands executed with cordova.exec(). - commandQueue:[], - // Indicates if we're currently in the middle of flushing the command - // queue on the native side. - commandQueueFlushing:false, - // END TODO - /** - * Plugin callback mechanism. - */ - callbackId: 0, - callbacks: {}, - callbackStatus: { - NO_RESULT: 0, - OK: 1, - CLASS_NOT_FOUND_EXCEPTION: 2, - ILLEGAL_ACCESS_EXCEPTION: 3, - INSTANTIATION_EXCEPTION: 4, - MALFORMED_URL_EXCEPTION: 5, - IO_EXCEPTION: 6, - INVALID_ACTION: 7, - JSON_EXCEPTION: 8, - ERROR: 9 - }, - - /** - * Called by native code when returning successful result from an action. - * - * @param callbackId - * @param args - */ - callbackSuccess: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - - // If result is to be sent to callback - if (args.status == cordova.callbackStatus.OK) { - try { - if (cordova.callbacks[callbackId].success) { - cordova.callbacks[callbackId].success(args.message); - } - } - catch (e) { - console.log("Error in success callback: "+callbackId+" = "+e); - } - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - - /** - * Called by native code when returning error result from an action. - * - * @param callbackId - * @param args - */ - callbackError: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - try { - if (cordova.callbacks[callbackId].fail) { - cordova.callbacks[callbackId].fail(args.message); - } - } - catch (e) { - console.log("Error in error callback: "+callbackId+" = "+e); - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - // TODO: remove in 2.0. - addPlugin: function(name, obj) { - console.log("[DEPRECATION NOTICE] window.addPlugin and window.plugins will be removed in version 2.0."); - if (!window.plugins[name]) { - window.plugins[name] = obj; - } - else { - console.log("Error: Plugin "+name+" already exists."); - } - }, - - addConstructor: function(func) { - channel.onCordovaReady.subscribeOnce(function() { - try { - func(); - } catch(e) { - console.log("Failed to run constructor: " + e); - } - }); - } -}; - -// Adds deprecation warnings to functions of an object (but only logs a message once) -function deprecateFunctions(obj, objLabel) { - var newObj = {}; - var logHash = {}; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (typeof obj[i] == 'function') { - newObj[i] = (function(prop){ - var oldFunk = obj[prop]; - var funkId = objLabel + '_' + prop; - return function() { - if (!logHash[funkId]) { - console.log('[DEPRECATION NOTICE] The "' + objLabel + '" global will be removed in version 2.0, please use lowercase "cordova".'); - logHash[funkId] = true; - } - oldFunk.apply(obj, arguments); - }; - })(i); - } else { - newObj[i] = (function(prop) { return obj[prop]; })(i); - } - } - } - return newObj; -} - -/** - * Legacy variable for plugin support - * TODO: remove in 2.0. - */ -if (!window.PhoneGap) { - window.PhoneGap = cordova; -} -if (!window.Cordova) { - window.Cordova = cordova; -} - -/** - * Plugins object - * TODO: remove in 2.0. - */ -if (!window.plugins) { - window.plugins = {}; -} - -module.exports = cordova; - -}); - -// file: lib/common/builder.js -define("cordova/builder", function(require, exports, module) { -var utils = require('cordova/utils'); - -function each(objects, func, context) { - for (var prop in objects) { - if (objects.hasOwnProperty(prop)) { - func.apply(context, [objects[prop], prop]); - } - } -} - -function include(parent, objects, clobber, merge) { - each(objects, function (obj, key) { - try { - var result = obj.path ? require(obj.path) : {}; - - if (clobber) { - // Clobber if it doesn't exist. - if (typeof parent[key] === 'undefined') { - parent[key] = result; - } else if (typeof obj.path !== 'undefined') { - // If merging, merge properties onto parent, otherwise, clobber. - if (merge) { - recursiveMerge(parent[key], result); - } else { - parent[key] = result; - } - } - result = parent[key]; - } else { - // Overwrite if not currently defined. - if (typeof parent[key] == 'undefined') { - parent[key] = result; - } else if (merge && typeof obj.path !== 'undefined') { - // If merging, merge parent onto result - recursiveMerge(result, parent[key]); - parent[key] = result; - } else { - // Set result to what already exists, so we can build children into it if they exist. - result = parent[key]; - } - } - - if (obj.children) { - include(result, obj.children, clobber, merge); - } - } catch(e) { - utils.alert('Exception building cordova JS globals: ' + e + ' for key "' + key + '"'); - } - }); -} - -/** - * Merge properties from one object onto another recursively. Properties from - * the src object will overwrite existing target property. - * - * @param target Object to merge properties into. - * @param src Object to merge properties from. - */ -function recursiveMerge(target, src) { - for (var prop in src) { - if (src.hasOwnProperty(prop)) { - if (typeof target.prototype !== 'undefined' && target.prototype.constructor === target) { - // If the target object is a constructor override off prototype. - target.prototype[prop] = src[prop]; - } else { - target[prop] = typeof src[prop] === 'object' ? recursiveMerge( - target[prop], src[prop]) : src[prop]; - } - } - } - return target; -} - -module.exports = { - build: function (objects) { - return { - intoButDontClobber: function (target) { - include(target, objects, false, false); - }, - intoAndClobber: function(target) { - include(target, objects, true, false); - }, - intoAndMerge: function(target) { - include(target, objects, true, true); - } - }; - } -}; - -}); - -// file: lib/common/channel.js -define("cordova/channel", function(require, exports, module) { -var utils = require('cordova/utils'); - -/** - * Custom pub-sub "channel" that can have functions subscribed to it - * This object is used to define and control firing of events for - * cordova initialization. - * - * The order of events during page load and Cordova startup is as follows: - * - * onDOMContentLoaded Internal event that is received when the web page is loaded and parsed. - * onNativeReady Internal event that indicates the Cordova native side is ready. - * onCordovaReady Internal event fired when all Cordova JavaScript objects have been created. - * onCordovaInfoReady Internal event fired when device properties are available. - * onCordovaConnectionReady Internal event fired when the connection property has been set. - * onDeviceReady User event fired to indicate that Cordova is ready - * onResume User event fired to indicate a start/resume lifecycle event - * onPause User event fired to indicate a pause lifecycle event - * onDestroy Internal event fired when app is being destroyed (User should use window.onunload event, not this one). - * - * The only Cordova events that user code should register for are: - * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript - * pause App has moved to background - * resume App has returned to foreground - * - * Listeners can be registered as: - * document.addEventListener("deviceready", myDeviceReadyListener, false); - * document.addEventListener("resume", myResumeListener, false); - * document.addEventListener("pause", myPauseListener, false); - * - * The DOM lifecycle events should be used for saving and restoring state - * window.onload - * window.onunload - * - */ - -/** - * Channel - * @constructor - * @param type String the channel name - * @param opts Object options to pass into the channel, currently - * supports: - * onSubscribe: callback that fires when - * something subscribes to the Channel. Sets - * context to the Channel. - * onUnsubscribe: callback that fires when - * something unsubscribes to the Channel. Sets - * context to the Channel. - */ -var Channel = function(type, opts) { - this.type = type; - this.handlers = {}; - this.numHandlers = 0; - this.guid = 0; - this.fired = false; - this.enabled = true; - this.events = { - onSubscribe:null, - onUnsubscribe:null - }; - if (opts) { - if (opts.onSubscribe) this.events.onSubscribe = opts.onSubscribe; - if (opts.onUnsubscribe) this.events.onUnsubscribe = opts.onUnsubscribe; - } -}, - channel = { - /** - * Calls the provided function only after all of the channels specified - * have been fired. - */ - join: function (h, c) { - var i = c.length; - var len = i; - var f = function() { - if (!(--i)) h(); - }; - for (var j=0; j 0) { - var v; - eval("v="+r+";"); - - // If status is OK, then return value back to caller - if (v.status === cordova.callbackStatus.OK) { - - // If there is a success callback, then call it now with - // returned value - if (success) { - try { - success(v.message); - } catch (e) { - console.log("Error in success callback: " + callbackId + " = " + e); - } - - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - return v.message; - } - - // If no result - else if (v.status === cordova.callbackStatus.NO_RESULT) { - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - - // If error, then display error - else { - console.log("Error: Status="+v.status+" Message="+v.message); - - // If there is a fail callback, then call it now with returned value - if (fail) { - try { - fail(v.message); - } - catch (e1) { - console.log("Error in error callback: "+callbackId+" = "+e1); - } - - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - return null; - } - } - } catch (e2) { - console.log("Error: "+e2); - } -}; - -}); - -// file: lib/android/platform.js -define("cordova/platform", function(require, exports, module) { -module.exports = { - id: "android", - initialize:function() { - var channel = require("cordova/channel"), - cordova = require('cordova'), - callback = require('cordova/plugin/android/callback'), - polling = require('cordova/plugin/android/polling'), - exec = require('cordova/exec'); - - channel.onDestroy.subscribe(function() { - cordova.shuttingDown = true; - }); - - // Start listening for XHR callbacks - // Figure out which bridge approach will work on this Android - // device: polling or XHR-based callbacks - setTimeout(function() { - if (cordova.UsePolling) { - polling(); - } - else { - var isPolling = prompt("usePolling", "gap_callbackServer:"); - cordova.UsePolling = isPolling; - if (isPolling == "true") { - cordova.UsePolling = true; - polling(); - } else { - cordova.UsePolling = false; - callback(); - } - } - }, 1); - - // Inject a listener for the backbutton on the document. - var backButtonChannel = cordova.addDocumentEventHandler('backbutton', { - onSubscribe:function() { - // If we just attached the first handler, let native know we need to override the back button. - if (this.numHandlers === 1) { - exec(null, null, "App", "overrideBackbutton", [true]); - } - }, - onUnsubscribe:function() { - // If we just detached the last handler, let native know we no longer override the back button. - if (this.numHandlers === 0) { - exec(null, null, "App", "overrideBackbutton", [false]); - } - } - }); - - // Add hardware MENU and SEARCH button handlers - cordova.addDocumentEventHandler('menubutton'); - cordova.addDocumentEventHandler('searchbutton'); - - // Figure out if we need to shim-in localStorage and WebSQL - // support from the native side. - var storage = require('cordova/plugin/android/storage'); - - // First patch WebSQL if necessary - if (typeof window.openDatabase == 'undefined') { - // Not defined, create an openDatabase function for all to use! - window.openDatabase = storage.openDatabase; - } else { - // Defined, but some Android devices will throw a SECURITY_ERR - - // so we wrap the whole thing in a try-catch and shim in our own - // if the device has Android bug 16175. - var originalOpenDatabase = window.openDatabase; - window.openDatabase = function(name, version, desc, size) { - var db = null; - try { - db = originalOpenDatabase(name, version, desc, size); - } - catch (ex) { - if (ex.code === 18) { - db = null; - } else { - throw ex; - } - } - - if (db === null) { - return storage.openDatabase(name, version, desc, size); - } - else { - return db; - } - - }; - } - - // Patch localStorage if necessary - if (typeof window.localStorage == 'undefined' || window.localStorage === null) { - window.localStorage = new storage.CupCakeLocalStorage(); - } - - // Let native code know we are all done on the JS side. - // Native code will then un-hide the WebView. - channel.join(function() { - prompt("", "gap_init:"); - }, [channel.onCordovaReady]); - }, - objects: { - cordova: { - children: { - JSCallback:{ - path:"cordova/plugin/android/callback" - }, - JSCallbackPolling:{ - path:"cordova/plugin/android/polling" - } - } - }, - navigator: { - children: { - app:{ - path: "cordova/plugin/android/app" - } - } - }, - device:{ - path: "cordova/plugin/android/device" - }, - File: { // exists natively on Android WebView, override - path: "cordova/plugin/File" - }, - FileReader: { // exists natively on Android WebView, override - path: "cordova/plugin/FileReader" - }, - FileError: { //exists natively on Android WebView on Android 4.x - path: "cordova/plugin/FileError" - }, - MediaError: { // exists natively on Android WebView on Android 4.x - path: "cordova/plugin/MediaError" - } - }, - merges: { - navigator: { - children: { - notification: { - path: 'cordova/plugin/android/notification' - } - } - } - } -}; -}); - -// file: lib/common/plugin/Acceleration.js -define("cordova/plugin/Acceleration", function(require, exports, module) { -var Acceleration = function(x, y, z, timestamp) { - this.x = x; - this.y = y; - this.z = z; - this.timestamp = timestamp || (new Date()).getTime(); -}; - -module.exports = Acceleration; -}); - -// file: lib/common/plugin/Camera.js -define("cordova/plugin/Camera", function(require, exports, module) { -var exec = require('cordova/exec'), - Camera = require('cordova/plugin/CameraConstants'); - -var cameraExport = {}; - -// Tack on the Camera Constants to the base camera plugin. -for (var key in Camera) { - cameraExport[key] = Camera[key]; -} - -/** - * Gets a picture from source defined by "options.sourceType", and returns the - * image as defined by the "options.destinationType" option. - - * The defaults are sourceType=CAMERA and destinationType=FILE_URL. - * - * @param {Function} successCallback - * @param {Function} errorCallback - * @param {Object} options - */ -cameraExport.getPicture = function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback != "function") { - console.log("Camera Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback != "function")) { - console.log("Camera Error: errorCallback is not a function"); - return; - } - - var quality = 50; - if (options && typeof options.quality == "number") { - quality = options.quality; - } else if (options && typeof options.quality == "string") { - var qlity = parseInt(options.quality, 10); - if (isNaN(qlity) === false) { - quality = qlity.valueOf(); - } - } - - var destinationType = Camera.DestinationType.FILE_URI; - if (typeof options.destinationType == "number") { - destinationType = options.destinationType; - } - - var sourceType = Camera.PictureSourceType.CAMERA; - if (typeof options.sourceType == "number") { - sourceType = options.sourceType; - } - - var targetWidth = -1; - if (typeof options.targetWidth == "number") { - targetWidth = options.targetWidth; - } else if (typeof options.targetWidth == "string") { - var width = parseInt(options.targetWidth, 10); - if (isNaN(width) === false) { - targetWidth = width.valueOf(); - } - } - - var targetHeight = -1; - if (typeof options.targetHeight == "number") { - targetHeight = options.targetHeight; - } else if (typeof options.targetHeight == "string") { - var height = parseInt(options.targetHeight, 10); - if (isNaN(height) === false) { - targetHeight = height.valueOf(); - } - } - - var encodingType = Camera.EncodingType.JPEG; - if (typeof options.encodingType == "number") { - encodingType = options.encodingType; - } - - var mediaType = Camera.MediaType.PICTURE; - if (typeof options.mediaType == "number") { - mediaType = options.mediaType; - } - var allowEdit = false; - if (typeof options.allowEdit == "boolean") { - allowEdit = options.allowEdit; - } else if (typeof options.allowEdit == "number") { - allowEdit = options.allowEdit <= 0 ? false : true; - } - var correctOrientation = false; - if (typeof options.correctOrientation == "boolean") { - correctOrientation = options.correctOrientation; - } else if (typeof options.correctOrientation == "number") { - correctOrientation = options.correctOrientation <=0 ? false : true; - } - var saveToPhotoAlbum = false; - if (typeof options.saveToPhotoAlbum == "boolean") { - saveToPhotoAlbum = options.saveToPhotoAlbum; - } else if (typeof options.saveToPhotoAlbum == "number") { - saveToPhotoAlbum = options.saveToPhotoAlbum <=0 ? false : true; - } - - exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType, mediaType, allowEdit, correctOrientation, saveToPhotoAlbum]); -}; - -module.exports = cameraExport; -}); - -// file: lib/common/plugin/CameraConstants.js -define("cordova/plugin/CameraConstants", function(require, exports, module) { -module.exports = { - DestinationType:{ - DATA_URL: 0, // Return base64 encoded string - FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android) - }, - EncodingType:{ - JPEG: 0, // Return JPEG encoded image - PNG: 1 // Return PNG encoded image - }, - MediaType:{ - PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType - VIDEO: 1, // allow selection of video only, ONLY RETURNS URL - ALLMEDIA : 2 // allow selection from all media types - }, - PictureSourceType:{ - PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android) - CAMERA : 1, // Take picture from camera - SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android) - } -}; -}); - -// file: lib/common/plugin/CaptureAudioOptions.js -define("cordova/plugin/CaptureAudioOptions", function(require, exports, module) { -/** - * Encapsulates all audio capture operation configuration options. - */ -var CaptureAudioOptions = function(){ - // Upper limit of sound clips user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single sound clip in seconds. - this.duration = 0; - // The selected audio mode. Must match with one of the elements in supportedAudioModes array. - this.mode = null; -}; - -module.exports = CaptureAudioOptions; -}); - -// file: lib/common/plugin/CaptureError.js -define("cordova/plugin/CaptureError", function(require, exports, module) { -/** - * The CaptureError interface encapsulates all errors in the Capture API. - */ -var CaptureError = function(c) { - this.code = c || null; -}; - -// Camera or microphone failed to capture image or sound. -CaptureError.CAPTURE_INTERNAL_ERR = 0; -// Camera application or audio capture application is currently serving other capture request. -CaptureError.CAPTURE_APPLICATION_BUSY = 1; -// Invalid use of the API (e.g. limit parameter has value less than one). -CaptureError.CAPTURE_INVALID_ARGUMENT = 2; -// User exited camera application or audio capture application before capturing anything. -CaptureError.CAPTURE_NO_MEDIA_FILES = 3; -// The requested capture operation is not supported. -CaptureError.CAPTURE_NOT_SUPPORTED = 20; - -module.exports = CaptureError; -}); - -// file: lib/common/plugin/CaptureImageOptions.js -define("cordova/plugin/CaptureImageOptions", function(require, exports, module) { -/** - * Encapsulates all image capture operation configuration options. - */ -var CaptureImageOptions = function(){ - // Upper limit of images user can take. Value must be equal or greater than 1. - this.limit = 1; - // The selected image mode. Must match with one of the elements in supportedImageModes array. - this.mode = null; -}; - -module.exports = CaptureImageOptions; -}); - -// file: lib/common/plugin/CaptureVideoOptions.js -define("cordova/plugin/CaptureVideoOptions", function(require, exports, module) { -/** - * Encapsulates all video capture operation configuration options. - */ -var CaptureVideoOptions = function(){ - // Upper limit of videos user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single video clip in seconds. - this.duration = 0; - // The selected video mode. Must match with one of the elements in supportedVideoModes array. - this.mode = null; -}; - -module.exports = CaptureVideoOptions; -}); - -// file: lib/common/plugin/CompassError.js -define("cordova/plugin/CompassError", function(require, exports, module) { -/** - * CompassError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var CompassError = function(err) { - this.code = (err !== undefined ? err : null); -}; - -CompassError.COMPASS_INTERNAL_ERR = 0; -CompassError.COMPASS_NOT_SUPPORTED = 20; - -module.exports = CompassError; -}); - -// file: lib/common/plugin/CompassHeading.js -define("cordova/plugin/CompassHeading", function(require, exports, module) { -var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) { - this.magneticHeading = (magneticHeading !== undefined ? magneticHeading : null); - this.trueHeading = (trueHeading !== undefined ? trueHeading : null); - this.headingAccuracy = (headingAccuracy !== undefined ? headingAccuracy : null); - this.timestamp = (timestamp !== undefined ? timestamp : new Date().getTime()); -}; - -module.exports = CompassHeading; -}); - -// file: lib/common/plugin/ConfigurationData.js -define("cordova/plugin/ConfigurationData", function(require, exports, module) { -/** - * Encapsulates a set of parameters that the capture device supports. - */ -function ConfigurationData() { - // The ASCII-encoded string in lower case representing the media type. - this.type = null; - // The height attribute represents height of the image or video in pixels. - // In the case of a sound clip this attribute has value 0. - this.height = 0; - // The width attribute represents width of the image or video in pixels. - // In the case of a sound clip this attribute has value 0 - this.width = 0; -} - -module.exports = ConfigurationData; -}); - -// file: lib/common/plugin/Connection.js -define("cordova/plugin/Connection", function(require, exports, module) { -/** - * Network status - */ -module.exports = { - UNKNOWN: "unknown", - ETHERNET: "ethernet", - WIFI: "wifi", - CELL_2G: "2g", - CELL_3G: "3g", - CELL_4G: "4g", - NONE: "none" -}; -}); - -// file: lib/common/plugin/Contact.js -define("cordova/plugin/Contact", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'); - -/** -* Converts primitives into Complex Object -* Currently only used for Date fields -*/ -function convertIn(contact) { - var value = contact.birthday; - try { - contact.birthday = new Date(parseFloat(value)); - } catch (exception){ - console.log("Cordova Contact convertIn error: exception creating date."); - } - return contact; -} - -/** -* Converts Complex objects into primitives -* Only conversion at present is for Dates. -**/ - -function convertOut(contact) { - var value = contact.birthday; - if (value !== null) { - // try to make it a Date object if it is not already - if (!utils.isDate(value)){ - try { - value = new Date(value); - } catch(exception){ - value = null; - } - } - if (utils.isDate(value)){ - value = value.valueOf(); // convert to milliseconds - } - contact.birthday = value; - } - return contact; -} - -/** -* Contains information about a single contact. -* @constructor -* @param {DOMString} id unique identifier -* @param {DOMString} displayName -* @param {ContactName} name -* @param {DOMString} nickname -* @param {Array.} phoneNumbers array of phone numbers -* @param {Array.} emails array of email addresses -* @param {Array.} addresses array of addresses -* @param {Array.} ims instant messaging user ids -* @param {Array.} organizations -* @param {DOMString} birthday contact's birthday -* @param {DOMString} note user notes about contact -* @param {Array.} photos -* @param {Array.} categories -* @param {Array.} urls contact's web sites -*/ -var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses, - ims, organizations, birthday, note, photos, categories, urls) { - this.id = id || null; - this.rawId = null; - this.displayName = displayName || null; - this.name = name || null; // ContactName - this.nickname = nickname || null; - this.phoneNumbers = phoneNumbers || null; // ContactField[] - this.emails = emails || null; // ContactField[] - this.addresses = addresses || null; // ContactAddress[] - this.ims = ims || null; // ContactField[] - this.organizations = organizations || null; // ContactOrganization[] - this.birthday = birthday || null; - this.note = note || null; - this.photos = photos || null; // ContactField[] - this.categories = categories || null; // ContactField[] - this.urls = urls || null; // ContactField[] -}; - -/** -* Removes contact from device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.remove = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - if (this.id === null) { - fail(ContactError.UNKNOWN_ERROR); - } - else { - exec(successCB, fail, "Contacts", "remove", [this.id]); - } -}; - -/** -* Creates a deep copy of this Contact. -* With the contact ID set to null. -* @return copy of this Contact -*/ -Contact.prototype.clone = function() { - var clonedContact = utils.clone(this); - var i; - clonedContact.id = null; - clonedContact.rawId = null; - // Loop through and clear out any id's in phones, emails, etc. - if (clonedContact.phoneNumbers) { - for (i = 0; i < clonedContact.phoneNumbers.length; i++) { - clonedContact.phoneNumbers[i].id = null; - } - } - if (clonedContact.emails) { - for (i = 0; i < clonedContact.emails.length; i++) { - clonedContact.emails[i].id = null; - } - } - if (clonedContact.addresses) { - for (i = 0; i < clonedContact.addresses.length; i++) { - clonedContact.addresses[i].id = null; - } - } - if (clonedContact.ims) { - for (i = 0; i < clonedContact.ims.length; i++) { - clonedContact.ims[i].id = null; - } - } - if (clonedContact.organizations) { - for (i = 0; i < clonedContact.organizations.length; i++) { - clonedContact.organizations[i].id = null; - } - } - if (clonedContact.categories) { - for (i = 0; i < clonedContact.categories.length; i++) { - clonedContact.categories[i].id = null; - } - } - if (clonedContact.photos) { - for (i = 0; i < clonedContact.photos.length; i++) { - clonedContact.photos[i].id = null; - } - } - if (clonedContact.urls) { - for (i = 0; i < clonedContact.urls.length; i++) { - clonedContact.urls[i].id = null; - } - } - return clonedContact; -}; - -/** -* Persists contact to device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.save = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - var success = function(result) { - if (result) { - if (typeof successCB === 'function') { - var fullContact = require('cordova/plugin/contacts').create(result); - successCB(convertIn(fullContact)); - } - } - else { - // no Entry object returned - fail(ContactError.UNKNOWN_ERROR); - } - }; - var dupContact = convertOut(utils.clone(this)); - exec(success, fail, "Contacts", "save", [dupContact]); -}; - - -module.exports = Contact; - -}); - -// file: lib/common/plugin/ContactAddress.js -define("cordova/plugin/ContactAddress", function(require, exports, module) { -/** -* Contact address. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code -* @param formatted // NOTE: not a W3C standard -* @param streetAddress -* @param locality -* @param region -* @param postalCode -* @param country -*/ - -var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.formatted = formatted || null; - this.streetAddress = streetAddress || null; - this.locality = locality || null; - this.region = region || null; - this.postalCode = postalCode || null; - this.country = country || null; -}; - -module.exports = ContactAddress; -}); - -// file: lib/common/plugin/ContactError.js -define("cordova/plugin/ContactError", function(require, exports, module) { -/** - * ContactError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var ContactError = function(err) { - this.code = (typeof err != 'undefined' ? err : null); -}; - -/** - * Error codes - */ -ContactError.UNKNOWN_ERROR = 0; -ContactError.INVALID_ARGUMENT_ERROR = 1; -ContactError.TIMEOUT_ERROR = 2; -ContactError.PENDING_OPERATION_ERROR = 3; -ContactError.IO_ERROR = 4; -ContactError.NOT_SUPPORTED_ERROR = 5; -ContactError.PERMISSION_DENIED_ERROR = 20; - -module.exports = ContactError; -}); - -// file: lib/common/plugin/ContactField.js -define("cordova/plugin/ContactField", function(require, exports, module) { -/** -* Generic contact field. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param type -* @param value -* @param pref -*/ -var ContactField = function(type, value, pref) { - this.id = null; - this.type = (type && type.toString()) || null; - this.value = (value && value.toString()) || null; - this.pref = (typeof pref != 'undefined' ? pref : false); -}; - -module.exports = ContactField; -}); - -// file: lib/common/plugin/ContactFindOptions.js -define("cordova/plugin/ContactFindOptions", function(require, exports, module) { -/** - * ContactFindOptions. - * @constructor - * @param filter used to match contacts against - * @param multiple boolean used to determine if more than one contact should be returned - */ - -var ContactFindOptions = function(filter, multiple) { - this.filter = filter || ''; - this.multiple = (typeof multiple != 'undefined' ? multiple : false); -}; - -module.exports = ContactFindOptions; -}); - -// file: lib/common/plugin/ContactName.js -define("cordova/plugin/ContactName", function(require, exports, module) { -/** -* Contact name. -* @constructor -* @param formatted // NOTE: not part of W3C standard -* @param familyName -* @param givenName -* @param middle -* @param prefix -* @param suffix -*/ -var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) { - this.formatted = formatted || null; - this.familyName = familyName || null; - this.givenName = givenName || null; - this.middleName = middle || null; - this.honorificPrefix = prefix || null; - this.honorificSuffix = suffix || null; -}; - -module.exports = ContactName; -}); - -// file: lib/common/plugin/ContactOrganization.js -define("cordova/plugin/ContactOrganization", function(require, exports, module) { -/** -* Contact organization. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param name -* @param dept -* @param title -* @param startDate -* @param endDate -* @param location -* @param desc -*/ - -var ContactOrganization = function(pref, type, name, dept, title) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.name = name || null; - this.department = dept || null; - this.title = title || null; -}; - -module.exports = ContactOrganization; -}); - -// file: lib/common/plugin/Coordinates.js -define("cordova/plugin/Coordinates", function(require, exports, module) { -/** - * This class contains position information. - * @param {Object} lat - * @param {Object} lng - * @param {Object} alt - * @param {Object} acc - * @param {Object} head - * @param {Object} vel - * @param {Object} altacc - * @constructor - */ -var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) { - /** - * The latitude of the position. - */ - this.latitude = lat; - /** - * The longitude of the position, - */ - this.longitude = lng; - /** - * The accuracy of the position. - */ - this.accuracy = acc; - /** - * The altitude of the position. - */ - this.altitude = alt; - /** - * The direction the device is moving at the position. - */ - this.heading = head; - /** - * The velocity with which the device is moving at the position. - */ - this.speed = vel; - /** - * The altitude accuracy of the position. - */ - this.altitudeAccuracy = (altacc !== undefined) ? altacc : null; -}; - -module.exports = Coordinates; -}); - -// file: lib/common/plugin/DirectoryEntry.js -define("cordova/plugin/DirectoryEntry", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - Entry = require('cordova/plugin/Entry'), - FileError = require('cordova/plugin/FileError'), - DirectoryReader = require('cordova/plugin/DirectoryReader'); - -/** - * An interface representing a directory on the file system. - * - * {boolean} isFile always false (readonly) - * {boolean} isDirectory always true (readonly) - * {DOMString} name of the directory, excluding the path leading to it (readonly) - * {DOMString} fullPath the absolute full path to the directory (readonly) - * {FileSystem} filesystem on which the directory resides (readonly) - */ -var DirectoryEntry = function(name, fullPath) { - DirectoryEntry.__super__.constructor.apply(this, [false, true, name, fullPath]); -}; - -utils.extend(DirectoryEntry, Entry); - -/** - * Creates a new DirectoryReader to read entries from this directory - */ -DirectoryEntry.prototype.createReader = function() { - return new DirectoryReader(this.fullPath); -}; - -/** - * Creates or looks up a directory - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory - * @param {Flags} options to create or excluively create the directory - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var entry = new DirectoryEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); -}; - -/** - * Deletes a directory and all of it's contents - * - * @param {Function} successCallback is called with no parameters - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); -}; - -/** - * Creates or looks up a file - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file - * @param {Flags} options to create or excluively create the file - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var FileEntry = require('cordova/plugin/FileEntry'); - var entry = new FileEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getFile", [this.fullPath, path, options]); -}; - -module.exports = DirectoryEntry; - -}); - -// file: lib/common/plugin/DirectoryReader.js -define("cordova/plugin/DirectoryReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError') ; - -/** - * An interface that lists the files and directories in a directory. - */ -function DirectoryReader(path) { - this.path = path || null; -} - -/** - * Returns a list of entries from a directory. - * - * @param {Function} successCallback is called with a list of entries - * @param {Function} errorCallback is called with a FileError - */ -DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var retVal = []; - for (var i=0; i][;base64], - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsDataURL = function(file) { - this.fileName = ""; - if (typeof file.fullPath === "undefined") { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // Save result - me.result = r; - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, "File", "readAsDataURL", [this.fileName]); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsBinaryString = function(file) { - // TODO - Can't return binary data to browser. - console.log('method "readAsBinaryString" is not supported at this time.'); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsArrayBuffer = function(file) { - // TODO - Can't return binary data to browser. - console.log('This method is not supported at this time.'); -}; - -module.exports = FileReader; -}); - -// file: lib/common/plugin/FileSystem.js -define("cordova/plugin/FileSystem", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); - -/** - * An interface representing a file system - * - * @constructor - * {DOMString} name the unique name of the file system (readonly) - * {DirectoryEntry} root directory of the file system (readonly) - */ -var FileSystem = function(name, root) { - this.name = name || null; - if (root) { - this.root = new DirectoryEntry(root.name, root.fullPath); - } -}; - -module.exports = FileSystem; -}); - -// file: lib/common/plugin/FileTransfer.js -define("cordova/plugin/FileTransfer", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * FileTransfer uploads a file to a remote server. - * @constructor - */ -var FileTransfer = function() {}; - -/** -* Given an absolute file path, uploads a file on the device to a remote server -* using a multipart HTTP request. -* @param filePath {String} Full path of the file on the device -* @param server {String} URL of the server to receive the file -* @param successCallback (Function} Callback to be invoked when upload has completed -* @param errorCallback {Function} Callback to be invoked upon error -* @param options {FileUploadOptions} Optional parameters such as file name and mimetype -* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false -*/ -FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) { - // check for options - var fileKey = null; - var fileName = null; - var mimeType = null; - var params = null; - var chunkedMode = true; - if (options) { - fileKey = options.fileKey; - fileName = options.fileName; - mimeType = options.mimeType; - if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") { - chunkedMode = options.chunkedMode; - } - if (options.params) { - params = options.params; - } - else { - params = {}; - } - } - - exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode]); -}; - -/** - * Downloads a file form a given URL and saves it to the specified directory. - * @param source {String} URL of the server to receive the file - * @param target {String} Full path of the file on the device - * @param successCallback (Function} Callback to be invoked when upload has completed - * @param errorCallback {Function} Callback to be invoked upon error - */ -FileTransfer.prototype.download = function(source, target, successCallback, errorCallback) { - var win = function(result) { - var entry = null; - if (result.isDirectory) { - entry = new (require('cordova/plugin/DirectoryEntry'))(); - } - else if (result.isFile) { - entry = new (require('cordova/plugin/FileEntry'))(); - } - entry.isDirectory = result.isDirectory; - entry.isFile = result.isFile; - entry.name = result.name; - entry.fullPath = result.fullPath; - successCallback(entry); - }; - exec(win, errorCallback, 'FileTransfer', 'download', [source, target]); -}; - -module.exports = FileTransfer; - -}); - -// file: lib/common/plugin/FileTransferError.js -define("cordova/plugin/FileTransferError", function(require, exports, module) { -/** - * FileTransferError - * @constructor - */ -var FileTransferError = function(code) { - this.code = code || null; -}; - -FileTransferError.FILE_NOT_FOUND_ERR = 1; -FileTransferError.INVALID_URL_ERR = 2; -FileTransferError.CONNECTION_ERR = 3; - -module.exports = FileTransferError; -}); - -// file: lib/common/plugin/FileUploadOptions.js -define("cordova/plugin/FileUploadOptions", function(require, exports, module) { -/** - * Options to customize the HTTP request used to upload files. - * @constructor - * @param fileKey {String} Name of file request parameter. - * @param fileName {String} Filename to be used by the server. Defaults to image.jpg. - * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg. - * @param params {Object} Object with key: value params to send to the server. - */ -var FileUploadOptions = function(fileKey, fileName, mimeType, params) { - this.fileKey = fileKey || null; - this.fileName = fileName || null; - this.mimeType = mimeType || null; - this.params = params || null; -}; - -module.exports = FileUploadOptions; -}); - -// file: lib/common/plugin/FileUploadResult.js -define("cordova/plugin/FileUploadResult", function(require, exports, module) { -/** - * FileUploadResult - * @constructor - */ -var FileUploadResult = function() { - this.bytesSent = 0; - this.responseCode = null; - this.response = null; -}; - -module.exports = FileUploadResult; -}); - -// file: lib/common/plugin/FileWriter.js -define("cordova/plugin/FileWriter", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -/** - * This class writes to the mobile device file system. - * - * For Android: - * The root directory is the root of the file system. - * To write to the SD card, the file name is "sdcard/my_file.txt" - * - * @constructor - * @param file {File} File object containing file properties - * @param append if true write to the end of the file, otherwise overwrite the file - */ -var FileWriter = function(file) { - this.fileName = ""; - this.length = 0; - if (file) { - this.fileName = file.fullPath || file; - this.length = file.size || 0; - } - // default is to write at the beginning of the file - this.position = 0; - - this.readyState = 0; // EMPTY - - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onwritestart = null; // When writing starts - this.onprogress = null; // While writing the file, and reporting partial file data - this.onwrite = null; // When the write has successfully completed. - this.onwriteend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method. - this.onerror = null; // When the write has failed (see errors). -}; - -// States -FileWriter.INIT = 0; -FileWriter.WRITING = 1; -FileWriter.DONE = 2; - -/** - * Abort writing file. - */ -FileWriter.prototype.abort = function() { - // check for invalid state - if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // set error - this.error = new FileError(FileError.ABORT_ERR); - - this.readyState = FileWriter.DONE; - - // If abort callback - if (typeof this.onabort === "function") { - this.onabort(new ProgressEvent("abort", {"target":this})); - } - - // If write end callback - if (typeof this.onwriteend === "function") { - this.onwriteend(new ProgressEvent("writeend", {"target":this})); - } -}; - -/** - * Writes data to the file - * - * @param text to be written - */ -FileWriter.prototype.write = function(text) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":me})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // position always increases by bytes written because file would be extended - me.position += r; - // The length of the file is now where we are done writing. - - me.length = me.position; - - // DONE state - me.readyState = FileWriter.DONE; - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "write", [this.fileName, text, this.position]); -}; - -/** - * Moves the file pointer to the location specified. - * - * If the offset is a negative number the position of the file - * pointer is rewound. If the offset is greater than the file - * size the position is set to the end of the file. - * - * @param offset is the location to move the file pointer to. - */ -FileWriter.prototype.seek = function(offset) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - if (!offset && offset !== 0) { - return; - } - - // See back from end of file. - if (offset < 0) { - this.position = Math.max(offset + this.length, 0); - } - // Offset is bigger then file size so set position - // to the end of the file. - else if (offset > this.length) { - this.position = this.length; - } - // Offset is between 0 and file size so set the position - // to start writing. - else { - this.position = offset; - } -}; - -/** - * Truncates the file to the size specified. - * - * @param size to chop the file at. - */ -FileWriter.prototype.truncate = function(size) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":this})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Update the length of the file - me.length = r; - me.position = Math.min(me.position, r); - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "truncate", [this.fileName, size]); -}; - -module.exports = FileWriter; - -}); - -// file: lib/common/plugin/Flags.js -define("cordova/plugin/Flags", function(require, exports, module) { -/** - * Supplies arguments to methods that lookup or create files and directories. - * - * @param create - * {boolean} file or directory if it doesn't exist - * @param exclusive - * {boolean} used with create; if true the command will fail if - * target path exists - */ -function Flags(create, exclusive) { - this.create = create || false; - this.exclusive = exclusive || false; -} - -module.exports = Flags; -}); - -// file: lib/common/plugin/LocalFileSystem.js -define("cordova/plugin/LocalFileSystem", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Represents a local file system. - */ -var LocalFileSystem = function() { - -}; - -LocalFileSystem.TEMPORARY = 0; //temporary, with no guarantee of persistence -LocalFileSystem.PERSISTENT = 1; //persistent - -module.exports = LocalFileSystem; -}); - -// file: lib/common/plugin/Media.js -define("cordova/plugin/Media", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'); - -var mediaObjects = {}; - -/** - * This class provides access to the device media, interfaces to both sound and video - * - * @constructor - * @param src The file name or url to play - * @param successCallback The callback to be called when the file is done playing or recording. - * successCallback() - * @param errorCallback The callback to be called if there is an error. - * errorCallback(int errorCode) - OPTIONAL - * @param statusCallback The callback to be called when media status has changed. - * statusCallback(int statusCode) - OPTIONAL - */ -var Media = function(src, successCallback, errorCallback, statusCallback) { - - // successCallback optional - if (successCallback && (typeof successCallback !== "function")) { - console.log("Media Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Media Error: errorCallback is not a function"); - return; - } - - // statusCallback optional - if (statusCallback && (typeof statusCallback !== "function")) { - console.log("Media Error: statusCallback is not a function"); - return; - } - - this.id = utils.createUUID(); - mediaObjects[this.id] = this; - this.src = src; - this.successCallback = successCallback; - this.errorCallback = errorCallback; - this.statusCallback = statusCallback; - this._duration = -1; - this._position = -1; - exec(null, this.errorCallback, "Media", "create", [this.id, this.src]); -}; - -// Media messages -Media.MEDIA_STATE = 1; -Media.MEDIA_DURATION = 2; -Media.MEDIA_POSITION = 3; -Media.MEDIA_ERROR = 9; - -// Media states -Media.MEDIA_NONE = 0; -Media.MEDIA_STARTING = 1; -Media.MEDIA_RUNNING = 2; -Media.MEDIA_PAUSED = 3; -Media.MEDIA_STOPPED = 4; -Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"]; - -// "static" function to return existing objs. -Media.get = function(id) { - return mediaObjects[id]; -}; - -/** - * Start or resume playing audio file. - */ -Media.prototype.play = function(options) { - exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]); -}; - -/** - * Stop playing audio file. - */ -Media.prototype.stop = function() { - var me = this; - exec(function() { - me._position = 0; - me.successCallback(); - }, this.errorCallback, "Media", "stopPlayingAudio", [this.id]); -}; - -/** - * Seek or jump to a new time in the track.. - */ -Media.prototype.seekTo = function(milliseconds) { - var me = this; - exec(function(p) { - me._position = p; - }, this.errorCallback, "Media", "seekToAudio", [this.id, milliseconds]); -}; - -/** - * Pause playing audio file. - */ -Media.prototype.pause = function() { - exec(null, this.errorCallback, "Media", "pausePlayingAudio", [this.id]); -}; - -/** - * Get duration of an audio file. - * The duration is only set for audio that is playing, paused or stopped. - * - * @return duration or -1 if not known. - */ -Media.prototype.getDuration = function() { - return this._duration; -}; - -/** - * Get position of audio. - */ -Media.prototype.getCurrentPosition = function(success, fail) { - var me = this; - exec(function(p) { - me._position = p; - success(p); - }, fail, "Media", "getCurrentPositionAudio", [this.id]); -}; - -/** - * Start recording audio file. - */ -Media.prototype.startRecord = function() { - exec(this.successCallback, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); -}; - -/** - * Stop recording audio file. - */ -Media.prototype.stopRecord = function() { - exec(this.successCallback, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); -}; - -/** - * Release the resources. - */ -Media.prototype.release = function() { - exec(null, this.errorCallback, "Media", "release", [this.id]); -}; - -/** - * Adjust the volume. - */ -Media.prototype.setVolume = function(volume) { - exec(null, null, "Media", "setVolume", [this.id, volume]); -}; - -/** - * Audio has status update. - * PRIVATE - * - * @param id The media object id (string) - * @param status The status code (int) - * @param msg The status message (string) - */ -Media.onStatus = function(id, msg, value) { - var media = mediaObjects[id]; - // If state update - if (msg === Media.MEDIA_STATE) { - if (value === Media.MEDIA_STOPPED) { - if (media.successCallback) { - media.successCallback(); - } - } - if (media.statusCallback) { - media.statusCallback(value); - } - } - else if (msg === Media.MEDIA_DURATION) { - media._duration = value; - } - else if (msg === Media.MEDIA_ERROR) { - if (media.errorCallback) { - // value should be a MediaError object when msg == MEDIA_ERROR - media.errorCallback(value); - } - } - else if (msg === Media.MEDIA_POSITION) { - media._position = value; - } -}; - -module.exports = Media; -}); - -// file: lib/common/plugin/MediaError.js -define("cordova/plugin/MediaError", function(require, exports, module) { -/** - * This class contains information about any Media errors. - * @constructor - */ -var MediaError = function(code, msg) { - this.code = (code !== undefined ? code : null); - this.message = msg || ""; -}; - -MediaError.MEDIA_ERR_NONE_ACTIVE = 0; -MediaError.MEDIA_ERR_ABORTED = 1; -MediaError.MEDIA_ERR_NETWORK = 2; -MediaError.MEDIA_ERR_DECODE = 3; -MediaError.MEDIA_ERR_NONE_SUPPORTED = 4; - -module.exports = MediaError; -}); - -// file: lib/common/plugin/MediaFile.js -define("cordova/plugin/MediaFile", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - File = require('cordova/plugin/File'), - CaptureError = require('cordova/plugin/CaptureError'); -/** - * Represents a single file. - * - * name {DOMString} name of the file, without path information - * fullPath {DOMString} the full path of the file, including the name - * type {DOMString} mime type - * lastModifiedDate {Date} last modified date - * size {Number} size of the file in bytes - */ -var MediaFile = function(name, fullPath, type, lastModifiedDate, size){ - MediaFile.__super__.constructor.apply(this, arguments); -}; - -utils.extend(MediaFile, File); - -/** - * Request capture format data for a specific file and type - * - * @param {Function} successCB - * @param {Function} errorCB - */ -MediaFile.prototype.getFormatData = function(successCallback, errorCallback) { - if (typeof this.fullPath === "undefined" || this.fullPath === null) { - errorCallback(new CaptureError(CaptureError.CAPTURE_INVALID_ARGUMENT)); - } else { - exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]); - } -}; - -// TODO: can we axe this? -/** - * Casts a PluginResult message property (array of objects) to an array of MediaFile objects - * (used in Objective-C and Android) - * - * @param {PluginResult} pluginResult - */ -MediaFile.cast = function(pluginResult) { - var mediaFiles = []; - for (var i=0; i.dispatchEvent - // need to first figure out how to implement EventTarget - } - } - return event; - }; - try { - var ev = createEvent({type:"abort",target:document}); - return function ProgressEvent(type, data) { - data.type = type; - return createEvent(data); - }; - } catch(e){ - */ - return function ProgressEvent(type, dict) { - this.type = type; - this.bubbles = false; - this.cancelBubble = false; - this.cancelable = false; - this.lengthComputable = false; - this.loaded = dict && dict.loaded ? dict.loaded : 0; - this.total = dict && dict.total ? dict.total : 0; - this.target = dict && dict.target ? dict.target : null; - }; - //} -})(); - -module.exports = ProgressEvent; -}); - -// file: lib/common/plugin/accelerometer.js -define("cordova/plugin/accelerometer", function(require, exports, module) { -/** - * This class provides access to device accelerometer data. - * @constructor - */ -var utils = require("cordova/utils"), - exec = require("cordova/exec"); - -// Local singleton variables. -var timers = {}; - -var accelerometer = { - /** - * Asynchronously aquires the current acceleration. - * - * @param {Function} successCallback The function to call when the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - */ - getCurrentAcceleration: function(successCallback, errorCallback, options) { - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Accelerometer Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Accelerometer Error: errorCallback is not a function"); - return; - } - - // Get acceleration - exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []); - }, - - /** - * Asynchronously aquires the acceleration repeatedly at a given interval. - * - * @param {Function} successCallback The function to call each time the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchAcceleration: function(successCallback, errorCallback, options) { - - // Default interval (10 sec) - var frequency = (options !== undefined && options.frequency !== undefined)? options.frequency : 10000; - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Accelerometer Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Accelerometer Error: errorCallback is not a function"); - return; - } - - // Make sure accelerometer timeout > frequency + 10 sec - exec( - function(timeout) { - if (timeout < (frequency + 10000)) { - exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]); - } - }, - function(e) { }, "Accelerometer", "getTimeout", []); - - // Start watch timer - var id = utils.createUUID(); - timers[id] = window.setInterval(function() { - exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []); - }, (frequency ? frequency : 1)); - - return id; - }, - - /** - * Clears the specified accelerometer watch. - * - * @param {String} id The id of the watch returned from #watchAcceleration. - */ - clearWatch: function(id) { - - // Stop javascript timer & remove from timer list - if (id && timers[id] !== undefined) { - window.clearInterval(timers[id]); - delete timers[id]; - } - } -}; - -module.exports = accelerometer; -}); - -// file: lib/android/plugin/android/app.js -define("cordova/plugin/android/app", function(require, exports, module) { -var exec = require('cordova/exec'); - -module.exports = { - /** - * Clear the resource cache. - */ - clearCache:function() { - exec(null, null, "App", "clearCache", []); - }, - - /** - * Load the url into the webview or into new browser instance. - * - * @param url The URL to load - * @param props Properties that can be passed in to the activity: - * wait: int => wait msec before loading URL - * loadingDialog: "Title,Message" => display a native loading dialog - * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error - * clearHistory: boolean => clear webview history (default=false) - * openExternal: boolean => open in a new browser (default=false) - * - * Example: - * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000}); - */ - loadUrl:function(url, props) { - exec(null, null, "App", "loadUrl", [url, props]); - }, - - /** - * Cancel loadUrl that is waiting to be loaded. - */ - cancelLoadUrl:function() { - exec(null, null, "App", "cancelLoadUrl", []); - }, - - /** - * Clear web history in this web view. - * Instead of BACK button loading the previous web page, it will exit the app. - */ - clearHistory:function() { - exec(null, null, "App", "clearHistory", []); - }, - - /** - * Go to previous page displayed. - * This is the same as pressing the backbutton on Android device. - */ - backHistory:function() { - exec(null, null, "App", "backHistory", []); - }, - - /** - * Override the default behavior of the Android back button. - * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired. - * - * Note: The user should not have to call this method. Instead, when the user - * registers for the "backbutton" event, this is automatically done. - * - * @param override T=override, F=cancel override - */ - overrideBackbutton:function(override) { - exec(null, null, "App", "overrideBackbutton", [override]); - }, - - /** - * Exit and terminate the application. - */ - exitApp:function() { - return exec(null, null, "App", "exitApp", []); - } -}; -}); - -// file: lib/android/plugin/android/callback.js -define("cordova/plugin/android/callback", function(require, exports, module) { -var port = null, - token = null, - cordova = require('cordova'), - polling = require('cordova/plugin/android/polling'), - callback = function() { - // Exit if shutting down app - if (cordova.shuttingDown) { - return; - } - - // If polling flag was changed, start using polling from now on - if (cordova.UsePolling) { - polling(); - return; - } - - var xmlhttp = new XMLHttpRequest(); - - // Callback function when XMLHttpRequest is ready - xmlhttp.onreadystatechange=function(){ - if(xmlhttp.readyState === 4){ - - // Exit if shutting down app - if (cordova.shuttingDown) { - return; - } - - // If callback has JavaScript statement to execute - if (xmlhttp.status === 200) { - - // Need to url decode the response - var msg = decodeURIComponent(xmlhttp.responseText); - setTimeout(function() { - try { - var t = eval(msg); - } - catch (e) { - // If we're getting an error here, seeing the message will help in debugging - console.log("JSCallback: Message from Server: " + msg); - console.log("JSCallback Error: "+e); - } - }, 1); - setTimeout(callback, 1); - } - - // If callback ping (used to keep XHR request from timing out) - else if (xmlhttp.status === 404) { - setTimeout(callback, 10); - } - - // If security error - else if (xmlhttp.status === 403) { - console.log("JSCallback Error: Invalid token. Stopping callbacks."); - } - - // If server is stopping - else if (xmlhttp.status === 503) { - console.log("JSCallback Server Closed: Stopping callbacks."); - } - - // If request wasn't GET - else if (xmlhttp.status === 400) { - console.log("JSCallback Error: Bad request. Stopping callbacks."); - } - - // If error, revert to polling - else { - console.log("JSCallback Error: Request failed."); - cordova.UsePolling = true; - polling(); - } - } - }; - - if (port === null) { - port = prompt("getPort", "gap_callbackServer:"); - } - if (token === null) { - token = prompt("getToken", "gap_callbackServer:"); - } - xmlhttp.open("GET", "http://127.0.0.1:"+port+"/"+token , true); - xmlhttp.send(); -}; - -module.exports = callback; -}); - -// file: lib/android/plugin/android/device.js -define("cordova/plugin/android/device", function(require, exports, module) { -var channel = require('cordova/channel'), - utils = require('cordova/utils'), - exec = require('cordova/exec'); - -/** - * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the - * phone, etc. - * @constructor - */ -function Device() { - this.available = false; - this.platform = null; - this.version = null; - this.name = null; - this.uuid = null; - this.cordova = null; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function(info) { - me.available = true; - me.platform = info.platform; - me.version = info.version; - me.name = info.name; - me.uuid = info.uuid; - me.cordova = info.cordova; - channel.onCordovaInfoReady.fire(); - },function(e) { - me.available = false; - utils.alert("[ERROR] Error initializing Cordova: " + e); - }); - }); -} - -/** - * Get device info - * - * @param {Function} successCallback The function to call when the heading data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL) - */ -Device.prototype.getInfo = function(successCallback, errorCallback) { - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Device Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Device Error: errorCallback is not a function"); - return; - } - - // Get info - exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); -}; - -/* - * DEPRECATED - * This is only for Android. - * - * You must explicitly override the back button. - */ -Device.prototype.overrideBackButton = function() { - console.log("Device.overrideBackButton() is deprecated. Use App.overrideBackbutton(true)."); - navigator.app.overrideBackbutton(true); -}; - -/* - * DEPRECATED - * This is only for Android. - * - * This resets the back button to the default behaviour - */ -Device.prototype.resetBackButton = function() { - console.log("Device.resetBackButton() is deprecated. Use App.overrideBackbutton(false)."); - navigator.app.overrideBackbutton(false); -}; - -/* - * DEPRECATED - * This is only for Android. - * - * This terminates the activity! - */ -Device.prototype.exitApp = function() { - console.log("Device.exitApp() is deprecated. Use App.exitApp()."); - navigator.app.exitApp(); -}; - -module.exports = new Device(); -}); - -// file: lib/android/plugin/android/notification.js -define("cordova/plugin/android/notification", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides Android enhanced notification API. - */ -module.exports = { - activityStart : function(title, message) { - // If title and message not specified then mimic Android behavior of - // using default strings. - if (typeof title === "undefined" && typeof message == "undefined") { - title = "Busy"; - message = 'Please wait...'; - } - - exec(null, null, 'Notification', 'activityStart', [ title, message ]); - }, - - /** - * Close an activity dialog - */ - activityStop : function() { - exec(null, null, 'Notification', 'activityStop', []); - }, - - /** - * Display a progress dialog with progress bar that goes from 0 to 100. - * - * @param {String} - * title Title of the progress dialog. - * @param {String} - * message Message to display in the dialog. - */ - progressStart : function(title, message) { - exec(null, null, 'Notification', 'progressStart', [ title, message ]); - }, - - /** - * Close the progress dialog. - */ - progressStop : function() { - exec(null, null, 'Notification', 'progressStop', []); - }, - - /** - * Set the progress dialog value. - * - * @param {Number} - * value 0-100 - */ - progressValue : function(value) { - exec(null, null, 'Notification', 'progressValue', [ value ]); - } -}; -}); - -// file: lib/android/plugin/android/polling.js -define("cordova/plugin/android/polling", function(require, exports, module) { -var cordova = require('cordova'), - period = 50, - polling = function() { - // Exit if shutting down app - if (cordova.shuttingDown) { - return; - } - - // If polling flag was changed, stop using polling from now on and switch to XHR server / callback - if (!cordova.UsePolling) { - require('cordova/plugin/android/callback')(); - return; - } - - var msg = prompt("", "gap_poll:"); - if (msg) { - setTimeout(function() { - try { - var t = eval(""+msg); - } - catch (e) { - console.log("JSCallbackPolling: Message from Server: " + msg); - console.log("JSCallbackPolling Error: "+e); - } - }, 1); - setTimeout(polling, 1); - } - else { - setTimeout(polling, period); - } -}; - -module.exports = polling; -}); - -// file: lib/android/plugin/android/storage.js -define("cordova/plugin/android/storage", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - channel = require('cordova/channel'); - -var queryQueue = {}; - -/** - * SQL result set object - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Rows = function() { - this.resultSet = []; // results array - this.length = 0; // number of rows -}; - -/** - * Get item from SQL result set - * - * @param row The row number to return - * @return The row object - */ -DroidDB_Rows.prototype.item = function(row) { - return this.resultSet[row]; -}; - -/** - * SQL result set that is returned to user. - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Result = function() { - this.rows = new DroidDB_Rows(); -}; - -/** - * Callback from native code when query is complete. - * PRIVATE METHOD - * - * @param id Query id - */ -function completeQuery(id, data) { - var query = queryQueue[id]; - if (query) { - try { - delete queryQueue[id]; - - // Get transaction - var tx = query.tx; - - // If transaction hasn't failed - // Note: We ignore all query results if previous query - // in the same transaction failed. - if (tx && tx.queryList[id]) { - - // Save query results - var r = new DroidDB_Result(); - r.rows.resultSet = data; - r.rows.length = data.length; - try { - if (typeof query.successCallback === 'function') { - query.successCallback(query.tx, r); - } - } catch (ex) { - console.log("executeSql error calling user success callback: "+ex); - } - - tx.queryComplete(id); - } - } catch (e) { - console.log("executeSql error: "+e); - } - } -} - -/** - * Callback from native code when query fails - * PRIVATE METHOD - * - * @param reason Error message - * @param id Query id - */ -function failQuery(reason, id) { - var query = queryQueue[id]; - if (query) { - try { - delete queryQueue[id]; - - // Get transaction - var tx = query.tx; - - // If transaction hasn't failed - // Note: We ignore all query results if previous query - // in the same transaction failed. - if (tx && tx.queryList[id]) { - tx.queryList = {}; - - try { - if (typeof query.errorCallback === 'function') { - query.errorCallback(query.tx, reason); - } - } catch (ex) { - console.log("executeSql error calling user error callback: "+ex); - } - - tx.queryFailed(id, reason); - } - - } catch (e) { - console.log("executeSql error: "+e); - } - } -} - -/** - * SQL query object - * PRIVATE METHOD - * - * @constructor - * @param tx The transaction object that this query belongs to - */ -var DroidDB_Query = function(tx) { - - // Set the id of the query - this.id = utils.createUUID(); - - // Add this query to the queue - queryQueue[this.id] = this; - - // Init result - this.resultSet = []; - - // Set transaction that this query belongs to - this.tx = tx; - - // Add this query to transaction list - this.tx.queryList[this.id] = this; - - // Callbacks - this.successCallback = null; - this.errorCallback = null; - -}; - -/** - * Transaction object - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Tx = function() { - - // Set the id of the transaction - this.id = utils.createUUID(); - - // Callbacks - this.successCallback = null; - this.errorCallback = null; - - // Query list - this.queryList = {}; -}; - -/** - * Mark query in transaction as complete. - * If all queries are complete, call the user's transaction success callback. - * - * @param id Query id - */ -DroidDB_Tx.prototype.queryComplete = function(id) { - delete this.queryList[id]; - - // If no more outstanding queries, then fire transaction success - if (this.successCallback) { - var count = 0; - var i; - for (i in this.queryList) { - if (this.queryList.hasOwnProperty(i)) { - count++; - } - } - if (count === 0) { - try { - this.successCallback(); - } catch(e) { - console.log("Transaction error calling user success callback: " + e); - } - } - } -}; - -/** - * Mark query in transaction as failed. - * - * @param id Query id - * @param reason Error message - */ -DroidDB_Tx.prototype.queryFailed = function(id, reason) { - - // The sql queries in this transaction have already been run, since - // we really don't have a real transaction implemented in native code. - // However, the user callbacks for the remaining sql queries in transaction - // will not be called. - this.queryList = {}; - - if (this.errorCallback) { - try { - this.errorCallback(reason); - } catch(e) { - console.log("Transaction error calling user error callback: " + e); - } - } -}; - -/** - * Execute SQL statement - * - * @param sql SQL statement to execute - * @param params Statement parameters - * @param successCallback Success callback - * @param errorCallback Error callback - */ -DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) { - - // Init params array - if (typeof params === 'undefined') { - params = []; - } - - // Create query and add to queue - var query = new DroidDB_Query(this); - queryQueue[query.id] = query; - - // Save callbacks - query.successCallback = successCallback; - query.errorCallback = errorCallback; - - // Call native code - exec(null, null, "Storage", "executeSql", [sql, params, query.id]); -}; - -var DatabaseShell = function() { -}; - -/** - * Start a transaction. - * Does not support rollback in event of failure. - * - * @param process {Function} The transaction function - * @param successCallback {Function} - * @param errorCallback {Function} - */ -DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) { - var tx = new DroidDB_Tx(); - tx.successCallback = successCallback; - tx.errorCallback = errorCallback; - try { - process(tx); - } catch (e) { - console.log("Transaction error: "+e); - if (tx.errorCallback) { - try { - tx.errorCallback(e); - } catch (ex) { - console.log("Transaction error calling user error callback: "+e); - } - } - } -}; - -/** - * Open database - * - * @param name Database name - * @param version Database version - * @param display_name Database display name - * @param size Database size in bytes - * @return Database object - */ -var DroidDB_openDatabase = function(name, version, display_name, size) { - exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]); - var db = new DatabaseShell(); - return db; -}; - -/** - * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api. - * TODO: Do similar for sessionStorage. - * @constructor - */ -var CupcakeLocalStorage = function() { - channel.waitForInitialization("cupcakeStorage"); - - try { - - this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440); - var storage = {}; - this.length = 0; - function setLength (length) { - this.length = length; - localStorage.length = length; - } - this.db.transaction( - function (transaction) { - var i; - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('SELECT * FROM storage', [], function(tx, result) { - for(var i = 0; i < result.rows.length; i++) { - storage[result.rows.item(i).id] = result.rows.item(i).body; - } - setLength(result.rows.length); - channel.initializationComplete("cupcakeStorage"); - }); - - }, - function (err) { - utils.alert(err.message); - } - ); - this.setItem = function(key, val) { - if (typeof(storage[key])=='undefined') { - this.length++; - } - storage[key] = val; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]); - } - ); - }; - this.getItem = function(key) { - return storage[key]; - }; - this.removeItem = function(key) { - delete storage[key]; - this.length--; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('DELETE FROM storage where id=?', [key]); - } - ); - }; - this.clear = function() { - storage = {}; - this.length = 0; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('DELETE FROM storage', []); - } - ); - }; - this.key = function(index) { - var i = 0; - for (var j in storage) { - if (i==index) { - return j; - } else { - i++; - } - } - return null; - }; - - } catch(e) { - utils.alert("Database error "+e+"."); - return; - } -}; - -module.exports = { - openDatabase:DroidDB_openDatabase, - CupcakeLocalStorage:CupcakeLocalStorage, - failQuery:failQuery, - completeQuery:completeQuery -}; - -}); - -// file: lib/common/plugin/battery.js -define("cordova/plugin/battery", function(require, exports, module) { -/** - * This class contains information about the current battery status. - * @constructor - */ -var cordova = require('cordova'), - exec = require('cordova/exec'); - -function handlers() { - return battery.channels.batterystatus.numHandlers + - battery.channels.batterylow.numHandlers + - battery.channels.batterycritical.numHandlers; -} - -var Battery = function() { - this._level = null; - this._isPlugged = null; - // Create new event handlers on the window (returns a channel instance) - var subscriptionEvents = { - onSubscribe:this.onSubscribe, - onUnsubscribe:this.onUnsubscribe - }; - this.channels = { - batterystatus:cordova.addWindowEventHandler("batterystatus", subscriptionEvents), - batterylow:cordova.addWindowEventHandler("batterylow", subscriptionEvents), - batterycritical:cordova.addWindowEventHandler("batterycritical", subscriptionEvents) - }; -}; -/** - * Event handlers for when callbacks get registered for the battery. - * Keep track of how many handlers we have so we can start and stop the native battery listener - * appropriately (and hopefully save on battery life!). - */ -Battery.prototype.onSubscribe = function() { - var me = battery; - // If we just registered the first handler, make sure native listener is started. - if (handlers() === 1) { - exec(me._status, me._error, "Battery", "start", []); - } -}; - -Battery.prototype.onUnsubscribe = function() { - var me = battery; - - // If we just unregistered the last handler, make sure native listener is stopped. - if (handlers() === 0) { - exec(null, null, "Battery", "stop", []); - } -}; - -/** - * Callback for battery status - * - * @param {Object} info keys: level, isPlugged - */ -Battery.prototype._status = function(info) { - if (info) { - var me = battery; - var level = info.level; - if (me._level !== level || me._isPlugged !== info.isPlugged) { - // Fire batterystatus event - cordova.fireWindowEvent("batterystatus", info); - - // Fire low battery event - if (level === 20 || level === 5) { - if (level === 20) { - cordova.fireWindowEvent("batterylow", info); - } - else { - cordova.fireWindowEvent("batterycritical", info); - } - } - } - me._level = level; - me._isPlugged = info.isPlugged; - } -}; - -/** - * Error callback for battery start - */ -Battery.prototype._error = function(e) { - console.log("Error initializing Battery: " + e); -}; - -var battery = new Battery(); - -module.exports = battery; -}); - -// file: lib/common/plugin/capture.js -define("cordova/plugin/capture", function(require, exports, module) { -var exec = require('cordova/exec'), - MediaFile = require('cordova/plugin/MediaFile'); - -/** - * Launches a capture of different types. - * - * @param (DOMString} type - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -function _capture(type, successCallback, errorCallback, options) { - var win = function(pluginResult) { - var mediaFiles = []; - var i; - for (i = 0; i < pluginResult.length; i++) { - var mediaFile = new MediaFile(); - mediaFile.name = pluginResult[i].name; - mediaFile.fullPath = pluginResult[i].fullPath; - mediaFile.type = pluginResult[i].type; - mediaFile.lastModifiedDate = pluginResult[i].lastModifiedDate; - mediaFile.size = pluginResult[i].size; - mediaFiles.push(mediaFile); - } - successCallback(mediaFiles); - }; - exec(win, errorCallback, "Capture", type, [options]); -} -/** - * The Capture interface exposes an interface to the camera and microphone of the hosting device. - */ -function Capture() { - this.supportedAudioModes = []; - this.supportedImageModes = []; - this.supportedVideoModes = []; -} - -/** - * Launch audio recorder application for recording audio clip(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureAudioOptions} options - */ -Capture.prototype.captureAudio = function(successCallback, errorCallback, options){ - _capture("captureAudio", successCallback, errorCallback, options); -}; - -/** - * Launch camera application for taking image(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureImageOptions} options - */ -Capture.prototype.captureImage = function(successCallback, errorCallback, options){ - _capture("captureImage", successCallback, errorCallback, options); -}; - -/** - * Launch device camera application for recording video(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -Capture.prototype.captureVideo = function(successCallback, errorCallback, options){ - _capture("captureVideo", successCallback, errorCallback, options); -}; - - -module.exports = new Capture(); - -}); - -// file: lib/common/plugin/compass.js -define("cordova/plugin/compass", function(require, exports, module) { -var exec = require('cordova/exec'), - utils = require('cordova/utils'), - CompassHeading = require('cordova/plugin/CompassHeading'), - CompassError = require('cordova/plugin/CompassError'), - timers = {}, - compass = { - /** - * Asynchronously acquires the current heading. - * @param {Function} successCallback The function to call when the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {CompassOptions} options The options for getting the heading data (not used). - */ - getCurrentHeading:function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var win = function(result) { - var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp); - successCallback(ch); - }; - var fail = function(code) { - var ce = new CompassError(code); - errorCallback(ce); - }; - - // Get heading - exec(win, fail, "Compass", "getHeading", [options]); - }, - - /** - * Asynchronously acquires the heading repeatedly at a given interval. - * @param {Function} successCallback The function to call each time the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {HeadingOptions} options The options for getting the heading data - * such as timeout and the frequency of the watch. For iOS, filter parameter - * specifies to watch via a distance filter rather than time. - */ - watchHeading:function(successCallback, errorCallback, options) { - // Default interval (100 msec) - var frequency = (options !== undefined && options.frequency !== undefined) ? options.frequency : 100; - var filter = (options !== undefined && options.filter !== undefined) ? options.filter : 0; - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var id = utils.createUUID(); - if (filter > 0) { - // is an iOS request for watch by filter, no timer needed - timers[id] = "iOS"; - compass.getCurrentHeading(successCallback, errorCallback, options); - } else { - // Start watch timer to get headings - timers[id] = window.setInterval(function() { - compass.getCurrentHeading(successCallback, errorCallback); - }, frequency); - } - - return id; - }, - - /** - * Clears the specified heading watch. - * @param {String} watchId The ID of the watch returned from #watchHeading. - */ - clearWatch:function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - if (timers[id] != "iOS") { - clearInterval(timers[id]); - } else { - // is iOS watch by filter so call into device to stop - exec(null, null, "Compass", "stopHeading", []); - } - delete timers[id]; - } - } - }; - -module.exports = compass; -}); - -// file: lib/common/plugin/contacts.js -define("cordova/plugin/contacts", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'), - Contact = require('cordova/plugin/Contact'); - -/** -* Represents a group of Contacts. -* @constructor -*/ -var contacts = { - /** - * Returns an array of Contacts matching the search criteria. - * @param fields that should be searched - * @param successCB success callback - * @param errorCB error callback - * @param {ContactFindOptions} options that can be applied to contact searching - * @return array of Contacts matching search criteria - */ - find:function(fields, successCB, errorCB, options) { - if (!successCB) { - throw new TypeError("You must specify a success callback for the find command."); - } - if (!fields || (utils.isArray(fields) && fields.length === 0)) { - if (typeof errorCB === "function") { - errorCB(new ContactError(ContactError.INVALID_ARGUMENT_ERROR)); - } - } else { - var win = function(result) { - var cs = []; - for (var i = 0, l = result.length; i < l; i++) { - cs.push(contacts.create(result[i])); - } - successCB(cs); - }; - exec(win, errorCB, "Contacts", "search", [fields, options]); - } - }, - - /** - * This function creates a new contact, but it does not persist the contact - * to device storage. To persist the contact to device storage, invoke - * contact.save(). - * @param properties an object who's properties will be examined to create a new Contact - * @returns new Contact object - */ - create:function(properties) { - var i; - var contact = new Contact(); - for (i in properties) { - if (typeof contact[i] !== 'undefined' && properties.hasOwnProperty(i)) { - contact[i] = properties[i]; - } - } - return contact; - } -}; - -module.exports = contacts; - -}); - -// file: lib/common/plugin/geolocation.js -define("cordova/plugin/geolocation", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - PositionError = require('cordova/plugin/PositionError'), - Position = require('cordova/plugin/Position'); - -var timers = {}; // list of timers in use - -// Returns default params, overrides if provided with values -function parseParameters(options) { - var opt = { - maximumAge: 10000, - enableHighAccuracy: false, - timeout: 10000 - }; - - if (options) { - if (options.maximumAge !== undefined) { - opt.maximumAge = options.maximumAge; - } - if (options.enableHighAccuracy !== undefined) { - opt.enableHighAccuracy = options.enableHighAccuracy; - } - if (options.timeout !== undefined) { - opt.timeout = options.timeout; - } - } - - return opt; -} - -var geolocation = { - /** - * Asynchronously aquires the current position. - * - * @param {Function} successCallback The function to call when the position data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL) - * @param {PositionOptions} options The options for getting the position data. (OPTIONAL) - */ - getCurrentPosition:function(successCallback, errorCallback, options) { - options = parseParameters(options); - - var win = function(p) { - successCallback(new Position( - { - latitude:p.latitude, - longitude:p.longitude, - altitude:p.altitude, - accuracy:p.accuracy, - heading:p.heading, - velocity:p.velocity, - altitudeAccuracy:p.altitudeAccuracy - }, - p.timestamp || new Date() - )); - }; - var fail = function(e) { - errorCallback(new PositionError(e.code, e.message)); - }; - - exec(win, fail, "Geolocation", "getLocation", [options.enableHighAccuracy, options.timeout, options.maximumAge]); - }, - /** - * Asynchronously watches the geolocation for changes to geolocation. When a change occurs, - * the successCallback is called with the new location. - * - * @param {Function} successCallback The function to call each time the location data is available - * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL) - * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchPosition:function(successCallback, errorCallback, options) { - options = parseParameters(options); - - var id = utils.createUUID(); - timers[id] = window.setInterval(function() { - geolocation.getCurrentPosition(successCallback, errorCallback, options); - }, options.timeout); - - return id; - }, - /** - * Clears the specified heading watch. - * - * @param {String} id The ID of the watch returned from #watchPosition - */ - clearWatch:function(id) { - if (id && timers[id] !== undefined) { - window.clearInterval(timers[id]); - delete timers[id]; - } - } -}; - -module.exports = geolocation; -}); - -// file: lib/common/plugin/network.js -define("cordova/plugin/network", function(require, exports, module) { -var exec = require('cordova/exec'), - cordova = require('cordova'), - channel = require('cordova/channel'); - -var NetworkConnection = function () { - this.type = null; - this._firstRun = true; - this._timer = null; - this.timeout = 500; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function (info) { - me.type = info; - if (info === "none") { - // set a timer if still offline at the end of timer send the offline event - me._timer = setTimeout(function(){ - cordova.fireDocumentEvent("offline"); - me._timer = null; - }, me.timeout); - } else { - // If there is a current offline event pending clear it - if (me._timer !== null) { - clearTimeout(me._timer); - me._timer = null; - } - cordova.fireDocumentEvent("online"); - } - - // should only fire this once - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - }, - function (e) { - // If we can't get the network info we should still tell Cordova - // to fire the deviceready event. - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - console.log("Error initializing Network Connection: " + e); - }); - }); -}; - -/** - * Get connection info - * - * @param {Function} successCallback The function to call when the Connection data is available - * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL) - */ -NetworkConnection.prototype.getInfo = function (successCallback, errorCallback) { - // Get info - exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []); -}; - -module.exports = new NetworkConnection(); -}); - -// file: lib/common/plugin/notification.js -define("cordova/plugin/notification", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides access to notifications on the device. - */ - -module.exports = { - - /** - * Open a native alert dialog, with a customizable title and button text. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} completeCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Alert) - * @param {String} buttonLabel Label of the close button (default: OK) - */ - alert: function(message, completeCallback, title, buttonLabel) { - var _title = (title || "Alert"); - var _buttonLabel = (buttonLabel || "OK"); - exec(completeCallback, null, "Notification", "alert", [message, _title, _buttonLabel]); - }, - - /** - * Open a native confirm dialog, with a customizable title and button text. - * The result that the user selects is returned to the result callback. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} resultCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Confirm) - * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel') - */ - confirm: function(message, resultCallback, title, buttonLabels) { - var _title = (title || "Confirm"); - var _buttonLabels = (buttonLabels || "OK,Cancel"); - exec(resultCallback, null, "Notification", "confirm", [message, _title, _buttonLabels]); - }, - - /** - * Causes the device to vibrate. - * - * @param {Integer} mills The number of milliseconds to vibrate for. - */ - vibrate: function(mills) { - exec(null, null, "Notification", "vibrate", [mills]); - }, - - /** - * Causes the device to beep. - * On Android, the default notification ringtone is played "count" times. - * - * @param {Integer} count The number of beeps. - */ - beep: function(count) { - exec(null, null, "Notification", "beep", [count]); - } -}; -}); - -// file: lib/common/plugin/requestFileSystem.js -define("cordova/plugin/requestFileSystem", function(require, exports, module) { -var FileError = require('cordova/plugin/FileError'), - FileSystem = require('cordova/plugin/FileSystem'), - exec = require('cordova/exec'); - -/** - * Request a file system in which to store application data. - * @param type local file system type - * @param size indicates how much storage space, in bytes, the application expects to need - * @param successCallback invoked with a FileSystem object - * @param errorCallback invoked if error occurs retrieving file system - */ -var requestFileSystem = function(type, size, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - - if (type < 0 || type > 3) { - fail(FileError.SYNTAX_ERR); - } else { - // if successful, return a FileSystem object - var success = function(file_system) { - if (file_system) { - if (typeof successCallback === 'function') { - // grab the name and root from the file system object - var result = new FileSystem(file_system.name, file_system.root); - successCallback(result); - } - } - else { - // no FileSystem object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - exec(success, fail, "File", "requestFileSystem", [type, size]); - } -}; - -module.exports = requestFileSystem; -}); - -// file: lib/common/plugin/resolveLocalFileSystemURI.js -define("cordova/plugin/resolveLocalFileSystemURI", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'), - FileEntry = require('cordova/plugin/FileEntry'), - FileError = require('cordova/plugin/FileError'), - exec = require('cordova/exec'); - -/** - * Look up file system Entry referred to by local URI. - * @param {DOMString} uri URI referring to a local file or directory - * @param successCallback invoked with Entry object corresponding to URI - * @param errorCallback invoked if error occurs retrieving file system entry - */ -module.exports = function(uri, successCallback, errorCallback) { - // error callback - var fail = function(error) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(error)); - } - }; - // if successful, return either a file or directory entry - var success = function(entry) { - var result; - - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - exec(success, fail, "File", "resolveLocalFileSystemURI", [uri]); -}; - -}); - -// file: lib/common/utils.js -define("cordova/utils", function(require, exports, module) { -function UUIDcreatePart(length) { - var uuidpart = ""; - for (var i=0; i -1; //&& ua.indexOf("mobile"); -if(isAndroid) { - console.log = function(string){} -} -ohmage.data = {} - -ohmage.data.init = function(input){ - var out = 'out: ' - ohmage.data.input = input - ohmage.data.weeklyAverages = function(){ - var factor = 9 - var averages = [] - $.each(input.data,function(){ - var date = this['timestamp'].replace(/-/g, " ") - var counts = { - painAccum:0, - painTotal:0, - fatigueAccum:0, - fatigueTotal:0, - sleepAccum:0, - sleepTotal:0, - giAccum:0, - giTotal:0, - focusAccum:0, - focusTotal:1, - funAccum:0, - funTotal:1 - } - var average = { - day:dateFormat(date,'m-dd') - } - $.each(this.responses,function(i,k){ - out += i - var accum = this.prompt_response/ - Object.keys(this.prompt_choice_glossary).length - if(i === 'painInterference'){ - counts.focusAccum += accum - }else if(i === 'phq2_1'){ - counts.funAccum += accum - } - else if(i.indexOf('pain')!=-1 || i.indexOf('Pain')!=-1){ - counts.painTotal++ - if(i === 'briefPainInventory') - counts.painAccum += (1-accum) - else - counts.painAccum += accum - }else if(i.indexOf('sleep')!=-1){ - counts.sleepTotal++ - counts.sleepAccum += accum - } - }) - average.pain = counts.painAccum/counts.painTotal - average.focus = counts.focusAccum/counts.focusTotal - average.fun = counts.funAccum/counts.funTotal - average.sleep = counts.sleepAccum/counts.sleepTotal - average.fatigue = counts.fatigueAccum/counts.fatigueTotal - average.gi = counts.giAccum/counts.giTotal - $.each(average, function(i,k){ - if(i !== 'day') - average[i] = Math.round(this*factor) - }) - averages.push(average) - }) - - return averages - } - - ohmage.data.dailyAverages = function(){ - var factor = 9 - var averages = [] - $.each(input.data,function(){ - var date = this['timestamp'].replace(/-/g, " ") - var counts = { - fatigueAccum:0, - fatigueTotal:0, - giAccum:0, - giTotal:0, - focusAccum:0, - focusTotal:1 - } - var average = { - day:dateFormat(date,'m-dd') - } - $.each(this.responses,function(i,k){ - out += i - var accum = this.prompt_response/ - Object.keys(this.prompt_choice_glossary).length - if(i === 'cognition'){ - focus.focusAccum += accum - }else if(i === 'constiation'){ - counts.giAccum += accum - counts.giTotal ++ - }else if(i === 'drowsiness'){ - counts.fatigueAccum += accum - counts.fatigueTotal ++ - }else if(i === 'fatigue'){ - counts.fatigueAccum += accum - counts.fatigueTotal ++ - }else if(i === 'nausea'){ - counts.giAccum += accum - counts.giTotal ++ - } - }) - average.pain = counts.painAccum/counts.painTotal - average.focus = counts.focusAccum/counts.focusTotal - average.fun = counts.funAccum/counts.funTotal - average.sleep = counts.sleepAccum/counts.sleepTotal - average.fatigue = counts.fatigueAccum/counts.fatigueTotal - average.gi = counts.giAccum/counts.giTotal - $.each(average, function(i,k){ - if(i !== 'day') - average[i] = Math.round(this*factor) - }) - averages.push(average) - }) - return averages - } -}//end init function \ No newline at end of file diff --git a/dashboard/assets/www/js/date.format.js b/dashboard/assets/www/js/date.format.js deleted file mode 100644 index 7a690cd..0000000 --- a/dashboard/assets/www/js/date.format.js +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Date Format 1.2.3 - * (c) 2007-2009 Steven Levithan - * MIT license - * - * Includes enhancements by Scott Trenda - * and Kris Kowal - * - * Accepts a date, a mask, or a date and a mask. - * Returns a formatted version of the given date. - * The date defaults to the current date/time. - * The mask defaults to dateFormat.masks.default. - */ - -var dateFormat = function () { - var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, - timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, - timezoneClip = /[^-+\dA-Z]/g, - pad = function (val, len) { - val = String(val); - len = len || 2; - while (val.length < len) val = "0" + val; - return val; - }; - - // Regexes and supporting functions are cached through closure - return function (date, mask, utc) { - var dF = dateFormat; - - // You can't provide utc if you skip other args (use the "UTC:" mask prefix) - if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { - mask = date; - date = undefined; - } - - // Passing date through Date applies Date.parse, if necessary - date = date ? new Date(date) : new Date; - if (isNaN(date)) throw SyntaxError("invalid date"); - - mask = String(dF.masks[mask] || mask || dF.masks["default"]); - - // Allow setting the utc argument via the mask - if (mask.slice(0, 4) == "UTC:") { - mask = mask.slice(4); - utc = true; - } - - var _ = utc ? "getUTC" : "get", - d = date[_ + "Date"](), - D = date[_ + "Day"](), - m = date[_ + "Month"](), - y = date[_ + "FullYear"](), - H = date[_ + "Hours"](), - M = date[_ + "Minutes"](), - s = date[_ + "Seconds"](), - L = date[_ + "Milliseconds"](), - o = utc ? 0 : date.getTimezoneOffset(), - flags = { - d: d, - dd: pad(d), - ddd: dF.i18n.dayNames[D], - dddd: dF.i18n.dayNames[D + 7], - m: m + 1, - mm: pad(m + 1), - mmm: dF.i18n.monthNames[m], - mmmm: dF.i18n.monthNames[m + 12], - yy: String(y).slice(2), - yyyy: y, - h: H % 12 || 12, - hh: pad(H % 12 || 12), - H: H, - HH: pad(H), - M: M, - MM: pad(M), - s: s, - ss: pad(s), - l: pad(L, 3), - L: pad(L > 99 ? Math.round(L / 10) : L), - t: H < 12 ? "a" : "p", - tt: H < 12 ? "am" : "pm", - T: H < 12 ? "A" : "P", - TT: H < 12 ? "AM" : "PM", - Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), - o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), - S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] - }; - - return mask.replace(token, function ($0) { - return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); - }); - }; -}(); - -// Some common format strings -dateFormat.masks = { - "default": "ddd mmm dd yyyy HH:MM:ss", - shortDate: "m/d/yy", - mediumDate: "mmm d, yyyy", - longDate: "mmmm d, yyyy", - fullDate: "dddd, mmmm d, yyyy", - shortTime: "h:MM TT", - mediumTime: "h:MM:ss TT", - longTime: "h:MM:ss TT Z", - isoDate: "yyyy-mm-dd", - isoTime: "HH:MM:ss", - isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", - isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" -}; - -// Internationalization strings -dateFormat.i18n = { - dayNames: [ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", - "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" - ], - monthNames: [ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" - ] -}; - -// For convenience... -Date.prototype.format = function (mask, utc) { - return dateFormat(this, mask, utc); -}; diff --git a/dashboard/assets/www/js/jquery.1.7.1.min.js b/dashboard/assets/www/js/jquery.1.7.1.min.js deleted file mode 100644 index 198b3ff..0000000 --- a/dashboard/assets/www/js/jquery.1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.gif b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.gif deleted file mode 100644 index fd1a189c21fed1c7ba00c4bb4fad407bd6d1e5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7825 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 LHfkt@K(PD|Q{O_Y diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/ajax-loader.png deleted file mode 100644 index 13b208dddd67f65dc5af0f6ed1a8c8227e458ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a0wlLwsJ_I&z$oqM;uum9_w;IF?hyl?wugZn ztpNtD0YDOrf;3te2XIZbW7)oR^P8_SYp?yv-nGYmvE9_gA%B19b2GLaNg3_ z_+-yZY2(+KQHf2HU!Jj9-t&9+>bzs~jlS-#=2=+ukx#hA^ZPL^_Mm`0`tyuATb22l z&b>I4!eXD~^vRLqR*ki>5trYQwvIK80z885r(&F6c04(_LbHfhwR4B?li$fvEq6NF kG9=9t`9lQN?q%09so1H6%o2#w1BMoZr>mdKI;Vst0DAt0R{#J2 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-18-black.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-18-black.png deleted file mode 100644 index ce1b758ad580663f92c36fb0902afb677ded0b11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1767 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-36-black.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/images/icons-36-black.png deleted file mode 100644 index 1a59d7c375d6611262a9ac86db23eb94570d7319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3611 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 A8~^|S diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.css deleted file mode 100644 index 06dbf8f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.css +++ /dev/null @@ -1,2053 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -/* Swatches */ -/* A ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-a { - border: 1px solid #333 /*{a-bar-border}*/; - background: #111111 /*{a-bar-background-color}*/; - color: #ffffff /*{a-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{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 .ui-link { - color: #7cc4e7 /*{a-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-a .ui-link:hover { - color: #2489CE /*{a-bar-link-hover}*/; -} -.ui-bar-a .ui-link:active { - color: #2489CE /*{a-bar-link-active}*/; -} -.ui-bar-a .ui-link:visited { - color: #2489CE /*{a-bar-link-visited}*/; -} -.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:hover { - color: #2489CE /*{a-body-link-hover}*/; -} -.ui-body-a .ui-link:active { - color: #2489CE /*{a-body-link-active}*/; -} -.ui-body-a .ui-link:visited { - color: #2489CE /*{a-body-link-visited}*/; -} -.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( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); -} -.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: #444444 /*{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( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); -} -.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 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 .ui-link { - color: #ddf0f8 /*{b-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-b .ui-link:hover { - color: #ddf0f8 /*{b-bar-link-hover}*/; -} -.ui-bar-b .ui-link:active { - color: #ddf0f8 /*{b-bar-link-active}*/; -} -.ui-bar-b .ui-link:visited { - color: #ddf0f8 /*{b-bar-link-visited}*/; -} -.ui-body-b, -.ui-overlay-b { - border: 1px solid #999 /*{b-body-border}*/; - background: #f3f3f3 /*{b-body-background-color}*/; - color: #222222 /*{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: #333333 /*{b-body-color}*/; -} -.ui-body-b .ui-link { - color: #2489CE /*{b-body-link-color}*/; - font-weight: bold; -} -.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-body-b .ui-link:visited { - color: #2489CE /*{b-body-link-visited}*/; -} -.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 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 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 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: #eeeeee /*{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 .ui-link { - color: #7cc4e7 /*{c-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-c .ui-link:hover { - color: #2489CE /*{c-bar-link-hover}*/; -} -.ui-bar-c .ui-link:active { - color: #2489CE /*{c-bar-link-active}*/; -} -.ui-bar-c .ui-link:visited { - color: #2489CE /*{c-bar-link-visited}*/; -} -.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: #333333 /*{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( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{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: #333333 /*{c-body-color}*/; -} -.ui-body-c .ui-link { - color: #2489CE /*{c-body-link-color}*/; - font-weight: bold; -} -.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-body-c .ui-link:visited { - color: #2489CE /*{c-body-link-visited}*/; -} -.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}*/ #ffffff /*{c-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); -} -.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}*/ #ffffff /*{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( #f9f9f9 /*{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 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}*/ #ffffff /*{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 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}*/; - 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: #333333 /*{d-bar-color}*/; -} -.ui-bar-d .ui-link { - color: #2489CE /*{d-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-d .ui-link:hover { - color: #2489CE /*{d-bar-link-hover}*/; -} -.ui-bar-d .ui-link:active { - color: #2489CE /*{d-bar-link-active}*/; -} -.ui-bar-d .ui-link:visited { - color: #2489CE /*{d-bar-link-visited}*/; -} -.ui-body-d, -.ui-overlay-d { - border: 1px solid #bbb /*{d-body-border}*/; - color: #333333 /*{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: #ffffff /*{d-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), 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: #333333 /*{d-body-color}*/; -} -.ui-body-d .ui-link { - color: #2489CE /*{d-body-link-color}*/; - font-weight: bold; -} -.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-body-d .ui-link:visited { - color: #2489CE /*{d-body-link-visited}*/; -} -.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), 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 a.ui-link-inherit { - color: #333 /*{d-bup-color}*/; -} -.ui-btn-hover-d { - border: 1px solid #aaa /*{d-bhover-border}*/; - background: #eeeeee /*{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), 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 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}*/ #ffffff /*{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 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}*/; - 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: #333333 /*{e-bar-color}*/; -} -.ui-bar-e .ui-link { - color: #2489CE /*{e-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-e .ui-link:hover { - color: #2489CE /*{e-bar-link-hover}*/; -} -.ui-bar-e .ui-link:active { - color: #2489CE /*{e-bar-link-active}*/; -} -.ui-bar-e .ui-link:visited { - color: #2489CE /*{e-bar-link-visited}*/; -} -.ui-body-e, -.ui-overlay-e { - border: 1px solid #F7C942 /*{e-body-border}*/; - color: #222222 /*{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: #333333 /*{e-body-color}*/; -} -.ui-body-e .ui-link { - color: #2489CE /*{e-body-link-color}*/; - font-weight: bold; -} -.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-body-e .ui-link:visited { - color: #2489CE /*{e-body-link-visited}*/; -} -.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 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 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}*/ #ffffff /*{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 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; -} -/* 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 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 { - opacity: .3; -} -.ui-disabled, -.ui-disabled a { - cursor: default !important; - pointer-events: none; -} -.ui-disabled .ui-btn-text { - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; - filter: alpha(opacity=30); - zoom: 1; -} -/* 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 { - -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; - opacity: .5; - filter: Alpha(Opacity=50); - 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 { - outline: 0; -} -.ui-focus, -.ui-btn: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 { - outline-width: 1px; - outline-style: dotted; -} -/* 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: none; -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%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } -.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } -.ui-loader-verbose { width: 200px; opacity: .88; 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; 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; } -.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-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; -} -.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: 225; -} -@-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;} -/* grid solo: 100 - single item fallback */ -.ui-grid-solo .ui-block-a { width: 100%; float: none; } -/* grid a: 50/50 */ -.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } -.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.333%; } -.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: 25%; } -.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: 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 { - opacity: .9; -} -.ui-page-header-fixed { - padding-top: 2.5em; -} -.ui-page-footer-fixed { - padding-bottom: 3em; -} -.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: -99999em; -} -.ui-header-fixed .ui-btn, -.ui-footer-fixed .ui-btn { - z-index: 10; -} -.ui-navbar { overflow: hidden; } -.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} -.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } -.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } -.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } -.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } -.ui-navbar li .ui-btn { margin-right: -1px; } -.ui-navbar li .ui-btn:last-child { margin-right: 0; } -.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, -.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } -.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } -.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } -/*expanded page styles*/ -.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } -.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } -.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } -.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } -.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } -.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } -.ui-mini { margin: .25em 5px; } -.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } -.ui-btn input, .ui-btn button { z-index: 2; } -.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } -.ui-btn-block { display: block; } -.ui-header .ui-btn, -.ui-footer .ui-btn { display: inline-block; margin: 0; } -.ui-header .ui-btn-inner, -.ui-footer .ui-btn-inner, -.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } -.ui-header .ui-fullsize .ui-btn-inner, -.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } -.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; } -.ui-btn-text { position: relative; z-index: 1; width: 100%; } -.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 { 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 { padding-right: 30px; } -.ui-header .ui-btn-icon-top .ui-btn-inner, -.ui-footer .ui-btn-icon-top .ui-btn-inner, -.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } -.ui-header .ui-btn-icon-bottom .ui-btn-inner, -.ui-footer .ui-btn-icon-bottom .ui-btn-inner, -.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } -/*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: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } -.ui-collapsible { margin: .5em 0; } -.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } -.ui-collapsible-heading a { text-align: left; margin: 0; } -.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 a 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 a span.ui-btn .ui-btn-inner { padding: 10px 0; } -.ui-collapsible-heading a 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 -8px; - padding: 10px 16px; - border-top: none; /* Overrides ui-btn-up-* */ - background-image: none; /* Overrides ui-btn-up-* */ - font-weight: normal; /* Overrides ui-btn-up-* */ -} -.ui-collapsible-content-collapsed { display: none; } -.ui-collapsible-set { margin: .5em 0; } -.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } -.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } -.ui-bar .ui-controlgroup { margin: 0 .3em; } -.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } -.ui-controlgroup-controls { display: block; width: 100%;} -.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-controls label.ui-select { position: absolute; left: -9999px; } -.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } -.ui-controlgroup-horizontal { padding: 0; } -.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } -.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, -.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } -.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } -.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } -/* conflicts with listview.. -.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } -.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } -*/ -@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: 60%; display: inline-block; } - .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } - .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } -} -.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; } -.ui-dialog .ui-header { - margin-top: 15%; - border: none; - overflow: hidden; -} -.ui-dialog .ui-header, -.ui-dialog .ui-content, -.ui-dialog .ui-footer { - display: block; - position: relative; - width: auto; -} -.ui-dialog .ui-header, -.ui-dialog .ui-footer { - z-index: 10; - padding: 0; -} -.ui-dialog .ui-footer { - padding: 0 15px; -} -.ui-dialog .ui-content { - padding: 15px; -} -.ui-dialog { - margin-top: -15px; -} -.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } -.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } -.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:first-child { border-top-width: 0; } -.ui-header .ui-field-contain-left, -.ui-header .ui-field-contain-right { - position: absolute; - top: 0; - width: 25%; -} -.ui-header .ui-field-contain-left { - left: 1em; -} -.ui-header .ui-field-contain-right { - right: 1em; -} -@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; 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: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } -.ui-select .ui-disabled { opacity: .3; } -@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} -.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } -.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } -/* 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 { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } -.ui-selectmenu .ui-listview { margin: 0; } -.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } -.ui-selectmenu-hidden { top: -9999px; left: -9999px; } -.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } -.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 .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: 60%; display: inline-block; } -} -/* 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; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } -.ui-header input.ui-input-text, -.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ - 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; background-image: none; position: relative; } -.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; } -/* orientation adjustments - incomplete!*/ -@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: 60%; display: inline-block; } - .ui-field-contain .ui-input-search { width: 50%; } - .ui-hide-label input.ui-input-text, - .ui-hide-label textarea.ui-input-text, - .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } - .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } -} -.ui-listview { margin: 0; counter-reset: listnumbering; } -.ui-content .ui-listview { margin: -15px; } -.ui-content .ui-listview-inset { margin: 1em 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-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } -.ui-li-divider { counter-reset: listnumbering; } -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-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } -.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 .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 { padding-right: 45px; } -.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } -.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-has-count .ui-btn-text { padding-right: 15px; } -.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: 40px; max-width: 40px; 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: 95px; } -.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } -.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } -.ui-li-has-alt .ui-li-count { right: 55px; } -.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: -11px 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-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-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } -.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } -.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; } -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; } -div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } -.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } -a.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; } -@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-top: 1px; } -.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; } diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.min.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.min.css deleted file mode 100644 index 6470450..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile-1.1.0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Mobile v1.1.0 db342b1f315c282692791aa870455901fdb46a55 jquerymobile.com | jquery.org/license */ -.ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.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}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 1px #111;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.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}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 1px 1px #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.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}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.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}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.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}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.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}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f9f9f9,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.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}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.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}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.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}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.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}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 1px 1px #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5));background-image:-webkit-linear-gradient(#5393c5,#6facd5);background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);background-image:linear-gradient(#5393c5,#6facd5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-disabled .ui-btn-text{-ms-filter:"alpha(opacity=30)";filter:alpha(opacity=30);zoom:1}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@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)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.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%}.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%}.ui-checkbox .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}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.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}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus{outline:0}.ui-focus,.ui-btn:focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus{outline-width:1px;outline-style:dotted}.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}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.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}.ui-page{outline:0}@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}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;box-shadow:0 1px 1px -1px #fff;left:50%;border:0}.ui-loader-default{background:0;opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;opacity:.88;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;opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.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}.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}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.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:225}@-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}}@-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)}}@-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}.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%)}}.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%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-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)}}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0 0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0 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{-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)}}.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}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.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:25%}.ui-grid-c .ui-block-a{clear:left}.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:20%}.ui-grid-d .ui-block-a{clear:left}.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{opacity:.9}.ui-page-header-fixed{padding-top:2.5em}.ui-page-footer-fixed{padding-bottom:3em}.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:-99999em}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0;max-width:100%}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-mini{margin:.25em 5px}.ui-btn-inner{padding:.6em 20px;min-width:.75em;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block}.ui-btn-block{display:block}.ui-header .ui-btn,.ui-footer .ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-header .ui-fullsize .ui-btn-inner,.ui-footer .ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 25px}.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}.ui-btn-text{position:relative;z-index:1;width:100%}.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{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{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em 3px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px 3px}.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}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;text-indent:-9999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.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 a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:0 0 .5em;zoom:1}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .4em}.ui-controlgroup-controls{display:block;width:100%}.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-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -6px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;clear:none;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{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:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px auto;padding:0}.ui-dialog .ui-header{margin-top:15%;border:0;overflow:hidden}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{display:block;position:relative;width:auto}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;padding:0}.ui-dialog .ui-footer{padding:0 15px}.ui-dialog .ui-content{padding:15px}.ui-dialog{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.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}.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:first-child{border-top-width:0}.ui-header .ui-field-contain-left,.ui-header .ui-field-contain-right{position:absolute;top:0;width:25%}.ui-header .ui-field-contain-left{left:1em}.ui-header .ui-field-contain-right{right:1em}@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;margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.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 .ui-title{margin:.6em 46px .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:60%;display:inline-block}}.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;line-height:1.4;font-size:16px;display:block;width:97%;outline:0}.ui-header input.ui-input-text,.ui-footer input.ui-input-text{margin-left:1.25%;padding:.4em 1%;width:95.5%}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;background-image:none;position:relative}.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:0;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:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 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-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}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}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.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 .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{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.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-has-count .ui-btn-text{padding-right:15px}.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:40px;max-width:40px;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:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:48px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.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:-11px 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-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@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}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}div.ui-slider-bg{border:0;height:100%;padding-right:8px}.ui-controlgroup a.ui-slider-handle,a.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;outline:0}a.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}@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-top:1px}.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} \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.css deleted file mode 100644 index 8822687..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.css +++ /dev/null @@ -1,946 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ - -.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; } -.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -body.ui-mobile-viewport, -div.ui-mobile-viewport { overflow-x: hidden; } -.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; } -.ui-page { outline: none; } -@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; } -} -.ui-loading .ui-loader { display: block; } -.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } -.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } -.ui-loader-verbose { width: 200px; opacity: .88; 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; opacity: .75; } -.ui-loader-textonly { padding: 15px; margin-left: -115px; } -.ui-loader-textonly .ui-icon { display: none; } -.ui-loader-fakefix { position: absolute; } -.ui-mobile-rendering > * { visibility: hidden; } -.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; } -.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; } -.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } -.ui-icon { width: 18px; height: 18px; } -.ui-nojs { position: absolute; left: -9999px; } -.ui-hide-label label, -.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-mobile-viewport-transitioning, -.ui-mobile-viewport-transitioning .ui-page { - width: 100%; - height: 100%; - overflow: hidden; -} -.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: 225; -} -@-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; - } -} -@-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); } -} -@-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; -} -.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%); } -} -.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%); } -} -.viewport-flip { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.flip { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); - -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); } -} -.viewport-turn { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.turn { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); - -webkit-transform-origin: 0; - - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); - -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 { - -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); } -} -.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;} -.ui-grid-solo .ui-block-a { width: 100%; float: none; } -.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } -.ui-grid-a .ui-block-a { clear: left; } -.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } -.ui-grid-b .ui-block-a { clear: left; } -.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: 25%; } -.ui-grid-c .ui-block-a { clear: left; } -.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: 20%; } -.ui-grid-d .ui-block-a { clear: left; } -.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 { - opacity: .9; -} -.ui-page-header-fixed { - padding-top: 2.5em; -} -.ui-page-footer-fixed { - padding-bottom: 3em; -} -.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: -99999em; -} -.ui-header-fixed .ui-btn, -.ui-footer-fixed .ui-btn { - z-index: 10; -} -.ui-navbar { overflow: hidden; } -.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} -.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } -.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } -.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } -.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } -.ui-navbar li .ui-btn { margin-right: -1px; } -.ui-navbar li .ui-btn:last-child { margin-right: 0; } -.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, -.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } -.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } -.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } -.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } -.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } -.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } -.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } -.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } -.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } -.ui-mini { margin: .25em 5px; } -.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } -.ui-btn input, .ui-btn button { z-index: 2; } -.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } -.ui-btn-block { display: block; } -.ui-header .ui-btn, -.ui-footer .ui-btn { display: inline-block; margin: 0; } -.ui-header .ui-btn-inner, -.ui-footer .ui-btn-inner, -.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } -.ui-header .ui-fullsize .ui-btn-inner, -.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } -.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; } -.ui-btn-text { position: relative; z-index: 1; width: 100%; } -.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 { 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 { padding-right: 30px; } -.ui-header .ui-btn-icon-top .ui-btn-inner, -.ui-footer .ui-btn-icon-top .ui-btn-inner, -.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } -.ui-header .ui-btn-icon-bottom .ui-btn-inner, -.ui-footer .ui-btn-icon-bottom .ui-btn-inner, -.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } -.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; } -.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } -.ui-collapsible { margin: .5em 0; } -.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } -.ui-collapsible-heading a { text-align: left; margin: 0; } -.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 a 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 a span.ui-btn .ui-btn-inner { padding: 10px 0; } -.ui-collapsible-heading a 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 -8px; - padding: 10px 16px; - border-top: none; - background-image: none; - font-weight: normal; -} -.ui-collapsible-content-collapsed { display: none; } -.ui-collapsible-set { margin: .5em 0; } -.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } -.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } -.ui-bar .ui-controlgroup { margin: 0 .3em; } -.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } -.ui-controlgroup-controls { display: block; width: 100%;} -.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-controls label.ui-select { position: absolute; left: -9999px; } -.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } -.ui-controlgroup-horizontal { padding: 0; } -.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } -.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, -.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } -.ui-controlgroup-horizontal .ui-controlgroup-last { 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: 60%; display: inline-block; } - .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } - .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } -} -.ui-dialog { - background: none !important; -} -.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } -.ui-dialog .ui-header { - margin-top: 15%; - border: none; - overflow: hidden; -} -.ui-dialog .ui-header, -.ui-dialog .ui-content, -.ui-dialog .ui-footer { - display: block; - position: relative; - width: auto; -} -.ui-dialog .ui-header, -.ui-dialog .ui-footer { - z-index: 10; - padding: 0; -} -.ui-dialog .ui-footer { - padding: 0 15px; -} -.ui-dialog .ui-content { - padding: 15px; -} -.ui-dialog { - margin-top: -15px; -} -.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } -.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } -.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; } -.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:first-child { border-top-width: 0; } -.ui-header .ui-field-contain-left, -.ui-header .ui-field-contain-right { - position: absolute; - top: 0; - width: 25%; -} -.ui-header .ui-field-contain-left { - left: 1em; -} -.ui-header .ui-field-contain-right { - right: 1em; -} -@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; margin: 0; } -.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } -.ui-select .ui-disabled { opacity: .3; } -@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} -.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } -.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } -label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; - } -.ui-select .ui-btn-text { text-overflow: ellipsis; } -.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } -.ui-selectmenu .ui-listview { margin: 0; } -.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } -.ui-selectmenu-hidden { top: -9999px; left: -9999px; } -.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } -.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 .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: 60%; display: inline-block; } -} -.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; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } -.ui-header input.ui-input-text, -.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } - 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; background-image: none; position: relative; } -.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: 60%; display: inline-block; } - .ui-field-contain .ui-input-search { width: 50%; } - .ui-hide-label input.ui-input-text, - .ui-hide-label textarea.ui-input-text, - .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } - .ui-input-search input.ui-input-text { width: 98%; } -} -.ui-listview { margin: 0; counter-reset: listnumbering; } -.ui-content .ui-listview { margin: -15px; } -.ui-content .ui-listview-inset { margin: 1em 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-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } -.ui-li-divider { counter-reset: listnumbering; } -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; } -.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } -.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } -.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 .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 { padding-right: 45px; } -.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } -.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-has-count .ui-btn-text { padding-right: 15px; } -.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: 40px; max-width: 40px; 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: 95px; } -.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } -.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } -.ui-li-has-alt .ui-li-count { right: 55px; } -.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: -11px 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-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-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } -.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } -.ui-li.ui-screen-hidden{display:none;} -@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; } -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; } -div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } -.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } -a.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; } -@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-top: 1px; } -.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; } diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.min.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.min.css deleted file mode 100644 index f48051f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.structure-1.1.0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Mobile v1.1.0 db342b1f315c282692791aa870455901fdb46a55 jquerymobile.com | jquery.org/license */ -.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}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.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}.ui-page{outline:0}@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}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;box-shadow:0 1px 1px -1px #fff;left:50%;border:0}.ui-loader-default{background:0;opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;opacity:.88;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;opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.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}.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}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.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:225}@-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}}@-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)}}@-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}.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%)}}.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%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-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)}}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0 0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0 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{-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)}}.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}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.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:25%}.ui-grid-c .ui-block-a{clear:left}.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:20%}.ui-grid-d .ui-block-a{clear:left}.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{opacity:.9}.ui-page-header-fixed{padding-top:2.5em}.ui-page-footer-fixed{padding-bottom:3em}.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:-99999em}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0;max-width:100%}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-mini{margin:.25em 5px}.ui-btn-inner{padding:.6em 20px;min-width:.75em;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block}.ui-btn-block{display:block}.ui-header .ui-btn,.ui-footer .ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-header .ui-fullsize .ui-btn-inner,.ui-footer .ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 25px}.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}.ui-btn-text{position:relative;z-index:1;width:100%}.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{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{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em 3px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px 3px}.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}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;text-indent:-9999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.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 a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:0 0 .5em;zoom:1}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .4em}.ui-controlgroup-controls{display:block;width:100%}.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-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -6px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;clear:none;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{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:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px auto;padding:0}.ui-dialog .ui-header{margin-top:15%;border:0;overflow:hidden}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{display:block;position:relative;width:auto}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;padding:0}.ui-dialog .ui-footer{padding:0 15px}.ui-dialog .ui-content{padding:15px}.ui-dialog{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.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}.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:first-child{border-top-width:0}.ui-header .ui-field-contain-left,.ui-header .ui-field-contain-right{position:absolute;top:0;width:25%}.ui-header .ui-field-contain-left{left:1em}.ui-header .ui-field-contain-right{right:1em}@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;margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.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 .ui-title{margin:.6em 46px .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:60%;display:inline-block}}.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;line-height:1.4;font-size:16px;display:block;width:97%;outline:0}.ui-header input.ui-input-text,.ui-footer input.ui-input-text{margin-left:1.25%;padding:.4em 1%;width:95.5%}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;background-image:none;position:relative}.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:0;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:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 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-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}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}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.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 .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{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.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-has-count .ui-btn-text{padding-right:15px}.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:40px;max-width:40px;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:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:48px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.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:-11px 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-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@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}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}div.ui-slider-bg{border:0;height:100%;padding-right:8px}.ui-controlgroup a.ui-slider-handle,a.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;outline:0}a.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}@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-top:1px}.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} \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.css deleted file mode 100644 index b5c1611..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.css +++ /dev/null @@ -1,1167 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -/* Swatches */ - -/* A ------------------------------------------------------------------------------------------------------------*/ - -.ui-bar-a { - border: 1px solid #333 /*{a-bar-border}*/; - background: #111111 /*{a-bar-background-color}*/; - color: #ffffff /*{a-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{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 .ui-link { - color: #7cc4e7 /*{a-bar-link-color}*/; - font-weight: bold; -} - -.ui-bar-a .ui-link:hover { - color: #2489CE /*{a-bar-link-hover}*/; -} - -.ui-bar-a .ui-link:active { - color: #2489CE /*{a-bar-link-active}*/; -} - -.ui-bar-a .ui-link:visited { - color: #2489CE /*{a-bar-link-visited}*/; -} -.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:hover { - color: #2489CE /*{a-body-link-hover}*/; -} - -.ui-body-a .ui-link:active { - color: #2489CE /*{a-body-link-active}*/; -} - -.ui-body-a .ui-link:visited { - color: #2489CE /*{a-body-link-visited}*/; -} - -.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( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); -} -.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: #444444 /*{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( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); -} -.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 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 .ui-link { - color: #ddf0f8 /*{b-bar-link-color}*/; - font-weight: bold; -} - -.ui-bar-b .ui-link:hover { - color: #ddf0f8 /*{b-bar-link-hover}*/; -} - -.ui-bar-b .ui-link:active { - color: #ddf0f8 /*{b-bar-link-active}*/; -} - -.ui-bar-b .ui-link:visited { - color: #ddf0f8 /*{b-bar-link-visited}*/; -} -.ui-body-b, -.ui-overlay-b { - border: 1px solid #999 /*{b-body-border}*/; - background: #f3f3f3 /*{b-body-background-color}*/; - color: #222222 /*{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: #333333 /*{b-body-color}*/; -} - -.ui-body-b .ui-link { - color: #2489CE /*{b-body-link-color}*/; - font-weight: bold; -} - -.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-body-b .ui-link:visited { - color: #2489CE /*{b-body-link-visited}*/; -} - -.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 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 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 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: #eeeeee /*{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 .ui-link { - color: #7cc4e7 /*{c-bar-link-color}*/; - font-weight: bold; -} - -.ui-bar-c .ui-link:hover { - color: #2489CE /*{c-bar-link-hover}*/; -} - -.ui-bar-c .ui-link:active { - color: #2489CE /*{c-bar-link-active}*/; -} - -.ui-bar-c .ui-link:visited { - color: #2489CE /*{c-bar-link-visited}*/; -} - -.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: #333333 /*{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( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{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: #333333 /*{c-body-color}*/; -} - -.ui-body-c .ui-link { - color: #2489CE /*{c-body-link-color}*/; - font-weight: bold; -} - -.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-body-c .ui-link:visited { - color: #2489CE /*{c-body-link-visited}*/; -} - -.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}*/ #ffffff /*{c-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); -} -.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}*/ #ffffff /*{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( #f9f9f9 /*{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 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}*/ #ffffff /*{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 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}*/; - 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: #333333 /*{d-bar-color}*/; -} -.ui-bar-d .ui-link { - color: #2489CE /*{d-bar-link-color}*/; - font-weight: bold; -} - -.ui-bar-d .ui-link:hover { - color: #2489CE /*{d-bar-link-hover}*/; -} - -.ui-bar-d .ui-link:active { - color: #2489CE /*{d-bar-link-active}*/; -} - -.ui-bar-d .ui-link:visited { - color: #2489CE /*{d-bar-link-visited}*/; -} - -.ui-body-d, -.ui-overlay-d { - border: 1px solid #bbb /*{d-body-border}*/; - color: #333333 /*{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: #ffffff /*{d-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), 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: #333333 /*{d-body-color}*/; -} - -.ui-body-d .ui-link { - color: #2489CE /*{d-body-link-color}*/; - font-weight: bold; -} - -.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-body-d .ui-link:visited { - color: #2489CE /*{d-body-link-visited}*/; -} - -.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), 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 a.ui-link-inherit { - color: #333 /*{d-bup-color}*/; -} -.ui-btn-hover-d { - border: 1px solid #aaa /*{d-bhover-border}*/; - background: #eeeeee /*{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), 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 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}*/ #ffffff /*{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 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}*/; - 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: #333333 /*{e-bar-color}*/; -} -.ui-bar-e .ui-link { - color: #2489CE /*{e-bar-link-color}*/; - font-weight: bold; -} - -.ui-bar-e .ui-link:hover { - color: #2489CE /*{e-bar-link-hover}*/; -} - -.ui-bar-e .ui-link:active { - color: #2489CE /*{e-bar-link-active}*/; -} - -.ui-bar-e .ui-link:visited { - color: #2489CE /*{e-bar-link-visited}*/; -} - -.ui-body-e, -.ui-overlay-e { - border: 1px solid #F7C942 /*{e-body-border}*/; - color: #222222 /*{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: #333333 /*{e-body-color}*/; -} - -.ui-body-e .ui-link { - color: #2489CE /*{e-body-link-color}*/; - font-weight: bold; -} - -.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-body-e .ui-link:visited { - color: #2489CE /*{e-body-link-visited}*/; -} - -.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 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 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}*/ #ffffff /*{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 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; -} - -/* 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 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 { - opacity: .3; -} -.ui-disabled, -.ui-disabled a { - cursor: default !important; - pointer-events: none; -} -.ui-disabled .ui-btn-text { - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; - filter: alpha(opacity=30); - zoom: 1; -} - -/* 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 { - -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; - opacity: .5; - filter: Alpha(Opacity=50); - 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 { - outline: 0; -} - -.ui-focus, -.ui-btn: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 { - outline-width: 1px; - outline-style: dotted; -} diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.min.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.min.css deleted file mode 100644 index bc2ac09..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/css/themes/default/jquery.mobile.theme-1.1.0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Mobile v1.1.0 db342b1f315c282692791aa870455901fdb46a55 jquerymobile.com | jquery.org/license */ -.ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.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}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 1px #111;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.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}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 1px 1px #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.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}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.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}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.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}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.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}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f9f9f9,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.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}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.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}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.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}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.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}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 1px 1px #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5));background-image:-webkit-linear-gradient(#5393c5,#6facd5);background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);background-image:linear-gradient(#5393c5,#6facd5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-disabled .ui-btn-text{-ms-filter:"alpha(opacity=30)";filter:alpha(opacity=30);zoom:1}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@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)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.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%}.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%}.ui-checkbox .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}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.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}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus{outline:0}.ui-focus,.ui-btn:focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus{outline-width:1px;outline-style:dotted} \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/css/jqm-docs.css b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/css/jqm-docs.css deleted file mode 100644 index 168a21c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/css/jqm-docs.css +++ /dev/null @@ -1,359 +0,0 @@ -/* jqm docs css - -Beware: lots of last-minute CSS going on in here -cobblers, shoes, -*/ - -body { background: #dddddd; } -.ui-mobile .type-home .ui-content { margin: 0; background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -.ui-mobile #jqm-homeheader { padding: 40px 10px 0; text-align: center; margin: 0 auto; } -.ui-mobile #jqm-homeheader h1 { margin: 0 0 ; } -.ui-mobile #jqm-homeheader p { margin: .3em 0 0; line-height: 1.3; font-size: .9em; font-weight: bold; color: #666; } -.ui-mobile #jqm-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; z-index: 50; top: -11px; right: 0; } -.ui-mobile .jqm-themeswitcher { margin: 10px 25px 10px 10px; } - -h2 { margin:1.2em 0 .4em 0; } -p code { font-size:1.2em; font-weight:bold; } -h4 code {font-size:1.2em; font-weight:bold; } - -dt { font-weight: bold; margin: 2em 0 .5em; } -dt code, dd code { font-size:1.3em; line-height:150%; } -pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } - -#jqm-homeheader img { width: 235px; } -img { max-width: 100%; } - -/* fluid images moved from jquery.mobile.core.css*/ -.ui-mobile img { - max-width: 100%; -} - -.ui-header .jqm-home { top: 0; } -nav { margin: 0; } - - - -p.intro { - font-size: .96em; - line-height: 1.3; - border-top: 1px solid #75ae18; - border-bottom: 0; - background: none; - margin: 1.5em 0; - padding: 1.5em 15px 0; - -} -p.intro strong { - color: #558e08; -} -.footer-docs { - padding: 5px 0; -} -.footer-docs p { - margin-left:15px; - font-weight: normal; - font-size: .9em; -} - -.type-interior .content-secondary { - border-right: 0; - border-left: 0; - margin: 10px -15px 0; - background: #fff; - border-top: 1px solid #ccc; -} -.type-home .ui-content { - margin-top: 5px; -} -.type-interior .ui-content { - padding-bottom: 0; -} -.content-secondary .ui-collapsible { - padding: 0 15px 10px; - -} -.content-secondary .ui-collapsible-content { - padding: 0; - background: none; - border-bottom: none; -} -.content-secondary .ui-listview { - margin: 0; -} -/* new API additions */ - -dt { - margin: 35px 0 15px 0; - background-color:#ddd; - font-weight:normal; -} -dt code { - display:inline-block; - font-weight:bold; - color:#56A00E; - padding:3px 7px; - margin-right:10px; - background-color:#fff; -} -dd { - margin-bottom:10px; -} -dd .default { font-weight:bold; } -dd pre { - margin:0 0 0 0; -} -dd code { font-weight: normal; } -dd pre code { - margin:0; - border:none; - font-weight:normal; - font-size:100%; - background-color:transparent; -} -dd h4 { margin:15px 0 0 0; } - -.localnav { - margin:0 0 20px 0; - overflow:hidden; -} -.localnav li { - float:left; -} -.localnav .ui-btn-inner { - padding: .6em 10px; - font-size:80%; -} - -/* custom dialog for the photos sharing */ -.ui-dialog.dialog-actionsheet .ui-dialog-contain { - margin-top: 0; -} - - - -/* F bar theme - just for the docs overview headers */ -.ui-bar-f { - border: 1px solid #56A00E; - background: #74b042; - color: #fff; - font-weight: bold; - text-shadow: 0 1px 1px #335413; - background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */ - background-image: -ms-linear-gradient(#74b042, #56A00E); /* IE10 */ - background-image: -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */ - background-image: linear-gradient(#74b042, #56A00E); -} -.ui-bar-f, -.ui-bar-f input, -.ui-bar-f select, -.ui-bar-f textarea, -.ui-bar-f button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} - -.ui-bar-f, -.ui-bar-f .ui-link-inherit { - color: #fff; -} -.ui-bar-f .ui-link { - color: #fff; - font-weight: bold; -} -.ui-btn-up-f { - border: 1px solid #3B6F07; - background: #56A00E; - font-weight: bold; - color: #fff; - text-shadow: 0 1px 1px #234403; - background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */ - background-image: -ms-linear-gradient(#74b042, #56A00E); /* IE10 */ - background-image: -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */ - background-image: linear-gradient(#74b042, #56A00E); -} -.ui-btn-up-f a.ui-link-inherit { - color: #fff; -} -.ui-btn-hover-f { - border: 1px solid #3B6F07; - background: #6EBC1F; - font-weight: bold; - color: #fff; - text-shadow: 0 1px 1px #234403; - background-image: -webkit-gradient(linear, left top, left bottom, from(#8FC963), to(#6EBC1F)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient(#8FC963, #6EBC1F); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient(#8FC963, #6EBC1F); /* FF3.6 */ - background-image: -ms-linear-gradient(#8FC963, #6EBC1F); /* IE10 */ - background-image: -o-linear-gradient(#8FC963, #6EBC1F); /* Opera 11.10+ */ - background-image: linear-gradient(#8FC963, #6EBC1F); -} -.ui-btn-hover-f a.ui-link-inherit { - color: #fff; -} -.ui-btn-down-f { - border: 1px solid #3B6F07; - background: #3d3d3d; - font-weight: bold; - color: #fff; - text-shadow: 0 1px 1px #234403; - background-image: -webkit-gradient(linear, left top, left bottom, from(#56A00E), to(#64A234)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient(#56A00E, #64A234); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient(#56A00E, #64A234); /* FF3.6 */ - background-image: -ms-linear-gradient(#56A00E, #64A234); /* IE10 */ - background-image: -o-linear-gradient(#56A00E, #64A234); /* Opera 11.10+ */ - background-image: linear-gradient(#56A00E, #64A234); -} -.ui-btn-down-f a.ui-link-inherit { - color: #fff; -} -.ui-btn-up-f, -.ui-btn-hover-f, -.ui-btn-down-f { - font-family: Helvetica, Arial, sans-serif; - text-decoration: none; -} - - - - -/* docs site layout */ - -@media all and (min-width: 650px){ - - - .type-home .ui-content { - margin-top: 5px; - } - .ui-mobile #jqm-homeheader { - max-width: 340px; - } - .ui-mobile .jqm-themeswitcher { - float: right; - } - p.intro { - margin: 2em 0; - } - .type-home .ui-content, - .type-interior .ui-content { - padding: 0; - background: url(../images/px-ccc.gif) 50% 0 repeat-y; - } - .type-interior .ui-content { - background-position: 45%; - overflow: hidden; - } - .content-secondary { - text-align: left; - float: left; - width: 45%; - background: none; - } - .content-secondary, - .type-interior .content-secondary { - margin: 30px 0 20px 2%; - padding: 20px 4% 0 0; - background: none; - border-top: none; - } - .type-index .content-secondary { - padding: 0; - } - .content-secondary .ui-collapsible { - margin: 0; - padding: 0; - } - .content-secondary .ui-collapsible-content { - border: none; - } - .type-index .content-secondary .ui-listview { - margin: 0; - } - - .ui-mobile #jqm-homeheader { - padding: 0; - } - .content-primary { - width: 45%; - float: right; - margin-top: 30px; - margin-right: 1%; - padding-right: 1%; - } - .content-primary ul:first-child { - margin-top: 0; - } - .content-secondary h2 { - position: absolute; - left: -9999px; - } - .type-interior .content-primary { - padding: 1.5em 6% 3em 0; - margin: 0; - } - /* fix up the collapsibles - expanded on desktop */ - .content-secondary .ui-collapsible-heading { - display: none; - } - .content-secondary .ui-collapsible-contain { - margin:0; - } - .content-secondary .ui-collapsible-content { - display: block; - margin: 0; - padding: 0; - } - .type-interior .content-secondary .ui-li-divider { - padding-top: 1em; - padding-bottom: 1em; - } - .type-interior .content-secondary { - margin: 0; - padding: 0; - } - -} -@media all and (min-width: 750px){ - .type-home .ui-content, - .type-interior .ui-content { - background-position: 39%; - } - .content-secondary { - width: 34%; - } - .content-primary { - width: 56%; - padding-right: 1%; - } - .type-interior .ui-content { - background-position: 34%; - } -} - -@media all and (min-width: 1200px){ - .type-home .ui-content{ - background-position: 38.5%; - } - .type-interior .ui-content { - background-position: 30%; - } - .content-secondary { - width: 30%; - padding-right:6%; - margin: 30px 0 20px 5%; - } - .type-interior .content-secondary { - margin: 0; - padding: 0; - } - .content-primary { - width: 50%; - margin-right: 5%; - padding-right: 3%; - } - .type-interior .content-primary { - width: 60%; - } -} \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/ios_icon.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/ios_icon.png deleted file mode 100644 index 16b71459f8399b1b65d3048d427dc10d52c5fb69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1861 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 T-L(K143d*le)HqCQNaHIZlB*T diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jqm-sitebg.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jqm-sitebg.png deleted file mode 100644 index 4e30404ab282d95cd052e95c61f210ab11cc248b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9698 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jquery-logo.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/jquery-logo.png deleted file mode 100644 index 4958ead00dd33e8c16ead19eb524326105b3ea22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3790 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 Ef-XiLwg3PC diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/mobile-devices.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/mobile-devices.png deleted file mode 100644 index a6dcb9a134a9776f34ebf1622b41ab9f8e4db071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54174 zcmdS9Wmp?g_b-Zjf#Obaceha7U5e8dFD}JNa4Aq6iWdsBK!M^;aHmixUI-~(EO>yB zT;B8E^MCIBa=xGS%w+bg`OWg#nZ5TU8R~01BcLNdLqmI}rKxI+hK3&gv|r+3K5-}@ z=GRXLOn+r9Q#?Gpb*RDC(;1qfuBjU8f6?vj?b+Gc-rnBkCS-AGskOB&AT;CM>FLptktg|2?f)`s>%JSC82{HWfByh?cXwxJ=O@?`KQ=ZtJS^-<{*!r6 zcv)GQC+3sJC;pSQDAesO67>kbzkxrsZf`Hot}pJNY&$-?KR(|^U8U|FpP^2I{vOZ% z-M@Q^z|uw8`t})W$Nb41$mZhW=FZ_pD|{^#x$1-Zqcsm{nqP(>mhGRcLaiu`Z+srv z%s5~4A6VEz&5QlV?3th4OK~G(Gf(z+PnFa!>$Z(7^$w2I{&al`MScHj`5L_w@i*mBFV{%)Q^NN6#B3?P8*=Zj=GkX)$vVm!J@5}L1Qd0brzQ-n{mM2IS z#u+|E&*4LRbbNSdd`b{7&N>V2Dad-Ut#3eIo@(PM1^OZ1UHn0=Pc5H!Krhv&jJSHd zfBWv;Q(jCQd;+Zv-`d&K8ZcVgI$K#=>07{SzA#>N?h4cRZd1uR_Q5~0&?miG7@59VsfHFVxqEKB8oi1f?~Yl z!hGC3JUrYyA}qWd0xZld{~;b0`WLLU)Ks)=w6rv&w3JT;Oh!U0jDv|w%=rJQWQP9~ z8wTlr>sj{DvE)C69bl|)g7*CXPpto&p45wpss6uY_C!xUIy(mi1tmVwQ;_q!|3gpN z{|{}Po}T`%y8FNGXKG+)@hK|!KAM*PXlR6F|Jl*!H-LyICRKo%MSzN*)0+S{Z?6}o zZk|qPA|gWn*@O?qvNoR(4F5rxcsmCKz43EGQ*!iv>-0k1&Ce;w+t1zqg^G!UZ|k-s z8rlmqEmbAc;G*N+2p{_Wh_gb@+X@*mh5Z)2P?!0i6-janihf~Sv|L=NS))k{v<7F| zTbb!Z6V`5D)^dAt1!7pM;$P$He>Y*U`f5A5EMzU(+Uc8Eiv^|0lYA?pnK&uJ&dts8 z$;yOJfFF~Lp9PDSbdP|}D7~Wx47ucw9O0{`UOQ<8v7YPW!Q~;30Pwz3={_6toiHGU zWP1qye>i*_9s?}M0`7sJA1LssOP?{}*M(ibPUx5ee(*tIyOrHljv@%GcmdjhAGiP> z4-HUI>R=_bC8kn?YR8T^6mYkUxT7VL6J(Z3ECA$>y2R zB{K(dK?CrJo#Nfqix#eVgR2776sHqoBY2*q`>ACtI+v!FauO>9zmNN1EE+x~6mhsD zgt!}1yf{Z)0YSZ>hI3rd{a7htPzroEM&JjZec4c%hf5dgNecv@m*VqV!O0WavH+2Yxc}Z{KXVLQ&yRrqJro`_;`|= z6CJZ2=i7>d&&NLq`X^ZZtc-z;M#LY5m9l7y&&4N~y=!@zwbg_cO>U#&Ss)*O+g=N00gg@15Hp#+7m z79kN}+8+D!2|2^l&x^qnKa%aFsw7zr(?%)HOiXH&wb`-kSd=q5?u+!%qrDm7+2kfh zX$ilVT;B%Ek7)Ixdy6?ct07sY<9o`P)4s_8K3}2W#OcoRbOc06pK8L?WGIrj%=9qJ z#>)E{SUPR8gBktm1-HCZXvHZoO}F0slZ-6+WPmrd#v`p@yp?<=6@Sas$CQlCPGU^< z2>n!E)l6H#gi#!(x6|{Q!%I16g|TSk=YUWwrWdqWTS+`ysgg!Gi17kf>jS~2%D)@U zl{4~KaOdvh9;|QJKF%guhbVTtCRgdy=y%uHF8f@qaRVCHfbxomWPB8}PQMCFSYG49 zkQH7lM*quK^sKZdFVONV&@!)DNh;36H-t2DbOrMk)8%S5RL$Z}eWcT+7Fa!q=G!t{ zuf+xMb!2{j7u9P=^g6(2x#y;bQ>i6%MD{x_xq8Br-GC9bKF6LB4 z={|m9bYpiJs}k7!AY@LaPMn zSSUYZ4GzFBw0)rkIC+K_mlW#eGC+z0|Dedkb@0m#1N}n0>)APd>DabkcadLzOz(_f zdjfmGihAx0j@Qf4cOyz^=K@ zvzt_^6JXMj6wiw}RIR_m?jv>A>gHhBojMi2_^i4%UBRU98-xQ_;}UFO;J|g69}-*? zR$G|(_88632tR46WZl=ZUvyiE^2X&}2jZvXGmg4SRBY3DW4js*kn()d7MW;rG)~~t zikGyiOipExfyqmjlzACSaM003M<=|!?E*wfoQ|OZ_OHf1C(*OdJ+9oaj7QymnpltB z2u=>%!{u$W_m2=u?`5|7Ss|27MH=#ugjc6QHdis_sy#j>r%+Gwc^@^v`25!wSC;&} z)QaUs^&YPl0=Zo-PFTAa?A`Y@Gjpgt9~v{0Jd!RzhWwAb<4a+#9pUYZwQ&L4H6Wv6)j^2oG(U)|}m}s%S%k zVmb_ELzn#S&FU37--WiS`!+|euulI6#n%J&&@_c}u!B^HfARV_Iw+N}M`1Pvt9kch3q%FS^ai>%gUc~nT*Q5suJvC!GyBeNg_S(=tP5yW*)kz&S9NV#q`mT{yY!vLC zke8JMe6Pj}-+Na4z5N!Jdcf2%OSxqaNPvM6;9iLE=Fv;IRa}?4bbDG6>m-Y!cw!5F z3AKu`c$O~r#3!;#A|93~YDfO4^i_zkW8joofWbxBAd^4C%d{?`xpDdhyK_tnXeis= zbO8AtQBr`c3H4p#kkk(TGwe$M%K^o3qJ8??auuRrdDiUst*l@dO)7c8O}_3PBwZ-& zs)pW>f#vEE`$hcUyC4iy5a9k-S_H*khg`U;1aLnHxX+2S#{yXS$ZjOc`hR3+UG=z* z`c9XcFz662e70v}SIThX*RvqO9&!@6I)ty^P`qCpO|F55txse=SNJHCqdGR(rwOIr z)PRFgjRq=+YTD8UqK3{tOzln=azBd)8jYZZAefsN;4*&}flPf|##5{{J5(+ji9GV( ze?dMFz;3OFCwAAw2`@Lcd4JE*{X&Z=Y8&xxdJ2yvPlp1ldjWfo4X%u_jgMUeo9Poj zR+B3;hRd{sP4=m7bwk47%n#H1U|6LPixmTG;4mZrCp>cc?AZdR%lG;FYVm)E!Av)W zVG1QekB9q;sQlS*gsftJT?x#_Zpu{5EAu`>8U&=eAl1cc-V;LXwEBoQ|!RX$MPYh6JVDU`*qR$&?Uxa}^wL!>|cp^)qhmIKrzvh}mqrtV7!-!B~ z_IDTUj+!8rg`tn0-w?@_BNt{4?~MfWbmGDVzwjivY9iO3jLko~BSHfkzNG%7G7od- z1aa9|5NMz-wD)CKnh#F+jPGWC#(O?S982h#BpZ;72++Y9Of9tZ))0SejpF-;qw=9DT-t_ zA-pnQ6-n`ak@L+3e1kPQS)V^-;wvII2T&_6XX6x8X5*D3Q!rX8YN4U)zklCS-uOwt z0_#YrbaE_u!b2KO>w8R;9&YTB$kyU)^EgE*m#PR(1cZtwoXr1@4kXU{om|u#T$d4; zr_6b=EF0>2CVuFsj&!JCqX^3onNfwhY|UP(`4kiGwWGmB_QSAI{y`MqY^a|*goNa% zFHlVFy#8F-sHyWZ4R~F!#@pVd+*QJMkQ{dtbzjOhrVgZHz*9}T7Spd%P&*jgKL1u( zD4@Hwu+Yrv+-@{Dea`Z=03C{nNQPCPKji6fu-!26pqlMxO=kOS>cu`9AC}wkPtVT& zMD8)D#yf(<(T5*apXl!HtuOTNNU~1=zmQa}Ny&#-2-VZptNmqquu2U_~`pO2XtpT)ZpP!#Iw7WZEez^FlRqk%b|2&g4~}i)f##p%2~Xm|K{7+S66njESg4F zj8bifsi-Q0X1F+AvyGrCuK2u0-O#Z|e+O*HI#WGkMdCZDSe)by?jb+`Om`TRy!H0dW;#AnS zaY)(A34#=f~j>h@*T1Q_9u{CLFXZ!va=L1$tNYyO&dK^ZSK?{BeO+5XtjtT#alKw@r+|== zCLIX5x{E>0f{{l;W1Av=NEV4bgPLDSn!*%1`;V}R^2W~$B)Fr|HFmBuq47J)PXlvj zF@Y>w_Q=b0Lzf{LiK+wj0cxJ?6c2ut$rmM@lb}~ptnT#)>)#CFKF8XrvL}IkBwSg4 zEjL_Wq?4u;E%AYUr1_SqMp*_MQ2d3kMW_Q_eL)Uov2rS)5Z%|GKNO)VguxT*^%y154!)P}j4FMBv&X*!SHWgyn0)(Cd z5(@+XXleV!?2c}bP_^ZkY?9gx3u&XJ>x$1bdChSF3C>jXKLzlOjK`t>UyKA z?{+txWU-N5pso7$-3^0VX0h4{wOKQYx13Es5v}m=F2dL&c8hzR6AbBuj4^j z6ZnUk7caH^7{fi#yAVi~CzBB=O@mhJk*0&*5^Ebr*h}ZhNvwW|5U(<0K_7f8QaTYm zeQF~D70*c%_!B3FFB__#u;9z2^1kXL$6v>_#1Lmgli}&CxN>}cHZtd=U*%zZo;;&h z)p7H?$rQ)}XSw#H`=Xj}hgwEN@#`N-2Ggqcnty4<0hj5HRXtcUUU7ZVn@`Y~Uv172 ziW@bF)r}yo0GFTt9x9cM@>gjwzoepbpi_3E$LFw~(kLV;YhG>M-|~`eHS9}q;ECI9 zY&As+_>k84s+q)aK3LGNlEc>!osF=HI|Nkw9WDOExkp9Zkt)|hr+*7>B9Y4O4{~D@ zmW79-9MKY4_=lR|kK*9o*0+`-#9*q3X8^BqD{Zc9U1B;&XE2`Z-MV==cDtvBL~wUD-_D+>(YP?h@$(tV7MhiOGMyrY zZnP3G8s$fkws=N&dnxU>6;)%C(NW&7P62cCP>X+mfe zozKx=l_W{Z%4*9pjt=5iP6WJt_iy zri~FihV%2}=G->$=fE0c;L@+{D<669pa9<@+pQ(JetV0bP;wc&D?j3gP_G2clHDMm zn^5@AqUXsq?{LC)4i#e8kZh+$W5413CIu#^Pq%&oy%*n%@ZxrEr)1pvxI@ zu+u1=VkG5&e1b4CWT+)wrc5{t00+nkKgO!vj;nIBD=Sb8>M#44zGkn6KoluHrkos9 zCzMK&iBODJH*53TYr8(ZJDO{{&XM&6Ki`_gMD!PgAWQcqLzRi#t@!`&hm&c1RE2V_ zv0}=SofJi~qqSoL1vR$zo%abtId^7hcPXLN*B)g!5MpsBaL@~ii@KnPqEjCaeg>j3 zp4GAMOmBzP&)iW$JI`A>46LwUx#!?4$G5uGTja1*(r42j`?mcue->ih0f7N_4v? zoChvkF0mDuDaq&N{vF6s^r_tiw(sPO4IBPB3+Pk;0AIhn3T6*B%*M(Sr#i=tE3EfD{M(rOjA+W8>&MS=LaXWEXPJFBT)s9JDcj5gCE8X$u(sEmc_0yVAU|`#4>ddzXHAe711hBF| zVW^AQcOPHMFM_3|4xtZNT+7V^o0zTjU%n>qj#dbID~>f1|Loh`cd$(OGBt4R!|=Pc zJDl4`2!s`4V%ie&0rhVxe@R4vya6HUgOuL5bn;l!Y zpZu1QVI48=h>=6XPv@hdW3!^-5v^|p?3Cuh5wU3|8b7@Eb&0o@&F2Relb4nSO1FQg zP?_2eR4(4jIe%}*8p1=fpVcjut-Vw6rxtY7FOD+^HjlyzI3+Xf_>4frNi-K5?4%eE zQ!a^4N;EdeVSUFo3{w`N$H@J81wrgdH3#RH@*Q+WYFM+Z_T&tXRkOX8%V)tAnp1ML zBMm$z{TIVOV$yBPyt5dCaQa9%eI+3t}a%vkSNX&jnWr*+RV#_-8catstw1$+)JVI~= zAraorq(GKqtOe8&CDa8CY4Zjee*Z^CAg4Y)*GliV`Ko+b$tP_}>JN(+pM8DLS=I4@ z(2_o%44glLHiIRMkquMsPh%D|`wMnaE3$Cq)WVo3$JF%$isBHXR7X)6Y#FESzG3Yx zl}1%!xrT#b;ODalo9Icol?{)c zkdQe>f|d`)X8CGsj}J83D;3*T$d3DvFs{>sc&i~}AM%z)romvMB1@$5o1vD*^m*2| zwRi0Gv}m+>wS;;{!oL8AMdZH6-Ho!l>T2mzZyaP0~jjLhfR$|8oM{jVbWqKyv3gBUzFgm{ zM5yS2!Mk_3@H-p!Po%UzIpY5b*e`sbiV@-wk;p`Y@Wd)VW;D4xDk_}gd~83moX9yW zI$%Q-;duTP<%I;Y{rcPBe$@_uje3{%oWhErDE7ZE_}i<&QZVN2tSP zLW({}bznS-gFrFQx{nxsO|`H`N#EzsJO}#sD$j29ezcjyqIFg{ArBp34u9&)vqHY` z%dyd7*nc&FHa?2jr>@>1_>r|F9<@KIe9eXXc8WOW_XU@Bb9Vi;d2{UmzQOPO0{;~~ zCsA)nz6^=9$CJq_F6_WlBy7vFo!;a|EFttxyd(b2xIjWKfxiLvWh9fh@Hj+@q?}M4 zB|_$l_)ZE&I7dAN;T+cVta!ZI@mW!ws%M{?imTYG)Y{$o-FLrd5S99|&5h52gWQl+ z=+K5$lzkU5yq2G(0tI`#?Yp}_@(vF=iXefY82`zC#|Nj|tH4VIXgDS)Rp9t)%Rt6H$6q3+EZkQdLOEKBA~L=G4fMS8rK5F1@{_nTA)wm#g%GenlP?cOQNs8Eghy zNotEVH^&i%4%14cP(o`BQQsNE4dFOQWI}si4{WJW2z)+D{yD;ji2y~wtC;tb4e`+y zB83L#4*iR#Se>&|n5z=xd;13@l&V*F`q<5+bK3ynMoCJ&;y$eK|GLm4@mB5~rw+8) zT^aHlX+qL_aZgWepU{)F)b;6|9nay2vi=k$JA`gPNQwM+;dq6anwEw)-2>gDUXTLv zw@Tru?{7Ncn{Vf*e;BwG_lO$sm_7GBaw`hlv6x|)j}NEoSHnl%z4&e3OI@6ZPMdem zGuf!?%#7Q6vTxxM17b@t4_%*@kt-FbVR|t!gN^r!W!?Zb$4TsC%VZgq+DMYg+4{9^~bQVAxY%@-+T^Y-_5<)?}TJY&SY_7`?k+*AarW=iEQ_mF#U|Sx-r} zZ2#uia_A=Dw-Df623p<*1OMgNLs}1!1QC&njd)4OIOF+Uds-k>kdCFv?mBND2(t7_ zaJOXTej_0RNIeL)h*h@(2-Q=DV{Yl7*%zzt+OKn+MwawM&Vl#OrGSrocj$g9V**16*u z=#7lzfnFA}_cnj~X(@-=V}6OE?=L~kVQaLv?5wT9<9*JuJ`?EyGpHo3jank(wYjpcxjU{n(J4eN$5(V@+ zhNJPn<`^KsuRo{J5C-+wh}bvmMGic%r80h)uyqtqC2DT_-#oqHVf0zU84mo@iDN?e z9i^v+2`O?_9p0a|@n`1rk4Ie)Lxk50X#fa0-FQC4WwJjTR;IRp`B#)Ide$?6ZLn!x|V97p#TQH_S^y?^oJ5dSvy#B3oJRpFJ`7g z`fDQ;7Lm=f^MZR)xm3c7)408E4vk_6qW)z(#6O%;_{XqY(dnPmZDP}Vy$`pio4QA) zz+)dpF&}57u*T^}L7J@TgC<{^k1<*fs{+&X`(;Fx*bXIU#avE<%rX(5uoo<;^lnx% zo_b1&-3Cg8fipg$y(PQg9X>efN4^0OlWgeK+zS`yz_x$WDdrJG;@po3l4e_9E(lo~ zmVCLB2Myf3kFff76-vYX7@K`j$W)?cuWje003zQ&w-j0#MMZ4@RglL7jWaR*D0)Z4 zn#GnzZk{t&8Uvv7b;as{nlWcE8iTxV4jmxQ{uk2xDjWlxZp*fQ=lD~YwZ#7Uu1g`* zp|*A1sxpK0W3kLL-wR>L@7@KPl~l>#tMMQ21L6jS{^E6UwGzO;w&;>0dS_$Sg8Hs@ z)cq*DAiBt}jd6GA&IrVvQVaK}g1gPJlgTJqg}fc9Y>?v}nJr}e)7#N!4iu;Wzq|Rt z$`4Qz`1hG(r`kcqZgrSqj#LW1fhp#$)Zp0Jke8#RSG%~5MM<+5qEU>Ci-ZvXyx5Tj z41R$Hqmy7JY*9!fRJsg=)2^AsemG8t(Go^Pf_n^y-~So3TkPl(MYLu9cbw2GK z0}t;u3cIDwRyR^5$C)fOZ$-%WT{JX}QtU+ZfBdwZ_IvS6l=zY>MW=egVJwYVabcE0 zEcgE0Tb)WsfF{qz(c!IjU-={MDI08G7w+EZjyp&a=HM+61{exxK6>$WrKkJdDN)#K zbVmswa!0zO=3(d1!OPhPNyP5nt232A^T49HlPkp7BodLAD`ea0=X5AN2l3sspy4dB zVO+22UuLtb+;-I-2~4~=;{9_n3r2hA5_Aee-cjEu;*}Dmr)^#!y4bnf)<<5swdi#C-&c$?6eTpgqqix!ZTiePUesVi z=Y*4&Tfa3s_`*T)t&NN-VS{pMzmO?3=o7m>wALKXS$x_nbOK57?)DY40O&~my{V$+ zlyQcK-(Mvq{elh=>g4GYoZju~aA}Z~SX$jgg6(A#0rH}-@RA8aGDK-5nf@o z0nN5S-kaL@fdrkVEY0SyWIV;qRlt<94{DR1^Qr{0*)*O&baP-gjv z9!Q`ou&1z**;aNYBvogdA?SeM2f%SUEqTZxf#g;sW@>6|MH@`;^d9lP9Pv%6lNatB zr&C^t5G}M1c0&a=ldbjmJ5Wns3v0pd*qU8_7AZ<~cZ54l(5THOgaaom{9+dQg))8v z;$%p7?gMjusekCdK1m($I#~N;BMJrgn#0}?;TgfJL*d6I3e#O1VPzC;XPce*ztK{B z;D%sN1j1L;X~p;I>X+w@!{ycw#9gJsM>ZT9Qn~QMNhQr={lP|-B1J{cBFUe(OT5oy zoA4+F1xd~39r}jQMC2OljT^+&75f333w` zL0gQ&Fj~l+PVmL-1#Q&xj}C=5^OWOo5{C$PO!yGB$fHNRcY9W60pajvt3)&^iL9TR z+>x?SR{_y$5M6b1R$q0!CI6WBlW6T@Q9e5(E8=`%JLU3%3rnD4Q^O=dMD>4fafO9mR6^x#pMt?hnyi^4gQ*%hlFTreF%X@|NF zbC@>|{VVGs`}Y0L)GY;}9yBT^B`p~#AW;=W_%K$A4l_RhZzM4FK32qcto@b>BNB(`$w=h0m z$v0+M#bikxM7{D;4MS0BtKEL%R>x~?Py!mXz$_N(V-OG~Wz+QX-OkS86~B2g4gW5_ zM8GR*K)3IMbH}QRyC59T7XGZe3%0hou#g#n4Fu%POO#&in$=;3rk28{lDxrZP!wHJ6b`=H`2~E~%6Hg~8RBXv+Dk~)8M}wN-d?o%UWIVS zZt}hQc^ftSkD?nG^C&2`&ciYC?ahuky1h3#vsVzy1XIU|&zR86&(eVC4-;Zo_S6hN z(uq7F&5QvpAYtCArCh*Fm4?A?ugsKF!y^ZcummL-zwo2?swSoD~WgO$Upuh zfeYIK+s+zZyw=v-2w2ekKs_9}fIV z!?X%VD1H(>-98_Q77LECc0BM(durntwy|-xqY2`~w`OzIv02CE9&|jhldr zo1m895KP*1;bq+(6rAo&28c^50c*pxVo_~|zS&CynKyY8C0+Vy5o}oEMlTp!z5o32 zg!J}~;h3v1$Kr00*|mjSPQn!CsT(}O8H+=C=zVJ#fE}!j^`NuO#}|ifZ^LlYN=sCq zra$JamVraYhsI$K7_jBRz|(JorC!*jl^fx~5lu$0=+hg3liASN>)402R72nm%b+Wq&1GEBv-fyuq9~6BVX|ig1XTGq+Tbt#Wwr0 zP?y%szqI#%Xa0CEV1R{pN;%!<1LEz^nUC1!RFBJxXI|f}B(f_8cx1>gjx^0A;vvfQ zx6;rN-runlD|>4tZh@`o2t5iw9O|@S5G5Ja@Er%3{7qnIGBZ5-`|4!ouH6iWO_F~5X+nyEoczd6fge-PV=4YZqc*$?TN zz0{vroDtUlwd;Qo{o(`0S-{_hA zn~9EKxgN|jS9HZj_5TdBWq1-NOZx)h8ynf)arKr|*GujbFApfs!x^DRt7!c~LGh*9 z-)boPQm@Bf&Yf<{{Nj?8G4e|SuI_HBat%!YEs5_(UUD;}_ip~+Pe`bEo#>(}BFwI( z1ZE&gPLX2`RW9e^zaPr@OhJSb0pohA9A;QTMBoxesd-1}V7Da9TLbREzHU^%7+Bx# zRlB0!m`!;9Dz<@B|C_fpuT4C2rc((t9An%%@LY)*^FvT4)~}&{MmvVgc-5~{)G#eT zyZwz$G`sNI-`gbPK%<*r_9b!(8`v_7B1H)oL;N7&2nX1f2;X?#K@6Pp1qY=(*e*#a z*gyLL&puxrzRVtuNLeHk_N-D1XnqzlDKTJB`wamxhcM!C*?U#5mEcUOjfEDId}z@Pz1**?cyKgI~r2^+brodhNDf}TMQYCFy&6vCO( zJgHfTA%tXjKX-Rtq;3WGyjWoI>>#aW`5@V`mz3;6mHVjXJ`E=7Z-~cUbl&#xp>5}SgCC!fADtfS!!H9 z^aa7h@a)};`%JFRC8YFrwqh~vAFf}TM(LPA9p8VB zJ+XhOp{hlt@;q(f>=N$u)ga)Rmb^pSSaAG#ye%xJB9Z+;K2wS&Qqe;q+U^{2i_4C$jYV9o5B8}_#Gu`N=KJ;zyKnx!RiOj^sNaX6!fDYEU;>$Az z3MRf_1;GJ~(u#r(?93991}tU|u6oysK~JT`*1LF{=vei$*e;Xo=*(GWf;+T&KAPCI zMV|PGK0}LKj5$ftL8Eaa>??$uCI$&Wz^#>@az`34!TniLr#H)l2M^EFqSI%=HjZ~nZ}hi-Hm-t z6Nm}zF??CUWPg~)$=={6XY@%aXu@tMWex-#D8(*}u~U?OEgjK8nAP7MZud3jHr7$v zH3YrjyU*^WA5&8Md3u&|A7-jmDQ=o`f=TqUO3aGBWS19Su1uFIREQG|SZkt$x-71) z=Gh&__a8W1KkK;+Oq63m-rt%(Q|#e|3v%6cu{Zwk$7tb_$^9}1EmSGkm>qCuz^HI9 z8rqBkgaWHw2WJ~TBU0!L^uMn4x3BZL3FwGv7VIk{52E;!*;O}8Y18wf1tu(%LVV7A zG_etTfacZ{=Ob2%4;hr*+l{LHWJ$p78}BWWyEvUh??1>BnDlDBBn2IF0yCo4_m8=# zXnx1ZEb=%Fc`3mS=9%@z`mQwMU>QSK3 zy5hrJZq_+qkMk(%wT(Dg_j+j7$Bu+8R9(D^o(&6U%G0=*@KVZE6E^z}DQA({c{`wj zJ-X|wM#k#s$6`sG#5ah0coc^h1(^s$>nktf?pdS)etj`Aa2IVzl8hX$h_;4T=~s@M z_mS>NmhG5(PDI?}0e<&-< z2<3mOQwAF_pHX}sIl~MYP+$h&3Hi#Y{&>i^U$~+)4v&N z@}FNx=hpCH=6}yiMa!&WmT9}8ChDGh3fq)DXp1rS4?xmOcPVGAnDR#GCu4JT3IJmp z>c{{%GPWdZbr|k}1B;= z)Z>-6;O2E?M4dAhdxp29v4#zS-#UlmMoU4IeL^ee9781;X$k%;t%cW90#f6BJ&4F} zYC>g`E_@T9A5L0|+3e24ot&L^<&O1WCp`?=(b}QB{1146B}IHox^?(MR2lxeq(uT# z@%!H(=h4fGGGT(O8|N-k&yc+EdNk(j25N#@L%?7f$JejT|FmI@GqCPrwhKek;w!e0 zf~~Eazm9xu!5FuaIF}kn`dN=YGmD+RhX>(aoXdV(*Hr7$)233d8azIiRcp(W(Ouwu zqLfYG+;9C1UUao3M`$-VUU!LNpH&TUO{U$y!Uu&q!BYo9qg9Zq7?;tS%2RnMes(&e z<p2`=OU zE%s5R$9Sl{E`5&mfs>eWWRX!t7xa?I%^jmbiwol%onsDicF&Qu6Phh?CSJz zsr7U8KDIaMy(2sb%DofrMpfkr^DQY5QvrtfXxG`epP@p+x*lC9+N|h7;KXwqm7zcT z2#;-NG(L^@F_F5X1rG~)%M(BQwf;2n;w({Rs!?mWbbTmzvy=7f`1cBGl?)jB<7)}z zEia7#e)3x{3c#U-H6sG8-#}ll_zSGtQiIUa3mPP@c9zI6x7QrvvngHDw_h-xJ-K_a zJ7O#$XftfT~?)W}dI>maQ(LtSNKCGI+yR`l_Yc#-oR2 zzuE-It6jCzYNz34d;P)oRj&qfG%ifU@5`b0(&A}9ieE0LMOk#n9hJH<;CNlPQ%`lSJ?(zmjLH z>QynJO+&=ai0x5-;5%4MF*NMu-7i(vbIB<0upQj~2*|<%5*>J6U=wkMtN4gNN>Y0s zWB+mLofi1Dqtb0XqG@xjrNIrX#P=WxGjO9?<;rQkZ!!`TqE|;d(9q_N)GU6gQq5-o zJn$g0QTw--!cDJwlC67B$E=qFUkp#2aySQEiJ&wX(2rsf1qFbKSV8A%ACM!=eZkx`g4xy+N^qplJk0r6Es}#%*u#7g%Xq0~;*)zGe%zU`z4w>Z3-`Sj*}_#j{O%r4gc z*?Khl=6?IzaT1o+kkI9NR4d`Q_bLu<|3`uDK$*ak^Q;wT^wt(ZDo*XP?t)ZC1qbZRjTaGYk3wp zcVmj3EcHW{I{eK`?>H1qKgdI8Hn;n1bH2HDtg&pYapYGsVGC+HwM(B8xf_%mClkqR zrF5qxfIpe$j!%fVheKz9Hw&e2Oy^Kn_G6FLyT-E9D!FfL#@p9Sa$C}zWqHB7H=~+h z{~F9D`|lcQSILk!UG`>|m2Z#Rs9;7<9|Wf<;Iv(i*K54I;zkLqGp)9sWSnhaL6^6V zuz(m_L9#4A8PVY9bcj;q*5Umv<_#Ebse(8fc)dB!*Hrx6?*(G%+3%Y|;=uWcDwPua zMNa}pd*OnWn5!5`b!}(CY_i-aN^)QiF~C{kWhnFcopvf=UfSl5?N?jOl2mSOS$MlC ze+eejhPQoZbR|IdL-E1)U%?(JrHqWvj&^k!-pO>PbhEbvGR}KKHUq6{OMX0siNaa- ztEn1a>uZuLiCo{&R^_|jC#f(l?(q3WXHfRuolobi$BgNk_=6Y!7}vQ81`4lVwk$72GqtL#J8RdBbzg4=EZd6Yjj{V=)hH;h@(hb?XG>#(v6FOFo4T*A*mSjdUDCOIDJ|>!! zeJlL!$TubVsmf(ryEoxSZHzCW>E&2G{EP`dp^`3TdyA8u&F^^wK__^!cs2=vzj&df zBmD5n@Wat)EET7NDOKfDhas>TS_ZUm*=~RzDwNYv9}D%Z0Tu52^(8wk%Al?CQ@}o3 zZqFW`Qd!9K)xy<;CD%mwerh|3RD>v>V6Iza!JL(BeT1c=V_UB2(ju5{r<1IjQH6h@ zxC;0l0w0tgt0*5R3uM7qhj}cqbkSgYpItaK4F3hd59=lMR~{P^GK|ZuDqEubPFeoB zc9~8)*HM++)jIae_4V#mBMTo4YFtCH_A)1fvo>~zIZK?Os}1An zICj>?*;j=hYQZ5{!n2l5_?JuiD&fZvzEXjY#oa&1_wxNC0?+jga*XpxzjK&p?4H4i z17o8+$N8j4sia0A(+nHv`R#Sz&hl}S&XzHyoXWIjpT`BV33WtGcrTkbpdg@N3M})T z2)s;f4L^bKyD5CTn_(OrPS9uU99(v#J2^-I03ZNKL_t&w-obu`tf-4iRSxd3d3lEI z6BzfvYQ)djTtSc1FTxv|@XMtV!cRu>E9LnBKN?lz7Wkgw!O_9tesOScbn*Zryf!{M zIm&hq9~)(y#|}D2rbZ(rT@AY!W&+^1>Q$?`PHVF#38DJxJyhF&t3$zCMS_FLYY?0xR5D zC{lypjVBoP4SJofe(wO!k4=hQ%_P=49YYz!u{%UTQg@p|~I zljHe5-tOiYySsM>!@K)Nhx-P+1O1#Z%-G0OQMX$daPM&S_uE(DJN2GFN#GX>1tnVO zIBBW^Ux`xqI2*TmCJaj#x4=n}EYo+Wm%+6dSTQ{r1Nf-?UlI7Nvdj*ylgZ{M2fY0Q zK3_ll^O0YA)!*Om9?=@%Pb;YVN-WpiTE0pP<*Erkey-dMKORHZNBDNL!nL#*@q%|$ z?+bkOG%fRy713iN$O?j)?Km3Xci5B_;YUM}UqzA@_^g>}+3;*HT+W3qHNw+tMoh;n z@LSl+N;tBrM2o9{A2~c#2j7gkrZZg%!r`z<2){sVC)xu3 zYQ|8qI4j3IKpLur2KFgcDO%aL3j*KnkDt40RsQXUF$3^p7Wn4w6;`A-*ut{BQ3XC# z{+tpkc3MUpD_n#hnR;y{_?2LW0DiGRlz$!Y%?h?^L5&TqraWg=>?`om^KYwzp9=x} zcnyBbE}5GYc88_HEfn$;etYG6f~ja|A`(eZ_?)BpL)Cpaj$`F?G**~z4gWfZ4m*sP zuUhw5;Vy#h_~Y5-v<3b*3?ttFzm;OIxdW|DblXk%%VlaiF}>qCS?-`p;Zxf&7ptJr za#j{^_h+i`V{PHz4E9<|O%_(AdyDd~YK`z;CGg`F&u_8w*iG1knV}nhSZrqwlppU5 z--GZY6BF?W!gn|<%hs9;=~enRX-_BAEkmIE`TSHBer}D}r)ax&RqV|Q*B{T-DgUnw zW3EB@EzsWtvo{w5slZ=0Z3p0YIynO22g6nP_WCu0o5O@}Reo-D=v(w-cATCD?337^ zb4~CQxw<_6+a~;&Mfp{o-aPt{p-PgIW$NIg@)Ij4Ka@iF;rK*F`Q*b{KbehgEmpb9 z$e9SjpJ;%eTfy(I)$V~k_G7M&y%qj#E5c{p{al@-ZnQ&LkUe6+!!V7?PpqJP0zVv% zg?H58S3i)=yt2xJ38X{Og?R-#)>^{9Hp^*)9_rd;X7%jbE58s9HNt1?gLq0E-|Ob> z*whu=J=eAZSflV+Pte1OlD!fBbaK`3Z8!`@x|Hoguc?f>{ZU9k*t^}Kq3Fd%_}81} zv}dnq*TB9F{5wqe@do(AZtr04zyWW+tG|Er(9uEL4a4^}!pB}sHCgJo*pasipRd4Y z81Ip>UOTSeWgi*gdO#fxyTEn}q>Bma1(#TXAE)qdc7mBAGown^z#idu6Zl3m{Aes5 zvsSo_-OD)ph5r7&fqu6zIM_ehY7>Ih2ilHL47eI?r=Th;!B-2$AnQ2OWr^5BaFB02{)mOM=$y}UhfO!h8 zsd8hc&)A%jhhDA1Ctb>(0mgoC z+%nz8Z>z2z=VH zW~<+~g{s0%8xH{!8 zc3MUJOTMr=;eRzm;X52$b!DlxVS0WQ{!Dg;#Hy8_p(jDK#;>WGs^G}gH3y`cTr1m& zQ26ob$a|vvI{1(+uK+*d4>iH>P`sSoGhl_kszz4Rsc$%3+ol9aWqVWL|1Q8U0eq|H zuZ7{$!4wPpt2OwY#&C)9E$}N#inI-mBg&txz`uAtH*1O9c@pPxWPtqKS@L5>x>evz zoyyu%xJXs%)QQ=v#`3kr(&AMzfR3J@s)w(e@DoZ~__oH;m1_+fPMUIHm0MB%Vhw(W z*$WoqdIN7ulJzcqdT?N1kc240#X$eS z;D9(tA38WbesEPWRvCUAKY!J@Ok23dsrpp2RE0lL-?3JiH^tb<%qSak{RO~qqAcT5 z%MI{TkT-Oiw^M~5*j1H{%P9a2p)!dmLRGynN3F zxPkk+?0W36$M)^&seII)o}LXGdYImz=wLSZ-TY8+2eV!d%R<;EMBVGVHmox2T^j~p zrE#|je`6pqyKII3tx^?!+^T%nfnL79uXkW{aJ2uxz#%vcM@Ekg_x4^xYYW%j^htq; zHiz3FmP+L^{x(Djp3%uV6uMr>-+9|@w|)JVzxeE@s_-KOelT2x-(k3hb}75UBhd@_ z3j8tnO6wfE9{a%$?)C)SuD+oWx8(OrvKM~*l4HZVUC$u=XSQ|Mjdn8rX>mut5cl%~ zijV1ugeLsTM1NLXZ{NZ-ouAPcC46qsJ?QQ0?LBZ1 z{*8{0d&ft|4jddj$gT{Z_k|*1y3$g$rZ1a#acK{o?$}YJzeTcf4Jn+`BAw5Re^AKY zdFSo_{l9;UD1R*20H0~>;{_?&kstizv1gvS`=4Zcmpc#+$dcb9 zl9e-iH$eWh>j%#~^URj|dc?88Ek}Jjn9(5Xh>PocCK7&kC@v)iHf-6p+Hh?7$LIei z#*fE#OFNTIol%{AU;{ZbL7Z&q2w*fC1{+KlEG*sV8Z8Uf4<$>bP|DGz%7Ju zgBtgQ9KBGrov{s%{p2UV_{lRr`Nb}0aMbS)hQ=hH)GG!U`6Q%vv2Dw%Kc~^R2r3@AS z;2AID>|=O0>u}laZqC-n3j^Z^9NfTx5%Gk#Y?brtYcy8Zg9KWMpwp^d=bNaTq`*ujO;NX3|8@9PTE>GVMp?9?*?CA5- z*s|@oX*b!6S+ksls0#zk7peC7|cKw`{rl?z^ca<8?*nOklz(3;g{*N08B3*L*KRlj)Zi+$QKh;P7VDpRq z>7P$6QQMiSw;i<^zLjm~ei~;e13)gnYp#w(PWK>s2dz&dadR0(Trbft%ea}ukQq|t z20SeL{r*4zm%NPNf|pPNRR1|tf2B6A;5RgJY+RfeA0PFOPl#hj#KEKE1BVWc4o|!` zJ~}dTa1h~N%qIc9ZQ59R^ZDmr`q4`9!VB=TVm$ZK&zocKckAP!e{AuhpU+$|E}-(2 zI^};ZQ)q(Ev~!($3u2u~bQ@iN_uZm-!ru&FPpQdx3`K4Vnk*e^iaASw*3DvqlEPJ= z!IS9G5y2oufPay%IDa)srT)XSoU<1^-_E%>&du4~g5ANpg>H`L?Y_uR1hO3*Oi=;; z_rJftA-;covG@DWH^)ma+_Uw8`)cvP19$EIQR9pL=ksq}!ILAvcIrHz!XInS^H=QG z>6RcHL9zcP`x_#5gpMtzSRx6q(*!h4bZ8wgSIDk3PRbx50u6yInip?!z`?kNk?_mr62Ohr1 zDKxxv<3`AKbYeSo@NcU){i_+p6tuhHtE2U=?w~X$ z{wiv=)yg;2eQ1xb+3!ov&98=eEX2t{00okV7Q`Y{z3!H)oN}xOlz*`be}rLLG>WeW za_c5F!*tc?Z{7Or%MU#8@V)%q>+4@LNtHiV5C0Y|Zy1RX9^Y{*e3s{${&x=7r^Lr? zf-7TCFc~$eXjvjt%Xp89EB`c}O_psZd&^w1wkO46!DdJi1Q8U@s5Rt563!t5AI63`b5`Buw==7{d|ZO#O581v9F z@WKLFLF=lav{;G3#xkxDq?)tu9ef+J{_elKALws=R=@Q2J5St)+OMPE4*n++S;I(z z?T`e+Vmo;1=W9m>4?!X~c<{jZ!J~&Dk>(E_7#}=(eDpP=g#M9HQXt1lDaJUzOHDOWJiqOd1}hMnOyKl>V{D_L=d2|I6^d{LA3r;J?82ctng` z%*Ag4{FP0|e3?oAiN{}Aer4;MZ$PbkKX0L5gMXslcA_SH(#o;)?euwv2M-9{$;nJlmH1PC;N~pei_}5E+)xKZT{>$%dePi~C ztw`UZeGB|~>v_1J`gRWCV`g2ae4H%B_73;-_c1mHxr^u93kS%IyojOesQUz&^w2iQ zlTfVDNK(&+LqRXuG|uDpxLi&z?tSBidoGX9<8%&9j778g=96%&W2%}uXIx#xzE4Bf zazy%t`KwFIOG``3S1s%f%@-+E;g8%L<*)QgO8iCQH4KmocM-i_Cl`Q2){C5LHFIO|1aRe9x|ZOnODNWP~#p9ts@xJ^t>8ZQi{3w z9{!tFr*RwDO0|%PX}K1Qn$;%JSlO4#Mm|$AQ2N;tf`=B`#qx5+dh*hH51-^bK!5A~ z@4ov~;n`KcB&FPqG^OVikS?;iK)a?;(8RJoi0(-^<#s-+kj{<8`8a z0kz)%-@5j~*OV6UJI)Xg4g9(>pGf=1$i7k4?lOA2@({feB~8aMlvdeHT~cFRL9Tw% zj7pkTmMG`bAbsOPo^*O%xKPsda>aJ);NOVnUn70c{sRv`wCSOLeC4<4*Y896_mZ54 zwZdPnQ@%>!N1Nccn-~MGqc7(DKDjZ5ES;A0K7Cx26una>lWwVXt)6{((aK(5)H8Ee z(RXr)UVm4A_ub3yGkn_Gf|O^|8?U^w^xdu4&+`y}cNf#%cJ9bjl^<8aHTdn8$#?Jx zu>3_;l>8=h(_HEc!g^m4xADz_tV)@QDlC+klVN4(T{{{P?M}?OH!JG($pQxIUz!LQ;E-xMI9ya@Tuc&%GZF>@)dlquf`J zt&6;yl?NY|^$3V^rS^HlH~l={emB1Z$K3B}HcuUXrU8CVgP%0ulg_iK7DL;tq!BdU z79@YYm{*{&pqJ4hrnzH*pF=ZQZJD;9O{&^bMy%GMJ8!d!6jv_rFLxWGo>nK+YG;i z96YOK^HP8}-P-va;T!b-@_Rq{$q#<=HXe14(31xICHoAwunOUu{(ORD;l$q?h{pc; zm6u*@!T;5qTCS`n0#UOfU|7Gi774Uh9F*jOqS-TwGAyQ|LbM?BLNYTfCSx%@dytt< z&Mx_xOtH1xL-^RggI3r-tZ3z~RyAAy$#wpIT{?Tw|Mm-Szy0=4v~}Ghw{}{>|MNoG z2A_p9BcB+FMWdsqzIE(;6a3dpwbe>F9%}L{gxmWU0&-5#w2D#)C95S_s+L00YEH_k zm9k<1kArvY3jqZjl+vQXsRM!!$Jt6*(>mqyYPF_rYm$$3e(n>&N7NlCnEDgY$6cn` zJkPxF_TPRR!~fo2zPr;>?fm&7obg6=wG#!5U-AtO1jojr(S+|?9mg8kzx4Vlf*);w z-&7nN)dx2p1VUK@em)Q{7eZpC;18Aak~Eb_K*?{r2y;6P2iunD4fr)w>TG3Y74pYL z)wgO^wX-+;Hb)>mZeVO;Vq#3BJ}!Ozg3;(7`P=`bFYJEr-PV%-jeH5i*X?{>_6NiK z*!)a-B02uzsZ&jo|6d`EY7rG@-wV9GaQkp5Q`F!Wa#5(`V{$1c#}y?h@LoQlw1t0r zDqC*H-U7e8vQkECHLK+kG&kXZE5x@kd`Elu*hA}RK@R?=f-|!-xJ~nBR#&2)3#6`* z8ePr+42HvFZd3Do&xHR-U3Ij8pVQ$d)2WOMq)6n=dt&ioo!d(B49C zXD<&2rivDe#KL$P`+(m-!?n4beTihIx zxjVP+%*@=G7~gnwx=z>XRkyul;s+qOwX5#*nzG*rKiU?4Dm5k3vOMg@=@*&E%F@hB z%_HuAMdO+kek=OW?6EwA@YBj3lc<(f4p#U|d-ewWjisg1a-|TG3yI-ety+c_Pu7#z z-2*yeIyv1nVy~=;XT3enN9UN1(?yvNjK!lL?&(_uJqvK?A&w^ z#Ys~`BY4|SILzT5W!H9gcYXM3!Sq|f&)C!s9B^@AY9#q|JQn6U7*sxb^wHYyt?Kh5l+!ml)z=rmg${`(KgwX}mtc*uCE zpp+|W#*?TmwuKLczKZ~7Aow#Uty?Vs=)E<6e-QLe-}kb!sQk-EZy{)(#h!>0oq zs_FqCytaed?h@<}@7nH;wu-sak1m6mokzP7eG7p#q6EVyb@+c~mHbr7(MC}_;Gq=YH?v&O9z@7uTW?REyO zvZS-+_Uz%1%QB{yYbQ zP~mv+>*V~-?#^it-cUDD+VasYb%_Cy+74Q|+}u>}Ize#b(WcfF>IA$J!ds7a?-eVU{W z|1CKbPu7=dwZPat8VbpuYHAtdK4aY9!Vfc3nRF_T>(@3a8}ti#(KPr~2)|G$Dj{!j zDwIt6W2KT((cs70!M}L13;wzUe>u)wyLjeYk2dTA((UbIfp>a(P9!y}XMRUrVZh=J z7HjJM4*X-2P~V`QnAqIeWT2W+$B^##jgF2u!0gV>qdq+a87?hg(6jj%&iuJPf`I5z8sFn``xg4a6>`t9xq>S0^g6CV6@?wc16U{zj~k9 zdaNGzkV+*JQ`*|1HE_`A0W_;EW1SD-D`+hSUL+wg>jzw}Tv$!*4gV5?f9C2*q*=Op zdb$h)lAWAi3WC8qGt;LvtH!$qv6IXagswm1j+b|KrUk**H?z6BLZki|K$pnm_O8kW zH+FWz_4RMG1a9~^+e!Y{^QBrYrVY61OoE|BIf-IZQ%O1gInij7o6N&5B z!#G%zV2^7bk<_-Jk&*#FF7l~(-Q*0}-8qe8vF`nsY<_;c%q0cK!l!N7@|>e^(s`Bb!Laqnz?|VC4_2rH3>*Md zXxyOkN^?7F@B-;?v58Gv*KH&D-^drL1p|H(nLUXBltBM=Uc8a`Oj%G%J?)!hZ3JMafN4Q)&~IrZI{n7B0-o|w6_w7I#q5+Ns{rpZr^&%((o z2MwCd&HEGa_~_WgAi=Hds1kt-iw!}$KTkEM0Y{zi^wHY2E!KkY6ZS+VnVlLaY(cs{vc>b*Fk{pOV_TPF)!M#o-VB6g*($TUa0-X zW+x`bXSQ~CHrLiR)d@Ir+T45ujmWi~&EsIS1_xX`t%53lU}I;;3o!h#txYxDX8$1h z^wZD1yQ{%ZH^DC{F(~l~99o=A;s9W@5q}Hs#zzmg;6v@n_Lc@e6v6PBmYYL9PInNT zoPyU|D&t|Ht`-7;kRS9x_@h6}qKlo&72#|%mH<*!28B{OmCSJm@6vS;>JPU$#hlKskdqk@YxP6 zmWM`3hEO&f^D%A2T;W$}+7g0ATOQC9U{VP&9=IjaA&z3<{5k}Vzx&Hye(>)4B9wer zIwvt8l_mrwJXVK;)ZU0vGG4K)ni&w5(xpeN#nKPHJoFMRc z+Zmaj8>5lw;&2J!@riNNCMV$7OAq14<97yO7dd?6)2PkdVZq?7*)WCFJaCTPx-~`< z?X&=#2-GG2metf;oGn23aJGuzL&<`G9}j;x644~z*(T{zyLdOM@qEDK3ZZ1EFiZzH zLChpmanLz9^_zeCr{4&j1SMxZ9zQAYY$i_90!4|#Jf*|etR1!B<%B>qfi}$H{nJqA z!vS|&NhaFDM}Q%9)UI9Z)M5fiMh#%*>NLfu}Q5HQa*f`pt^~}JtrvQaOdIf9tSv#UPHITMgvrL zXJ>oUqb>ZeE7?pQ+ByjtDgET_>UMPx`d0XZVgl#7eA1>}1||-akk`;qt%5~0wX<%( zS9qGyqeyWl&=eo*PwYMxJ{0PDN4RI^rf25rg0Hv3T|FmzI(xc%uJpjk!HJ$8fb?yznq{FxA{9-nhgTrky8bk2&+sL-r2Yje@#DkdO zeu5@h;g@CJ4KEc-@35jLsTRf`3*RyX^pB5^#k^#L;CF%(SFc_>ckT)rA1+?}o2yqG zJy$PYyY@F%E?&BN^~%MoS1w(>_BVfX>C%;J*REaZKK$|Ff1`K@+6NGRTuvD(zdij1 z_$cok=W)9ZpmCh`+r#sEmKvT%-X)5$G;MG2pcQ^)Dkcw$JbWjMR2bA&jMoj}KVI@J z&8Y>7XirS_K~QI|T)cAi+?8vWE}gq{@#@dd5htL9bOLt8xhvrH=k|W;U}Pl>yd;#TfflXCkQ-`ZvFgYn@|t& z_XqrN9>LH~O`o7Uh9PwLrp{kZ!bu7ot0j^5xbUFC@}A^w{$ohKuJMc~CNrpYU^{WH zr{~-WsA^80>joDu_H-RSdG2I4)J12`be}kRrW^J~4*^d*(_ZfYqMh1Nvhh>~D*dD! zPbag;(5yDnufJfzj~Vb?jQM}G3+ZnWVOjgJgmZJCws`lot>T9FbnSq{2Sdm+YA2Q z@Du42)I0K9sbm2Oezj5dxAuU~(v(p;{KJ5c9j z;4Ky!PcQ3QXG`CN)2M?QtQ`cOB3Kle6BrJ8w7ra!`T0rocrWPMSM98SVe90Ka_aC& zJ~})s2bgy7>#d4c9J06=bt1bHjX$JgfG5kNZz+Zy!V;MN)CIZo0>)RIc zW~<|`OTGc0p#T@Te}87~{v=OvIQfBg8Q_8wfaZ|D1n0XX@ryt&@Qoj{9yoi4wmUjR zIS8$^cfB!a1`Xfg4GVlgLhw=1Z|v2q!>?9r4bH!^kWlkUEBsF`_y-D~ky8!uOLt-k zIgN%~IWVOenvL-FjF%1Yq1tgmz_3Gob8|Ou-oMGRAr{afPVxXKvrvQkJ(S4OfMrqL zR42+>LNY7~rI~?N37}ZQm7oZc;RWEJ;jEW((WHy6yQdrsP0&sx`2q!8q6VKp@VB>2 z_*I+)uUgx#+2CWz@6zCZ9QGf_N&E5OKfv%yjglWrL=%}rESd19wzrUHrxpK)ZQ&Eo zUikIRf4+Hhl%=B~flcuV(GwG(IrT$mwF|=!s_NE89sV*-LRena(}8WNB?LeD z$>4t)>`nMk?Ud{~AH$EQQ?W!c6t8R<18!^Cx55vI$e&LW#It|@v$;CFy$gTMOK&6_i$?6U$DaD~`_hZ9@@lJV1Q2(TjW#fBNE zkQn$Bgb;iqbfmVeYTHD$bZ#geA%b5>PV5W5!(J!jV-Rgx7nN+WzZ9!tcb z){jk<5(~Pa*-T%zI-4aQJR6?-^(()+IpLx>(o6F^C-p^nILmhd&I?>TA;maqSaK7R z=-_C;OTYzZLeP*5xg35!N5ZKoR4mZ6aiusm!85!|K;n{;8ld~P=DYT(9)U~8RNjE=d{F@&Gbl|5drBh^8{kg zuCiZ3b+yw3KP%tBF=dHpwlb9{L(CTV>+9<_lcyDYRtmsrE>z>18AAXEkAfX>*q0OP z6H3rxAF(0C40Fbm$r^1<0PhItme*u<^YT9y%Q|0eMI=FIht@W zPJv=w@CnPnPeytI!@TCv2l{VZTg-R^1zN#>s}cTER!*kTGGZ#4uPnzCWi;Tfo04y# z-wYqwH1;5MjVR?X(k)U9TK=JQ)*XOg82vn>Jc1rmU=M)Tf?lvyq)pLa7vT9XRQe!n zgLac!s4o_yGl| z0K5U(MLX>9k=lti!2en?E2pQD$z(j4RLZLbIa#h@dq=Zz)Y?OfxxZDb7R*VO0beUr z42)1A5-$v44N73I38_cDX{A4G>)HAvt)^;ob0YY7nNn}evuFUe!LPVMvYJz>*?d(d z0lx~hPtJt@TLZqfGy6bz>FG&d&xcy?t6W{}K0KOEWK`1J4@qk-Mdg6h&9P$UE(2&b|q<}vlB*Z{Sq?+Ng zP4J=QPo+?8#CW!>lveYQeqHOM5EAQTYiqq=mHcO+HMs9#XMfE)A*Rui%CmUcMPFZG zq22+q6~5wfXIBeKO)0FVc)*s_nyR#h4^@jON=R4m9L-a3Orku)ES%_3Ud{!j9+3Wo zhX@4(LH4)>j}+qI@Fh!PlqaF8B%@I-8sOuSKj5OE*&C7=R)&{NQji&u^`}CTz{_b# z43T_Drb0QFMemqur-kH4r*O`ZM7CB^N|jt7QLJv8M$dX(16kn9y4oS&fau(p*QOC{ z<00BA;d`}CJNz8WrOG9xT2jihA<|WbgKvGnwZjLD0L=h6o#S03k5i5bA_uh&g`(s* z5!zn?$t{TzoNqwABT1n+#|(R+DaJ#|2k|&agxC=8@=IcXCPFSapJXLZ6vLO|BHzoU zJW0;)fftWc^hD|Uc#PpItt4NWji!-nEuAb@D-V=%<+c>fRkycwkJ|bc&bDiGh6z6s z9~9$9!P8H79!RVInWw*HHZA{oLoJfSaFPY#FIS41=XQ!vy?LHH(Nk~FasTf>Sdae0Km65+ z8wh?$hrgN#r7K%d_REzh;}A8;hwu{(@Ev9ZpLS1ZW0AIit_?f{fQsLo0O*CikY$4% zPRL7$tRk%zAc>L*<3B^7<#sJ9nWP8@iBkZQ4vVq52mHlZ8E3CgX5nGkG&-YG`eii@dkBr;Zt5>x&+bDDTRV_LCPp#?BU-<6#p0Bs( z&NXC1|M}H-cXn%AWdnXn=G}>EHCL`o$#S-)OMVXdcIbi~zO~^gl>_L805qxyz2+jy ztBAY6Nf8wGW#gB0`(8temTXWNOlWP;PWY!Bds_W<__1`^2LIm`5PTG-nS*);exveA zsZz}Z{GsICQq@?VLNf+1iYO=@k?4eckZvAd;aXAZjQ7;|-M1*MvVM0y+t;uu3HrO(f(*SuO4dKDK>mz2YzD@p2d|R7p^{8J;0& z(jy?YG>N=<6r5S3wH|_#1PVC$L`sA_h;9ESt0Ki-rr`yd)h(`V8@a^$$MGtGVS$GMe;LK&qAP@QIe}A!A--Jv`&#DIf?8*&C2UGUt*6k0>YMlu_`zuEvlABv;2uW2|%tiajr z%51i@S}IpoOZiMZJUkqZ#*>-51*L?&hvkA5e)|~ugQ0)qneTu9yU%~;TTk1L58B{E zOT?Amu4a@`+$!nUtn0TpCbt;$3u~p0|CJ$$We(Gy-{eu_`PA7<^6G& z6b*&^Qgj$z3F1@;T^j*t)du2H0G`Fi{lk)9kY%==v&V$b#nWqc_<0B)g-hK=ITANE zwsxz9Ob+Eb;p-_KYc;i;O(Y8$ zMJ@Fs_=(5CCs-CvqgW2gv&$=p0<`#Dd_WqOU6ddsLV^J2074+-5@|0l!FiVy;|N;v z%M#Q+l7~dISU4LNIcT3Uk|@Z+e&9DsJ{&y}e5I!43_{Ct5dT!Jg!6cy>SB7$o+`>} zV^KR&ye|2O+1`lv&0a4E0O^1Kuckiu{*T@@WZx?J27I*?lM|_AI$OZ`7c|G3fZ@CL zhL8A@PRej(Xe-ayg9K+qtjuY~4MS_|(hORD!z6X(;=pI(`n>p@J*N8Y;s4*+d?+@R zN+pY$TO1cE+(Nq`GVmLrvL`r!mY!*Sbvb9z`8O<*|A~q*)Zus3JF!mx$TL6s%`fgj z+5fIaA82kj2!Ge2c2L*|-fkB{n@p2a*$kiB7ktyCcUV?Yu$!KAvQ8rgR=aCuNIGnr zJ=(kX_l6&Zf}cUTiJ?J*{rRXggSuNSq1r#$T&}RFyuXBW(E7Sn@^zixQ5RmM^E>bm z&|wS(^>KjE)wWgGZSc+W>$3mMkKTRbH@`UYOkMV|qbR`cdmm6X+)a^=X0qs1<+{xa}!3&{i zk$g#${0>v+>velN>auLW*D!Y&!fP8|3F44OyhHbmTJ-*r@4WHed++_|$P2pc>pH&< zUoC~B&@ir5l&V@q#fYHRRQgkDHXd()-_RNi&wcx+o&>%t*(mw5iy=9K_94a-XqR|A zkG2m*0t)`Ie>6<#t4gsdp&`;5S;j?x4M!F%~ z4;uX=-+g!I-G6!Go!>m8kGf6pa}1Lyr1QB%p`4QCoQl1gHux>KF4?WlPnEqD{*)d5 zSF%b-zBLtU?b>?7fQ!`&FjO|^Fm#Jy7ZNt|&10+H zL#DE~b{f_^FTC)NZ`|AYjj8wH>%&MK4EVEdA**DIqck~}q=ett3?C^hoRtd|Ql$V%nW;ov4oQ+<47`=NU3gG2dZDH?!0*twSpYs^Gyh5lrhnv_XWsbDyZ63t zTAU5=OPq76oKvc~QcVUBz6#ZjklGu*VeQ!A*AW`@tectYo$xsL^>^rh#{xfNhyS~o z#c=p`GL|pom1St$<9wqfTt%;tO~*ol$Hj7-r%xP)LmArm^r6kp*CijP&eG;u)-C|n z`fV*Fzr!?f?ADI)c4O4N_oElyIAYp7Huz;1NK^`iic&6n0O2Va@T2YFJM8cspBa2l zx&i+0r55E-CK-psb6!@=Rx3&#)hkpM^Gd0>R4OjyZcW7HfR+(~7oyrE>pIf;+McWq zyf}-sasAfOYGT#!lD=}Qbs2z~A8LPihlbTd=un3->OS+ryE`BL=$Y^8^aED-13q}L(Vye^UaMNsp*fr2J2kDcC;S$F#{wU!owOBxQjtSb zsU*}nX$rWaC3PDmQ9;%{%IC2NuYu*|rS}zO0jHz8bL+!8{De*C6PnJqr7g4Sd<@?v z*m|TwM_unXXfMOwKXT&{ax>`kZSc#nP#T&$r9!0|V;q4BG?*U)zqvU--DZbxQ#%PI z8kkCFib}b{i&N=*RjojiGD@=|!;1MGROX>ks}@XRwm`N{Lp-luHvw=0>b;E9%3bCqgZ4rOcD+JOUZG`dgtj?WW* zd@&kGr*kD`Rgp?nloqsHDCHSIiMg7(QOGHU8_`=!E2V|`eE!}8MYHqYx^7xKK=xvgD+qM5CM) ze%nZ8!tPwqeLoEhHRA}|NUhR$;Dc1t-@(7@@EyRDYLNUdd=tTkS|?XjGfY`c^Q)>- zs4e75<;wcq^76e0AHMVU!}YCNt#W_)t?#^Wqf*!TaSB-VycL-36-|}_?bz|N=RdXf z!yg_)^zHDi*3R#KQ%U%f(6Y~!)R;?E^Ww5vRH^~F$Q6oWrS{%~hwr?jt`|RexUraj z@Xjy(1;dXf>hSA2UjvP@5D-QbVBOnE^v&IeZT|k8Ss%D58GzL_ir>zJN5_1GVe{DG zmvn!ArHY(uRXEV5<8lEFxCp*%h3_DaU4F4CMJQ_LFE^!aJ;3&>*N;<_4Zhvf{Ngv4 z#>M1HNy)FMv#v~*^}|oEY{$hceQP4DK7@Vp-aGI4hvFOR(%pw2z5U**4L&BWfj^|_ zda?^RdRoBmyMKRfer9HFW^TT}h5DyjZKx*4Rdve;jMbGE@YPZR4ztOr+1zZdSVry; zl*k&xci|`=Jjo)c3zu69=c&smHTp|0)k`(t6voy(#@fO93-vQ!X_4;Od=q-lOK-kP z8}JJVeuJI=#lTWZOl+(`vu0OK_X(V=ZWk8Rf*1+M#90+y&g#RDqJ4LZHMKbV@SXPX z(Ly310ol_Hy3bf;nH-pz9t7;%{kfZ72jzqOZ&HApSeb-}U2BiV;2FNT%}1N_C`+Py zZf0_Na(ZUci{3o|F-J7bbF{v$tHEC{8KEPgP(VTs{b8-FZzk10WtDsg|Io3^7clF; zzHq?~|H3P;w&Qmo?bj&E9l}>N_zjM=FaCuxAtbj-C@ml43k{uWIiFXnqC3Yk>uLp+ zpsgj`BNN-IlB+%Zs1ASF=2$~^%c1UW&~>g0bmI(i27G#QXGH|zrMYn&pe)YMO>@Av zrrrT45J4RS%#5n#>l+0iqV8(xaf_z`=v`5F#|@jupl^qdA}ZiDkh`5hDaxYQEgR=E zP4Hj5aQ?4Ra^mwpL=|EF`U3ocx4%YO=T%gO=haWA0J}g$zrFHn+6Eul`G01G|Nbpu zYPXbM%;%NT`c}14D&z{aTC{In^r-4`t_;8FSbw&-tv<+ZtF^^F;CG#aQhy0{z{N{Q z<8)~@C_Oqi=458(XMDIj*qM0dxBC%-W;f;&Eb9McK91?r*NR zffIh@87I&eY|K@4yW}gw$?9rZt(I#lT7W}av~t2N^_ETTVEBmrsiQ~FUcP+c@((Xu zMz;&6UU~EN*WY{-{`z#_zh;Gh2upt24nHeE+ZdJaDWan0c|56IudJ$gjiOM2Ms>s$ zpN8;r5PqR8e3Tiw3v^vN0pPDoCvmP;taezA0loLLg2kkVQ6)+c2;{Ra3snz@}z=5vYCR!Wk~XqSqj!RKu7 zFGKW~PdU$@avnc>>eR90r;Z&xb^iFVzyIOcAOG-&@Ot>!&)OEJdXm-vKivplnH3ea zq%1C$^65;mw1A3P^XN*S3Tt5+U6)2yg#QYZ(`v7+$dn?)kPX=_)T>N1k^`2X@(Zo;7jb9Ityjpc?;@# zW=Y)%0%LK-^l>&yK0{}eDW#k(p+tmyrB;j3#qTe{jAHznURH6i?K-2n7lJ*SyHhqPEz zDzY*^1V-=A4B=Pl(ff0Qz`dnTBMS(PrxWVhBeYz$qh^73N1Z@tMbw@7nMb=f0RYXO z20MI~&6Ki*N`7^fqgg7WR;mRd(?as0U3vNZ(No7xogz=2I(qi_(aT4{`SZt)|M2y* z&Z9?Pd-G?nAAI}S>sI&#-vs}Um0V~ANq%{ec6!1K+bYCdoRY*;x$;0M6!MFuJBBn!at_QX%2$|2AE^kO$8)peo=>mqt$Wu}+9IX{DwEMk@4i#C_Q(G>)t z%BNR$*H+dxp{n1BfFX4^g3j`8?!X?&(}vRN(EJUE{&ySUlSx#PURkY5PJ|o5Z=v%M zd_*7GJ*O^QK7Q)_*~{loz4+>@m(RZX>WeSF`1+fl0(;mnd_srsNj9jRr~WWk7%uIW zipomb%_oZG_3f&nl)QlOz>f~E0%b7~O)e}g779=yJt#NA$5aT-n(w}fazvA7u3f!y z?%c&Q4qS-$^xXYPrxU^-#TSAX=^tuB-GoyuY8)zc_K`ZT?bD(FJ)>^;(C#>9c6a3w zRQUDXLZjl&(9%>-Dl37Lv=AwzDmM(e}1fkirt@{2{J6hM&@Ql z2x=1Qd4}@dSMSsA-QD|rx>?!_$KKN@p&vQ6`)JdLH*Oj}Fx-&EX@_5qhmxhT0w?8_ z1jnUO-5LmgH{B@th;~D}@Zy`Fdb7YM5&YF=_=W9drLb5^XUYk_tgaVx<-6%@X>DV- zTD-sh#&iD|xL#6smkOn<2jE23i#GU%a2^KT*RIx6wUXV478zWc4+G%2KQldpD#1)o zPR>NAh>CLMu5Ip21NYAE+UCmr`zwzof%}mrB-VN;f~q}AM2LJ_U5lY{l?VcJ6cG7`u$LDeYsdztf}fc&t}!_<-3*b znz}l>v|TIS|KRPn->I&B_;7n=v2^3P?`V#-XwpzSq_MLD?=3ia_1ZZ-FMao!ZnPT_ zj<<9DP{V}p&(CAu&fNUU7;x{Ry1~1<>LgM@dhzlM7*N$)IM?0rMHP*_R`;Xfmjobc zgP#;>(vzzq_#ybQ0$FHkHo_<97PVzho&E8D{xR%=ALI67(T-5tcXz=*6kJw6eE%H?U)_Nnv+@4IZ-4O%eTHkm zxBF)SdE(`3S1z78(R1SBr5?P4hMByND>0C+@YvWWYGXJ10l`nt&(F=F>O6oNLLRsI zrL`e2_-F+U1tehSHt!37usDKs#e*!Upk4C)P7tlFDz!>nmR+6v+(H6y7%0Cd`N!*<%iLCLK|^?=!Wnkj07~5 zR5Y%Z3R-qShN42%N}*bbM@5{AM-iLgJ3lY@v<-fu5&rKZ_@zQ=F~6ZIebKmQN-gKM zcGZFq%Bkvy`SQb$?)mzXo(c8A?T_m4q0SF9!-smG=st1c1g=B^FNEHq$+`JaO@Gus z5n*{kk_{eZ{AW45a2hXxRYZ@2R)=f|#ccreWZ z|F^Bw&hN)pqR9t^;^N}cZYiy9-^o5K6}GpxSMEgFDYY`crmEF}3H5exYc>1PJMY}9 ztDRQxNy1o6K~$N!m6^FYuU&Z)n#-rF3v|O-Faak7T{fRSe%RGT5IA}m|4{mZUo(8P zo}!{KH8@HYrfyF~ljT~Wh2-xOKKTib;8X>T(1Eto9^ia^gag8V4_Z5k7Vu*UrBJ-T zm{ZE@n`;|u#X@0StxfiY_}{842z~{^zZ=}DZ)2-8|k@niTcB;V*<9U8g-3DR;^n%M|UEvi#AS0>OQTdD%%WP6H!v}Y7w;5dB& zhF>6wX377bqosHp&S~@c{Jjs?mlx*e^M%5_4{IBD#uRm9F<*i3`v>m!CDao9F10%R zmTJfLxd0m+@VOfj-oUBY&wqO9;U%vYCwVz*uKQF^4 zmtOwqNt83%VeG%uqr1swogel4{iyPd6hc*fQAcFOY%_c;hd2#KeE=df{Rgo+Ig;!X zoc6Ue_`%%_IL+Z?DGdBJ42#lyv`iCW`-XrOLy`+6sI^Hx(JcADCzld&iW(AnXJoyPIlMJ6L?#K?Xomsvl=`Lm>OZG(dwfBOVV=%%I9}DE|wAHql{p z_eaQ?o5)rg8gYWY-cg^n4f-+Pnw5wB(Ws|U?X-d)S{jcQ-cyv~2T`WWe^0G05Cxe2;21-W1qbK>w{NnqHx?dcef@x$8RaG;?(5^MZ+g<(&&B$< z@iF!>^a1IQinJhyP)FC{=UT#-mL?+ke6gr}_|A`B_|e-RJ*+M$#f8}L^l}+q1@GNk zSXx>Au=KuCfY(D=-_ZIY>DW4oZ zE}-L}@Q-G|Ajp(MJ3=|k^jo^Fug4PWk;M)0D_gmc2hfRSC6_BHQ;HJL=8)t!!pB(H z0iTEN6TE!_2#0;sy}%b93-%%SBZJp{6Enj2z|HFu<9(4)ik%s!fjcri9f?c|gRxj} zFf!>I9U7m!?tP5f0aQSi7&auM`epS2H%A^4ng-mb{>_7_@SQtK3BvyYrvI>fZH2A^@eIl7ng_PGgWbP}o^cd#!w8Kgk(IO`do8>53` zBd2}i?!EyE%tSf?D+~_#c<~ z!VaHk1^?buAeDOWgZzd8zfxF^J{zcRY+~lLbOV$VS?DP17kovSWKnDtLBKyx zqHL1j^t9WY03t(`q%><2zW){;+};Y0vgO$1IYh$q=Nqp*>Y3?()M@D()6AT)Cn-v}*l z*<*t{VTZCV7MCn*1>Yw5e>^+kmF3LpVpWI#a3c?ARu2S`pHkQ6OAtOZG1c9T_lx)5 ze*4{u20!+R)XtN$Z`S#xv`jI{0!kyENh{@4Dl0*qAA<0oZG_+UgOE)~k!Smpenf|6 z=Apk*S39lY|IzG(I}k{37HfvuspePI?P|`?-h=Qzxc9~f+4b7(^3MCYkKX>pdwaoe zD$Hm~JW`LHq{EuF66<git8U~=8n3aU)kPP%R*XJSLQ$b=)GDnlnPbV`*%NTFZl$1 zXq#l~-9cD<{+-xO=D=4pX%yK->4Z?$8!b(~W$C0I#*GFGN-Gc0WNMaENmS+t<;u!r zmDO}A^LY55HhZ%V9tZz_%cMBLAKh3gKKuyb|7d#|+Bs@PLW>q_^Oc9Hy5#m0)$OIZ zhxgvm0%hZkI-hX3;3VB8Xa!Y~0;L(OCRq=Q^E;ASa!rz^^{G3YS+*s%(0@TuCLSq^#NqzabUTelqDDM02us_^C$t z|7#}Y5(K$YnlDx#LjD^o_ZKT_EeZPNf?9#<|DjrSv8uYeG^eW78x8RFf=7V$(}3gz zn&KFW?qq0|6*xFsX9UK@p`xoi{16_Gi$SSAXoexVkN{kgC(OE8iU|c^r}46rb~ET) zcpgo%EW>c{$3xRDo@Z&IHT-G?XS+aU%ZmAIu~yAawSw=oT~43+W)!1QR>>#vB+Cx} z4^y{#d471gyqH&tOUuiPi^@W&sy>L0jTO}g1vvKBuJ`#9(AGrxTD9GX@ibIB!*$6g zNIt|vJB%e=E*_5bqKBcq9-d;|UX;z3;URX8lOzFRbcOi1EN~(ZXu&J;9w{1-c!2{R znc*dpi%K5B&%4BULiGBDfZxRjJY2LNG{CPI18yN-P*83lW6OL^EwzCE`7Wjy@NYD! zoj<%j>E?N{2xn1>vM|3;$SVsAC;`CER;8pYuI#7}0>x5bW%u4a2!Bk6AGO1$B@gca zjEhE~IY#mlvfJVLYTYTg!rMVXW(mq@`xNG2rTVkS=PnDACJT_B1ek>c$60@k>&)351`r* zJm6S1Bnr=>0)3na6_<-=+ySVz7%$I)Hj&&;8CaHO>P4}hsuHG zW^or3@~{&ie57_-Nj}yDgqEUQTY)kxF5ONx4Kw{DQ>zl%DhgqqXTFK3ze#&W7_M|2 zKfqYw-)PeLPyK1G-y?W3RRuLH{fbiA$fq-fm2$bfvQ&f@z{0|Ev3T#^{Qcjqnrf%@ zB#SU7lG+1+moUt)M(9-`;PZMg2u`Q2tr8h|t}S0&YmV0Nt4c11DzWMn(BZ?vZ7BJv zmXdEk(H#w157;?Bal_w)^>7rhFQ#D0Z_@cseKjY#L@oip4Q>mI3ya0wT5Wf$hW1>- zdlWyuaC_qRZ%fO?>}o5WZ~yNp7o&YO%H`2^i{ce=l7hd{G5yliQnSJjD58?T{wPnP zvRi;b3HC{cHbtb2MJ&_B*$BU=eQK<8@+h{qfYeTExKZ*Ed$Ki;YZa-u7+y0VCcUQvoUTq053%AkzsySwF_QZA+9$=mA>KT;at z<2kECi!q?IJA#8lBnxdtz)EnM!Eqc#!ym6W%(+~2AVfQG)_I0>aVR}KDMSVM-CZGu z@~}bxnxYg3M_JbOtZgFNTJqIWJeq)$s~pz$xRr7NILR{Lhpq6Lq0`VP_R*lv>%2M2 zqGAYcj`4AT9pH$M?;dZ%9`I4o6^e=^*oWl*8%1VCkD!#b55HI}D5qqm zQpA_=qEgJGD)j22zz78uC6g_qm|1B1fAo&-UVwIf%&K;@QBtQ*(8$ygp)~^>f=Hu$ z+#W%4(X`}(hNH*|QHDY_7{oXae-X4_ko^E~P}ZX%6rk&pqP)nGqM*3}>Ip&|R5Sbn zN8&X5EWE&69xpHYCE1^AhL5q(L4ocY8y)odro%yRu&-|*Hq<*2iFkvPVdsItcLro* zC5y04viunSzqi5vKe8E)7hLkHuJlpFHDs<9{fww!_{+boR>rSSee~XM^q?uz)U-%` zeU~@Q(a_ds;g^L*Jq@pIIA?`(R7wy-JnM#xTs()$Jo7B&EOuF;MjC9GDMGz1-XIg zY3_jFI{+y~MW+}=Yq)m!Sn@M=`2RYopfAlARu>KU#hSXS)>3R7shw>&;(nMO8I}L# z-oIGkTTD%)bvhl6&Q9bzgD(+Id6^_L~d>&-~`BwM4L4n4rm5ZD0{bq!9^5N z9Ytsu!*`%!AjkzlQjeE>#e?>j8-peuq&;H3)>`eL&jZ{+*6HnMSQpdhW6|Vfu#fZ( z^^$s!1ipS9#xq^89Oj)SYNVsCX^nHuM}U)u1JS4#elx;qYHE_-0RMmbMp@wef+tp8 z*4Qt>8CG={PG^-0Hg{^JdmqFjx1v#VAFc`CjO%b{u?5Bl)J-?gQ5OkFpEjzDTWY01 zb{*J`*SwqN0fK1ld$bI=T6}&$5>c@&Tn-wYK)PDN*Z!_8Qc-L5^4|^X^$pn{_jw3? z0DzKTyHHvOvO(>nn&3b6)soCgA}=h~kf{Uzp>7WD*tpN+tujTB0rd1N`_Ty8~hfM|I}Bfl8hLS#u8~|qogUGLj4lZFNDG(>=;Fh+ezGt#={{E zK516J(+wXhd~E$3=+|k4FL^v(ugBwpt@kvCS}XX*O4k1Cv>!-wvX6)Vd*94^nK;fO zTUskAjofwn6ZJ@;4nGt!23%_+JDXoRVEA%_&iA6SqmaMe+)^vGWBAcN+osKMG5p&Q z{#&U^GyJE%T1Ze*It3@^xza`%O1jyl< zkvjY>4St@3mo}WY84X?qZQy?{jb-O1&Y%0^jdZz!Ba<5GY)R?WNU?x}yQvI)=Ltb-|*cc4Bc8zA+Od4P|dOJm)>&G0xEWI{cytkt5Bj#lm*N zZ_7*hj}4!+-L*eqe}}NpqazLQ<(BYqhDSDD$mJK6r4>|CTqzVy{BWFIY=j?;%bL!I z><@iL&Cx>gOT%8?3x``|@^IMd*$Y0X`|U02-^eTvbZGSh`Y*!vLVX>}(#+jKdPt#G zdk!#m_{oZTry2fJe>hPPy_rQ+sAHwPx(3HH&EA2U9yP5K-d73@@X@UG5Or*?W~TLP zmEEu2P94YRSxz$30iM#H9XoWW8Gbn?`LTOJZ&2+^gHY`ZhnoHQgt3G|)M4X0*kgDh z2U@C{x8aEfW)v_pEaC-%eZv3ZH)eBQDPO|%upr-RwNfr=VqY}**L8j-ro(p-j#GcV zSG$aoy&Xt<*@B>Zok$Q2@%`jwS zy7%UP9Ov?!R!oq?v=r+KI?%<=xY>r6Np=^q)3 zdExJ1&^I_5qn`x6GZ2Gh7Y+g$w6VMjM>e2HsAcx{T8cU3lrhv<}Kt$=Kj;Y4An8;Rli=MMK$U z_!tX4Jv}`!7G$|eAM2YL^7RWd5%1vSKqNfY7akw&8}mhm!j3_d_TdTOQvo?ZTek(( z;on$o2mgy-pQ_|UDUWy?^sCi}HB<_Ey@CstmGnJXCVWbVf8kW;G3wO$^Jh<;I(zKY z`LoB*o`pl?*;D5a68>u~;FrJpZ@>CA0lC!tsLBZJ0)9A@t0bgG$wye+5&HOu5Si?C z-@MNH#(llPNzpqp&ind;lM%1aJ>>OyBeZV@&m9c^xX~F>TY-{*WeetX5N?8`u)!KSxy`tCN*6+8po4y+{k%>dKlfa89=U;(hf8p5C z7oF76<4;pZokvem&ZACzBTv1iXJBni)cTSoOKZD({XFAcFTM6Eh99=Tul+y&3!J5V z`O9DagD?Nlzxxkg``Ul_i@*4bZ-(x!H^Ik@CMI03;>&gGYy6o$IE-b zf9k7=lA87RrOI3Cb`=L;!?td=Cdo%?=M|*qFP}dJhujO7&!YU5=aIHQ3x|Q1UU>~; zYnLnK?+%9m@o)9&>oy4IJpTm5AH1oNd= z-+avuzuFf5Rx9{VNc0o+LLL5;4*$--{~z11|L@@J%%3W5l@b9_PAgi_JGAH!f24gX z&F~#ReC057D+m)&g6s1->JItsOi3FOgqCgAs*x$Of=DY{&ImV>@oUJJsSW%NeI>$NnV0mhd;iceLHR zL$^KB^6WiMZ#vWnKhXgHOU4C>R@l&5G(4SgiE=VmL=~WKr{dUig61!978y_Dps8e5 zS378g|IAh<04e~yKlqK3Pc^2}sW+nCf!4_5~NTpoy`}D#UgUB6>{0B6asFCk7_6Hi`#)TRFL_T!FPOiAJW$7i4`H|001BW zNklwP&k@Mrl*V$>|&{;&2a1R9TxbF<@dDYScF-> z3|JQ%hfSD1`ils1Nj9%60e@g5Pln5Ts2B)}@tbOsc8(P@~SYeR-So0Gb!I9WEaS{%{lg zI+UjW0kpVpb#i-mnr&f>U|cL&PjH9fr!oB1rUBPs>USD-zYcx@pb}-5Q;|qG-#B3sma>G`0FFCrh8Ba zxN!#VB z<31qFv)*~;^a#^8?`8T2Mp*Aq+vN*D@-cz-M!g>keyUOOu~)NqIyfRS4){&oUef9I zQn2?a>bQGufN-A%&ePKafaLnA-f@<76N6*EIf3ds4cK0W>*c&OIPInP0UvD(^1DJY zKMCxTPX&gX;UoMGi>b-7hW;^o0QUjzgm^2-hgX`jpBWnJa}Ur#-|=9-4;&ls?~9E1 z05cNwg1(WF(?k7})4q`r@Ac6E&^rnr^^FXT^o_!<=^q%Fp7yncPYG{HH2oI*F2obS z$A5~x9&=#1c-j?D}W%uM!;T%Q*JJ2@R23Ua}jV0b({A&iVq zdMCyPC#EOng5JsLzI}vUp>07DZEOp­Vab>TPhYy4UBB7kbhtwkj9(FXYNO=zPh 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 Hu0mjfV~Gq9 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/px-ccc.gif b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/px-ccc.gif deleted file mode 100644 index da70aafb44d74df9b3bb16ef5d9ab6b801322990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uXkcJCbLI>K1B2pE79h#MpaUX6G7L;iE{qJ;0JlH}UjP6A diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/themroller-mobile-logo.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/themroller-mobile-logo.png deleted file mode 100644 index 8d18d113c3b6afbec1cfc0b545867b4566a61cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19940 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/version.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/_assets/images/version.png deleted file mode 100644 index 6e5d10f3ebfce8fb7af483a6cdfc1276cbcea3b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2254 zcmd6n`#aN%AHY9|kfl+Qipt{#6hm*5b9_L z`OaGIVdlCqtlaM%w}nmnuJg1ZRjx3#u?BvB|WZIl)Y`8}E3OeQt8{-=@D@@Gr)yUFnZ zCWAUb?;juiG(Of#AMU0P_lyp93{gK0Q7Hqxq}`P^&PoGkg}A%?;rnvM?lOh5{D!ks z%UP<~UL_qe03?7^qp5hv~_mOE_E9dY0eW4J@8b!y0N4`I6R@pgOG zS}$&|8#DFk(O#F;)`!HkPV^R;u-0L@OG0ckCR0gin?$F{Ciq6Z|LW_6_1D+>-@2{8 zGH#swRY6&Z4*ZQlC7mC6c3jCG};S0|_7xJ*Aa@)F+n+s16buYpfa$t4Ecv6ue z>p}2L`c+mMj+Nq8n*(Jf+1F<4O(!6kalX^>#>`uo;tXW*1B;?`I5WnA5$VpnX;hS= zm6hT}4|k@AVd!CKdMGL@!IqAPXWd89gH7l`hM9K^M*J`|R}{?!aX(a(=BVFiW6_6( z_o1%#p^W>iF85jKMO-(C!0ASKD)_ox^>MlE$Gm|zoQZc=vWNIJ_(?12%Kdr4HudODdt$tQp^|Y1>2rMTFmKBo( ziAo+9my|dn2@>I7Ry$&%kY7H=IN3P^Clw)iBMWLO{}$dI{+nl35=AFPGFSUj8~wMM`0@WTgRYn%=t zq&kAiPsA`~>Gh$(Z$==N<~D9Ts>cZ*9m>X}>oEnn7(*d3gIDzz!O2?2*|do>R63w) z88HoHI)$fh(l8ES59miCqUYW@#!+9*#IO%S%8Wwh*k7f4U#|!Lw334C85^z-HQioG zn47WKdZz;nyi+P16{si!pNh)5qr3FW0d3??i~JXF^ZO1YnI+P+_)e*nRbHT&y8~J6 z2q#R(yu21uYts=8Wv2m-2{AVu;N=`Y#mjnK^!pS~*d6y9;%{?N`XN;@mhF_bJ;IFK+C7f zYw^4@TZ`h&Y@YyVkHW@{6v(>&SUQ98HI>Wu572XjRs!Ne@;IW0yZ5KaZ;!(V95_Kb zfug}Q;Td+ll#OQ)lzm?UkuBO18O*jc~DQ+uqInK*eWQboT{P zMB$^%5Y|vVk-TT5g=ybbk}*{#Q$PWTCn5#+y zBul0BHkNT?&4RO;7Uxn&iR}qtbyqcBt42{^-?2~Po3z|L4e<7B$%jU%S+>=zyBewQ zfddux!$Ya23K4$`zuXm}r6R_YuX*bO*S(-sn`R@GPywh4yNP#a@cU}yOiqErgB=6U zRbiTHtWIi0a007}CjqPKiRligmxDv5+SohZ+qX^42i}s9Ry1eR!~tDocw31;+NCb)19~I%U0Q z#Io7b>fSTrv|;5|pkO((FQW)ja?nndbBOg@JWeZS>KfT+ffb7& zhCV>@jmmXXhz5o*eq=l_e{t{View Source'), - src = src = $('

').append( $(this).clone() ).html(), - page = $( "
" + - "
" + - "Close"+ - "
jQuery Mobile Source Excerpt
"+ - "
"+ - "
"+ - "
" ) - .appendTo( "body" ) - .page(); - - $('View Source') - .buttonMarkup({ - icon: 'arrow-u', - iconpos: 'notext' - }) - .click(function(){ - var codeblock = $('
'); - src = src.replace(/&/gmi, '&').replace(/"/gmi, '"').replace(/>/gmi, '>').replace(/' , { - 'class': "ui-footer ui-bar-e", - style: "overflow: auto; padding:10px 15px;", - 'data-ajax-warning': true - }); - - message - .append( "

Note: Navigation may not work if viewed locally

" ) - .append( "

The AJAX-based navigation used throughout the jQuery Mobile docs may need to be viewed on a web server to work in certain browsers. If you see an error message when you click a link, try a different browser or view help.

" ); - - $( document ).bind( "pagecreate", function( event ) { - $( event.target ).append( message ); - }); - }); - }); -} diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/accessibility.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/accessibility.html deleted file mode 100644 index 9a8000d..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/accessibility.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - jQuery Mobile Docs - Accessibility - - - - - - - - - - -
- -
-

Accessibility

- Home - Search -
- -
- - -
- -

Accessibility

-

jQuery Mobile is built upon standard, semantic HTML, allowing pages to be accessible to the broadest range of devices possible. For A-Grade browsers, many of the components in jQuery Mobile leverage techniques such as focus management, keyboard navigation, and HTML attributes specified in the W3C's WAI-ARIA specification.

- -

By utilizing these techniques, we do our best to ensure an accessible experience to users with disabilities such as blindness, who may use screen readers (like VoiceOver, on Apple's iPhone device) or other assistive technology to access the web.

- -
- -
- -
- -

More in this section

- - -
-
- - -
- - - - - -
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/features.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/features.html deleted file mode 100644 index 7536474..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/features.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - jQuery Mobile Docs - Features - - - - - - - - - - -
- -
-

Features

- Home - Search -
- -
- -
- -

Key features:

-
    -
  • Built on jQuery core for familiar and consistent jQuery syntax and minimal learning curve and leverages jQuery UI code and patterns.
  • -
  • Compatible with all major mobile, tablet, e-reader & desktop platforms - iOS, Android, Blackberry, Palm WebOS, Nokia/Symbian, Windows Phone 7, MeeGo, Opera Mobile/Mini, Firefox Mobile, Kindle, Nook, and all modern browsers with graded levels of support.
  • -
  • Lightweight size and minimal image dependencies for speed.
  • -
  • Modular architecture for creating custom builds that are optimized to only include the features needed for a particular application
  • -
  • HTML5 Markup-driven configuration of pages and behavior for fast development and minimal required scripting.
  • -
  • Progressive enhancement approach brings core content and functionality to all mobile, tablet and desktop platforms and a rich, installed application-like experience on newer mobile platforms.
  • -
  • Responsive design techniques and tools allow the same underlying codebase to automatically scale from smartphone to desktop-sized screens
  • -
  • Powerful Ajax-powered navigation system to enable animated page transitions while maintaining back button, bookmarking and and clean URLs though pushState.
  • -
  • Accessibility features such as WAI-ARIA are also included to ensure that the pages work for screen readers (e.g. VoiceOver in iOS) and other assistive technologies.
  • -
  • Touch and mouse event support streamline the process of supporting touch, mouse, and cursor focus-based user input methods with a simple API.
  • -
  • Unified UI widgets for common controls enhance native controls with touch-optimized, themable controls that are platform-agnostic and easy to use.
  • -
  • Powerful theming framework and the ThemeRoller application make highly-branded experiences easy to build.
  • - -
- -
- -
- -
- -

More in this section

- - -
-
- -
- - - - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/getting-started.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/getting-started.html deleted file mode 100644 index 042e29b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/getting-started.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - jQuery Mobile Docs - Quick start - - - - - - - - - - -
- -
-

Quick start guide

- - - Home - Search -
- -
- -
- -

Getting Started with jQuery Mobile

- -

jQuery Mobile provides a set of touch-friendly UI widgets and an AJAX-powered navigation system to support animated page transitions. Building your first jQuery Mobile page is easy, here's how:

- -

Create a basic page template

-

Pop open your favorite text editor, paste in the page template below, save and open in a browser. You are now a mobile developer!

-

Here's what's in the template. In the head, a meta viewport tag sets the screen width to the pixel width of the device and references to jQuery, jQuery Mobile and the mobile theme stylesheet from the CDN add all the styles and scripts. jQuery Mobile 1.1 works with both 1.6.4 and 1.7.1 versions of jQuery core.

-

In the body, a div with a data-role of page is the wrapper used to delineate a page, and the header bar (data-role="header") and content region (data-role="content") are added inside to create a basic page (these are both optional). These data- attributes are HTML5 attributes are used throughout jQuery Mobile to transform basic markup into an enhanced and styled widget.

- -

-<!DOCTYPE html> 
-<html> 
-	<head> 
-	<title>My Page</title> 
-	<meta name="viewport" content="width=device-width, initial-scale=1"> 
-	<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
-	<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
-	<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
-</head> 
-<body> 
-
-<div data-role="page">
-
-	<div data-role="header">
-		<h1>My Title</h1>
-	</div><!-- /header -->
-
-	<div data-role="content">	
-		<p>Hello world</p>		
-	</div><!-- /content -->
-
-</div><!-- /page -->
-
-</body>
-</html>
-
- - -

Add your content

-

Inside your content container, you can add any standard HTML elements - headings, lists, paragraphs, etc. You can write your own custom styles to create custom layouts by adding an additional stylesheet to the head after the jQuery Mobile stylesheet.

- -

Make a listview

-

jQuery Mobile includes a diverse set of common listviews that are coded as lists with a data-role="listview" added. Here is a simple linked list that has a role of listview. We're going to make this look like an inset module by adding a data-inset="true" and add a dynamic search filter with the data-filter="true" attributes.

- -

-<ul data-role="listview" data-inset="true" data-filter="true">
-	<li><a href="#">Acura</a></li>
-	<li><a href="#">Audi</a></li>
-	<li><a href="#">BMW</a></li>
-	<li><a href="#">Cadillac</a></li>
-	<li><a href="#">Ferrari</a></li>
-</ul>
-
-
- - - - - -

Add a slider

-

The framework contains a full set of form elements that automatically are enhanced into touch-friendly styled widgets. Here's a slider made with the new HTML5 input type of range, no data-role needed. Be sure to wrap these in a form element and always properly associate a label to every form element.

- -

-<form>
-   <label for="slider-0">Input slider:</label>
-   <input type="range" name="slider" id="slider-0" value="25" min="0" max="100"  />
-</form>
-
- -
- - - - - - -

Make a button

-

There are a few ways to make buttons, but lets turn a link into a button so it's easy to click. Just start with a link and add a data-role="button" attribute to it. You can add an icon with the data-icon attribute and optionally set its position with the data-iconpos attribute.

- -

-<a href="#" data-role="button" data-icon="star">Star button</a>
-
- - Star button - - - -

Play with theme swatches

-

jQuery Mobile has a robust theme framework that supports up to 26 sets of toolbar, content and button colors, called a "swatch". Just add a data-theme="e" attribute to any of the widgets on this page: page, header, list, input for the slider, or button to turn it yellow. Try different swatch letters in default theme from a-e to mix and match swatches.

-

Cool party trick: add the theme swatch to the page and see how all the widgets inside the content will automatically inherit the theme (headers don't inherit, they default to swatch A).

- -<a href="#" data-role="button" data-icon="star" data-theme="a">Button</a> - - data-theme="a" - data-theme="b" - data-theme="c" - data-theme="d" - data-theme="e" - -

When you're ready to build a custom theme, use ThemeRoller to drag and drop, then download a custom theme.

- -

Go forth and build stuff

-

This is just scratching the surface of all the cool things you can build with jQuery Mobile with little effort. Be sure to explore linking pages, adding animated page transitions, and creating dialogs. Use the data-attribute reference to try out some of the other data- attributes you can play with.

- -

More of a developer? Great, forget everything we just covered (kidding). If you don't want to use the data- attribute configuration system, you can take full control of everything and call plugins directly because these are all just standard jQuery plugins built with the UI widget factory. Be sure to dig into global configuration, events, and methods. Then read up on scripting pages, generating dynamic pages, and building PhoneGap apps.

-
- -
- -
- -

More in this section

- - -
-
- -
- - - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/index.html deleted file mode 100644 index c5a695b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - jQuery UI Mobile Framework - About - - - - - - - - - - -
- -
-

About jQuery Mobile

- Home - Search -
- - - -
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/intro.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/intro.html deleted file mode 100644 index 9349714..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/intro.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - jQuery Mobile Docs - Intro - - - - - - - - - - -
- -
-

Introduction

- Home - Search -
- -
- -
- -

jQuery Mobile Overview

- -

jQuery’s mobile strategy can be summarized simply: A unified user interface system that works seamlessly across all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. Focused on a feature-rich but lightweight codebase built on progressive enhancement with a flexible, theming system and ThemeRoller tool.

-

The framework includes an Ajax navigation system that brings animated page transitions and a core set of UI widgets: pages, dialogs, toolbars, listviews, buttons with icons, form elements, accordions, collapsibles, and more.

- -

The critical difference with our approach is the wide variety of mobile platforms we’re targeting with jQuery Mobile so no browser or device is left behind. We've also focused on making jQuery Mobile easy to learn with a simple, markup-based system to applying behavior and theming. For more advanced developers, there is a rich API of global configuration options, events, and methods to apply scripting, generate dynamic pages, and even build native apps with tools like PhoneGap.

- -

To make this broad support possible, all pages in jQuery Mobile are built on a foundation of clean, semantic HTML to ensure compatibility with pretty much any web-enabled device. In devices that interpret CSS and JavaScript, jQuery Mobile applies progressive enhancement techniques to unobtrusively transform the semantic page into a rich, interactive experience that leverages the power of jQuery and CSS. Accessibility features such as WAI-ARIA are tightly integrated throughout the framework to provide support for screen readers and other assistive technologies.

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/platforms.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/platforms.html deleted file mode 100644 index 6cf9297..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/about/platforms.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Supported platforms - - - - - - - - - - -
- -
-

Supported platforms

- Home - Search -
- -
- - -
-

jQuery Mobile Supported Platforms

-

jQuery Mobile has broad support for the vast majority of all modern desktop, smartphone, tablet, and e-reader platforms. In addition, feature phones and older browsers are supported because of our progressive enhancement approach. We're very proud of our commitment to universal accessibility through our broad support for all popular platforms.

- -

We use a 3-level graded platform support system: A (full), B (full minus Ajax), C (basic HTML). The visual fidelity of the experience and smoothness of page transitions are highly dependent on the CSS rendering capabilities of the device and platform so not all A grade experience will be pixel-perfect but that's the nature of the web.

- -

A-grade - Full enhanced experience with Ajax-based animated page transitions.

-
    -
  • Apple iOS 3.2-5.0 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.0)
  • -
  • Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
  • -
  • Android 3.1 (Honeycomb)  - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
  • -
  • Android 4.0 (ICS)  - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
  • -
  • Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800
  • -
  • Blackberry 6.0 - Tested on the Torch 9800 and Style 9670
  • -
  • Blackberry 7 - Tested on BlackBerry® Torch 9810
  • -
  • Blackberry Playbook (1.0-2.0) - Tested on PlayBook
  • -
  • Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)
  • -
  • Palm WebOS 3.0 - Tested on HP TouchPad
  • -
  • Firebox Mobile (10 Beta) - Tested on Android 2.3 device
  • -
  • Chrome for Android (Beta) - Tested on Android 4.0 device
  • -
  • Skyfire 4.1 - Tested on Android 2.3 device
  • -
  • Opera Mobile 11.5: Tested on Android 2.3
  • -
  • Meego 1.2 - Tested on Nokia 950 and N9
  • -
  • Samsung bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
  • -
  • UC Browser - Tested on Android 2.3 device
  • -
  • Kindle 3 and Fire - Tested on the built-in WebKit browser for each
  • -
  • Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
  • -
  • Chrome Desktop 11-17 - Tested on OS X 10.7 and Windows 7
  • -
  • Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7
  • -
  • Firefox Desktop 4-9 - Tested on OS X 10.7 and Windows 7
  • -
  • Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
  • -
  • Opera Desktop 10-11 - Tested on OS X 10.7 and Windows 7
  • -
-

B-grade - Enhanced experience except without Ajax navigation features.

-
    -
  • Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
  • -
  • Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
  • -
  • Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
  • -
-

C-grade - Basic, non-enhanced HTML experience that is still functional

-
    -
  • Blackberry 4.x - Tested on the Curve 8330
  • -
  • Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
  • -
  • All older smartphone platforms and featurephones - Any device that doesn't support media queries will receive the basic, C grade experience
  • -
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/data-attributes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/data-attributes.html deleted file mode 100644 index e1bfd9a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/data-attributes.html +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - jQuery Mobile Docs - Data Attribute Reference - - - - - - - - - - -
- -
-

Data Attributes

- Home - Search -
- -
- -
-

Data- attribute reference

-

The jQuery Mobile framework uses HTML5 data- attributes to allow for markup-based initialization and configuration of widgets. These attributes are completely optional; calling plugins manually and passing options directly is also supported. To avoid naming conflicts with other plugins or frameworks that also use data- attributes, set a custom namespace by modifying the ns global option.

- - - -

Button

-

Links with data-role="button". Input-based buttons and button elements are auto-enhanced, no data-role required

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data-cornerstrue | false
data-iconhome | delete | plus | arrow-u | arrow-d | check | gear | grid | star | custom | arrow-r | arrow-l | minus | refresh | forward | back | alert | info | search
data-iconposleft | right | top | bottom | notext
data-iconshadowtrue | false
data-inlinetrue | false
data-minitrue | false - Compact sized version
data-shadowtrue | false
data-themeswatch letter (a-z)
-

Multiple buttons can be wrapped in a container with a data-role="controlgroup" attribute for a vertically grouped set. Add the data-type="horizontal" attribute for the buttons to sit side-by-side.

- - -

Checkbox

-

Pairs of labels and inputs with type="checkbox" are auto-enhanced, no data-role required

- - - - - - - - - - - - - -
data-minitrue | false - Compact sized version
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
- -

Collapsible

-

A heading and content wrapped in a container with the data-role="collapsible"

- - - - - - - - - - - - - - - - - - - - - -
data-collapsedtrue | false
data-content-themeswatch letter (a-z)
data-iconposleft | right | top | bottom | notext
data-minitrue | false - Compact sized version
data-themeswatch letter (a-z)
- -

Collapsible set

-

A number of collapsibles wrapped in a container with the data-role="collapsible-set"

- - - - - - - - - - - - - - - - - -
data-content-themeswatch letter (a-z) - Sets all collapsibles in set
data-iconposleft | right | top | bottom | notext
data-minitrue | false - Compact sized version
data-themeswatch letter (a-z) - Sets all collapsibles in set
- -

Content

-

Container with data-role="content"

- - - - - -
data-themeswatch letter (a-z)
- -

Dialog

-

Page with data-role="page" linked to with data-rel="dialog" on the anchor.

- - - - - - - - - - - - - - - - - - - - - -
data-close-btn-textstring (text for the close button, dialog only)
data-dom-cachetrue | false
data-overlay-themeswatch letter (a-z) - overlay theme when the page is opened in a dialog
data-themeswatch letter (a-z)
data-titlestring (title used when page is shown)
- -

Enhancement

-

Container with data-enhance="false" or data-ajax="false"

- - - - - - - - - -
data-enhancetrue | false
data-ajaxtrue | false
-

Any DOM elements inside a data-enhance="false" container, save for data-role="page|dialog" elements, will be ignored during initial enhancement and subsequent create events provided that the $.mobile.ignoreContentEnabled flag is set prior to the enhancement (eg in a mobileinit binding).

- -

Any link or form elements inside data-enhance="false" containers will be ignored by the framework's navigation functionality when $.mobile.ignoreContentEnabled is set to true.

- -

Field container

-

Container with data-role="fieldcontain" wrapped around label/form element pair

- -

Flip toggle switch

-

Select with data-role="slider", two options only

- - - - - - - - - - - - - - - - - -
data-minitrue | false - Compact sized version
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
data-track-themeswatch letter (a-z) - Added to the form element
- -

Footer

-

Container with data-role="footer"

- - - - - - - - - - - - - - - - - -
data-idstring (unique id, useful in persistent footers)
data-positionfixed
data-fullscreentrue (used in conjunction with fixed toolbars)
data-themeswatch letter (a-z)
- -

Header

-

Container with data-role="header"

- - - - - - - - - - - - - -
data-positionfixed
data-fullscreentrue (used in conjunction with fixed toolbars)
data-themeswatch letter (a-z)
- -

Link

-

Links, including those with a data-role="button", and form submit buttons share these attributes

- - - - - - - - - - - - - - - - - - - - - - - - - -
data-ajaxtrue | false
data-directionreverse (reverse page transition animation)
data-dom-cachetrue | false
data-prefetchtrue | false
data-relback (to move one step back in history)
- dialog (to open link styled as dialog, not tracked in history)
- external (for linking to another domain)
data-transitionslide | slideup | slidedown | pop | fade | flip
- -

Listview

-

OL or UL with data-role="listview"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data-count-themeswatch letter (a-z)
data-divider-themeswatch letter (a-z)
data-filtertrue | false
data-filter-placeholderstring
data-filter-themeswatch letter (a-z)
data-insettrue | false
data-split-iconhome | delete | plus | arrow-u | arrow-d | check | gear | grid | star | custom | arrow-r | arrow-l | minus | refresh | forward | back | alert | info | search
data-split-themeswatch letter (a-z) -
data-themeswatch letter (a-z)
- -

Listview item

-

LI within a listview

- - - - - - - - - - - - - - - - - -
data-filtertextstring (filter by this value instead of inner text)
data-iconhome | delete | plus | arrow-u | arrow-d | check | gear | grid | star | custom | arrow-r | arrow-l | minus | refresh | forward | back | alert | info | search
data-rolelist-divider
data-themeswatch letter (a-z) - can also be set on individual LIs
-

Navbar

-

A number of LIs wrapped in a container with data-role="navbar"

- - - - - - - - - - - - - -
data-iconhome | delete | plus | arrow-u | arrow-d | check | gear | grid | star | custom | arrow-r | arrow-l | minus | refresh | forward | back | alert | info | search
data-iconposleft | right | top | bottom | notext
data-themeswatch letter (a-z) - can also be set on individual LIs
-

Page

-

Container with data-role="page"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data-add-back-btntrue | false (auto add back button, header only)
data-back-btn-textstring
data-back-btn-themeswatch letter (a-z)
data-close-btn-textstring (text for the close button, dialog only)
data-dom-cachetrue | false
data-fullscreentrue (used in conjunction with fixed toolbars)

Deprecated in 1.1 - use on header and footer instead.

data-overlay-themeswatch letter (a-z) - overlay theme when the page is opened in a dialog
data-themeswatch letter (a-z)
data-titlestring (title used when page is shown)
- -

Radio button

-

Pairs of labels and inputs with type="radio" are auto-enhanced, no data-role required

- - - - - - - - - - - - - -
data-minitrue | false - Compact sized version
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
- -

Select

-

All select form elements are auto-enhanced, no data-role required

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data-iconhome | delete | plus | arrow-u | arrow-d | check | gear | grid | star | custom | arrow-r | arrow-l | minus | refresh | forward | back | alert | info | search
data-iconposleft | right | top | bottom | notext
data-inlinetrue | false
data-minitrue | false - Compact sized version
data-native-menutrue | false
data-overlay-themeswatch letter (a-z) - overlay theme for non-native selects
data-placeholdertrue | false - Add to the Option
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
-

Multiple selects can be wrapped in a fieldset with a data-role="controlgroup" attribute for a vertically grouped set. Add the data-type="horizontal" attribute for the selects to sit side-by-side.

- -

Slider

-

Inputs with type="range" are auto-enhanced, no data-role required

- - - - - - - - - - - - - - - - - - - - - -
data-highlighttrue | false - Adds an active state fill on track to handle
data-minitrue | false - Compact sized version
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
data-track-themeswatch letter (a-z) - Added to the form element
- -

Text input & Textarea

-

Input type="text|number|search|etc." or textarea elements are auto-enhanced, no data-role required

- - - - - - - - - - - - - -
data-minitrue | false - Compact sized version
data-rolenone (prevents auto-enhancement to use native control)
data-themeswatch letter (a-z) - Added to the form element
- - - -
- -
- -

More in this section

- - -
-
- - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events-nav.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events-nav.html deleted file mode 100644 index 3a6d4f1..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events-nav.html +++ /dev/null @@ -1,557 +0,0 @@ - - - - - - jQuery Mobile Docs - Events - - - - - - - - - - -
- -
-

Events

- Home - Search -
- -
-
- -

Framework, Page, and Navigation Events

-

jQuery Mobile's widget and navigation system has a full set of events at each stage of the page load and page change process that can be tapped into to take full control. This page will highlight the most commonly used events and what they do, and also provide chronologies of when these events are triggered during load and transitions.

- - -

Framework events

- -

When jQuery Mobile initializes, it triggers an event on the document that is specifically designed for overriding framework and plugin defaults. That event is called mobileinit, and by binding to it, you can ensure that any global or plugin configuration options are overridden to any value you'd like before they are used by the framework's initial execution.

- - -
-				
-$(document).bind("mobileinit", function(){
-  //apply overrides here
-});
-				
-			
- -

The tricky aspect of mobileinit is that you need to bind to it before jQuery Mobile executes, so a typical mobileinit workflow would occur in a script that is referenced after jQuery itself, but before jQuery Mobile.

- -

It should be noted that while you can bind to other events from within a mobileinit callback, it is likely that you'll get undesirable results in doing so. This is because many events, such as the page events below, are intended for external developers to use after jQuery Mobile's plugins have loaded.

- -

Page creation events

- -

In a jQuery Mobile application, each view is known as a page. Pages generally begin as a regular HTML element with a data-role="page" attribute, and the framework's page widget enhances that element into a jQuery Mobile page control. In the process of enhancing that page, the widget dispatches several events that allow you to access that page and its child elements at different stages of creation.

- -

These events are:

- -
-
pagecreate
- -
This event is triggered on a page when it is first initialized by the page plugin. pagecreate is the most useful event for progressively enhancing a page's markup when it first loads, and because of this, many of jQuery Mobile's standard widgets bind to pagecreate to enhance markup within pages as well! If you bind to pagecreate in any script that is referenced after the jQuery Mobile framework, any native jQuery Mobile widgets in that page will be enhanced before your event callback executes. In other words, you'll be dealing with enhanced jQuery Mobile components.
- -
pagebeforecreate
- -
This event is triggered on a page element just before it is created by the page plugin. While the pagecreate event generally allows you to work with a page after its markup has been enhanced by jQuery Mobile, pagebeforecreate gives you access when the markup has not yet been enhanced. pagebeforecreate is useful for modifying markup before jQuery Mobile's widgets
- -
pageinit
- -
pageinit is very similar to pagecreate, except that none of jQuery Mobile's standard widgets bind to it, and it is guaranteed to execute after all bound pagecreate callbacks have finished. If you need to bind to a page creation-time event via a script that is referenced before jQuery Mobile, binding to pageinit will ensure that you deal with enhanced page controls (whereas pagecreate will not, in that specific case.)
- - -
- - -

Page navigation events

-

After pages are created, they are often shown and hidden one or many times throughout the use of a jQuery Mobile app. For A-grade browsers with Ajax navigation support, the jQM navigation model manages these page behaviors and dispatches useful events at different steps in the process of showing, hiding, and changing.

- -

Page showing events

-

The page showing events (pagebeforeshow and pageshow) are guaranteed to fire every time a page is shown, whether you're opening a single page, or transitioning between two pages. The target of the event is the page that is being shown.

- -
- -
pagebeforeshow
-
An event triggered on a page before it is shown.
- - -
pageshow
-
An event triggered on the page after it is shown.
-
- -

Page hiding events

-

The page hiding events (pagebeforehide and pagehide) only fire when transitioning between two pages, when an outgoing page is being hidden in favor of a new one. The target of the event is the page that is being shown.

-
-
pagebeforehide
-
An event triggered on a page before it is hidden.
- - -
pagehide
-
An event triggered on a page after it is hidden.
- -
- - -

When a single page is being shown, and no page is hidden, only the pagebeforeshow and pageshow events will fire, and in that order.

- -

During a transition between two pages, all 4 of the events above will fire, in this order:

- - - - - - - - -

Chronology

- - - - -

Here is an overview of the event chronology for a page change

- - - - - - -

You can bind to these events like you would with other jQuery events, using live() or bind().

- -
-

Important: Use pageInit(), not $(document).ready()

-

The first thing you learn in jQuery is to call code inside the $(document).ready() function so everything will execute as soon as the DOM is loaded. However, in jQuery Mobile, Ajax is used to load the contents of each page into the DOM as you navigate, and the DOM ready handler only executes for the first page. To execute code whenever a new page is loaded and created, you can bind to the pageinit event. This event is explained in detail at the bottom of this page.

- -

 

-
-

Important: pageCreate() vs pageInit()

-

Prior to Beta 2 the recommendation to users wishing to manipulate jQuery Mobile enhanced page and child widget markup was to bind to the pagecreate event. In Beta 2 an internal change was made to decouple each of the widgets by binding to the pagecreate event in place of direct calls to the widget methods. As a result, users binding to the pagecreate from within mobileinit would find their binding executing before the markup had been enhanced by each of the plugins. In keeping with the lifecycle of the jQuery UI Widget Factory, the initialization method is invoked after the create method, so the pageinit event provides the correct timing for post enhancement manipulation of the DOM and/or Javascript objects.

-
- - - -

Page load events

-

Whenever an external page is loaded into the application DOM, 2 events are fired. The first is pagebeforeload. The 2nd event will be either pageload or pageloadfailed.

-
-
pagebeforeload
-

Triggered before any load request is made. Callbacks bound to this event can call preventDefault() on the event to indicate that they are handling the load request. Callbacks that do this *MUST* make sure they call resolve() or reject() on the deferred object reference contained in the data object passed to the callback.

-

The data object, passed as the 2nd arg to the callback function contains the following properties:

-
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • deferred (object) -
      -
    • Callbacks that call preventDefault() on the event, *MUST* call resolve() or reject() on this object so that changePage() requests resume processing. Deferred object observers expect the deferred object to be resolved like this:

      -
      
      -$( document ).bind( "pagebeforeload", function( event, data ){
      -
      -	// Let the framework know we're going to handle the load.
      -
      -	event.preventDefault();
      -
      -	// ... load the document then insert it into the DOM ...
      -	// at some point, either in this callback, or through
      -	// some other async means, call resolve, passing in
      -	// the following args, plus a jQuery collection object
      -	// containing the DOM element for the page.
      -
      -	data.deferred.resolve( data.absUrl, data.options, page );
      -
      -});
      -

      or rejected like this: -

      
      -$( document ).bind( "pagebeforeload", function( event, data ){
      -
      -	// Let the framework know we're going to handle the load.
      -
      -	event.preventDefault();
      -
      -	// ... load the document then insert it into the DOM ...
      -	// at some point, if the load fails, either in this
      -	// callback, or through some other async means, call
      -	// reject like this:
      -
      -	data.deferred.reject( data.absUrl, data.options );
      -
      -});
      -
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
-
-
pageload
-
Triggered after the page is successfully loaded and inserted into the DOM. Callbacks bound to this event will be passed a data object as its 2nd arg. This object contains the following information: -
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
  • xhr (object) -
      -
    • The jQuery XMLHttpRequest object used when attempting to load the page. This is what gets passed as the 3rd argument to the framework's $.ajax() success callback.
    • -
    -
  • -
  • textStatus (null or string) -
      -
    • According to the jQuery Core documentation, this will be a string describing the status. This is what gets passed as the 2nd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
-
-
pageloadfailed
-
Triggered if the page load request failed. By default, after dispatching this event, the framework will display a page failed message and call reject() on the deferred object contained within the event's data object. Callbacks can prevent this default behavior from executing by calling preventDefault() on the event. -

The data object, passed as the 2nd arg to the callback function contains the following properties:

-
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • deferred (object) -
      -
    • Callbacks that call preventDefault() on the event, *MUST* call resolve() or reject() on this object so that changePage() requests resume processing. Deferred object observers expect the deferred object to be resolved like this:

      -
      
      -$( document ).bind( "pageloadfailed", function( event, data ){
      -
      -	// Let the framework know we're going to handle things.
      -
      -	event.preventDefault();
      -
      -	// ... attempt to load some other page ...
      -	// at some point, either in this callback, or through
      -	// some other async means, call resolve, passing in
      -	// the following args, plus a jQuery collection object
      -	// containing the DOM element for the page.
      -
      -	data.deferred.resolve( data.absUrl, data.options, page );
      -
      -});
      -

      or rejected like this: -

      
      -$( document ).bind( "pageloadfailed", function( event, data ){
      -
      -	// Let the framework know we're going to handle things.
      -
      -	event.preventDefault();
      -
      -	// ... attempt to load some other page ...
      -	// at some point, if the load fails, either in this
      -	// callback, or through some other async means, call
      -	// reject like this:
      -
      -	data.deferred.reject( data.absUrl, data.options );
      -
      -});
      -
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
  • xhr (object) -
      -
    • The jQuery XMLHttpRequest object used when attempting to load the page. This is what gets passed as the first argument to the framework's $.ajax() error callback.
    • -
    -
  • -
  • textStatus (null or string) -
      -
    • According to the jQuery Core documentation, possible values for this property, aside from null, are "timeout", "error", "abort", and "parsererror". This is what gets passed as the 2nd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
  • errorThrown (null, string, object) -
      -
    • According to the jQuery Core documentation, this property may be an exception object if one occured, or if an HTTP error occured this will be set to the textual portion of the HTTP status. This is what gets passed as the 3rd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
-
-
-

Page change events

-

Navigating between pages in the application is usually accomplished through a call to $.mobile.changePage(). This function is responsible for making sure that the page we are navigating to is loaded and inserted into the DOM, and then kicking off the transition animations between the current active page, and the page the caller wants to to make active. During this process, which is usually asynchronous, changePage() will fire off 2 events. The first is pagebeforechange. The second event depends on the success or failure of the change request. It will either be pagechange or pagechangefailed.

-
-
pagebeforechange
-
This event is triggered prior to any page loading or transition. Callbacks can prevent execution of the changePage() function by calling preventDefault on the event object passed into the callback. The callback also recieves a data object as its 2nd arg. The data object has the following properties: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-

It should be noted that callbacks can modify both the toPage and options properties to alter the behavior of the current changePage() call. So for example, the toPage can be mapped to a different url from within a callback to do a sort of redirect.

-
-
pagechange
-
This event is triggered after the changePage() request has finished loading the page into the DOM and all page transition animations have completed. Note that any pageshow or pagehide events will have fired *BEFORE* this event is triggered. Callbacks for this particular event will be passed a data object as the 2nd arg. The properties for this object are as follows: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-
-
pagechangefailed
-
This event is triggered when the changePage() request fails to load the page. Callbacks for this particular event will be passed a data object as the 2nd arg. The properties for this object are as follows: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-
-
-

Page transition events

-

Page transitions are used to animate the change from the current active page (fromPage) to a new page (toPage). Events are triggered before and after these transitions so that observers can be notified whenever pages are shown or hidden. The events triggered are as follows:

-
-
pagebeforeshow
-
Triggered on the "toPage" we are transitioning to, before the actual transition animation is kicked off. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • prevPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we are transitioning away from. Note that this collection is empty when the first page is transitioned in during application startup.
    • -
    -
  • -
-
- -
pagebeforehide
-
Triggered on the "fromPage" we are transitioning away from, before the actual transition animation is kicked off. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • nextPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we are transitioning to.
    • -
    -
  • -
-

Note that this event will not be dispatched during the transition of the first page at application startup since there is no previously active page.

-
- -
pageshow
-
Triggered on the "toPage" after the transition animation has completed. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • prevPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we just transitioned away from. Note that this collection is empty when the first page is transitioned in during application startup.
    • -
    -
  • -
-
- -
pagehide
-
Triggered on the "fromPage" after the transition animation has completed. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • nextPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we just transitioned to.
    • -
    -
  • -
-

Note that this event will not be dispatched during the transition of the first page at application startup since there is no previously active page.

-
- -
- -

You can access the prevPage or nextPage properties via the second argument of a bound callback function. For example:

-

-$( 'div' ).live( 'pageshow',function(event, ui){
-  alert( 'This page was just hidden: '+ ui.prevPage);
-});
-
-$( 'div' ).live( 'pagehide',function(event, ui){
-  alert( 'This page was just shown: '+ ui.nextPage);
-});
-
-

Also, for these handlers to be invoked during the initial page load, you must bind them before jQuery Mobile executes. This can be done in the mobileinit handler, as described on the global config page. -

Page initialization events

- -

Internally, jQuery Mobile auto-initializes plugins based on the markup conventions found in a given "page". For example, an input element with a type of range will automatically generate a custom slider control.

- -

This auto-initialization is controlled by the "page" plugin, which dispatches events before and after it executes, allowing you to manipulate a page either pre-or-post initialization, or even provide your own intialization behavior and prevent the auto-initializations from occuring. Note that these events will only fire once per "page", as opposed to the show/hide events, which fire every time a page is shown and hidden.

- -
-
pagebeforecreate
-
-

Triggered on the page being initialized, before most plugin auto-initialization occurs.

-

-$( '#aboutPage' ).live( 'pagebeforecreate',function(event){
-  alert( 'This page was just inserted into the dom!' );
-});
-
-

Note that by binding to pagebeforecreate, you can manipulate markup before jQuery Mobile's default widgets are auto-initialized. For example, say you want to add data-attributes via JavaScript instead of in the HTML source, this is the event you'd use.

- -

-$( '#aboutPage' ).live( 'pagebeforecreate',function(event){
-  // manipulate this page before its widgets are auto-initialized
-});
-
-
- -
pagecreate
-
-

Triggered when the page has been created in the DOM (via ajax or other) but before all widgets have had an opportunity to enhance the contained markup. This event is most useful for user's wishing to create their own custom widgets for child markup enhancement as the jquery mobile widgets do.

-

-$( '#aboutPage' ).live( 'pagecreate',function(event){
-  ( ":jqmData(role='sweet-plugin')" ).sweetPlugin();
-});
-
-
- -
pageinit
-
-

Triggered on the page being initialized, after initialization occurs. We recommend binding to this event instead of DOM ready() because this will work regardless of whether the page is loaded directly or if the content is pulled into another page as part of the Ajax navigation system.

-

-$( '#aboutPage' ).live( 'pageinit',function(event){
-  alert( 'This page was just enhanced by jQuery Mobile!' );
-});
-
-
-
- - - -

Page remove events

-

By default, the framework removes any non active dynamically loaded external pages from the DOM as soon as the user navigates away to a different page. The pageremove event is dispatched just before the framework attempts to remove the a page from the DOM.

-
-
pageremove
-
This event is triggered just before the framework attempts to remove an external page from the DOM. Event callbacks can call preventDefault on the event object to prevent the page from being removed. -
-
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events.html deleted file mode 100644 index 26429f2..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/events.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - jQuery Mobile Docs - Events - - - - - - - - - - -
- -
-

Events

- Home - Search -
- -
-
- -

jQuery Mobile offers several custom events that build upon native events to create useful hooks for development. Note that these events employ various touch, mouse, and window events, depending on event existence, so you can bind to them for use in both handheld and desktop environments. You can bind to these events like you would with other jQuery events, using live() or bind().

- -
-

Important: Use $(document).bind('pageinit'), not $(document).ready()

-

The first thing you learn in jQuery is to call code inside the $(document).ready() function so everything will execute as soon as the DOM is loaded. However, in jQuery Mobile, Ajax is used to load the contents of each page into the DOM as you navigate, and the DOM ready handler only executes for the first page. To execute code whenever a new page is loaded and created, you can bind to the pageinit event. This event is explained in detail at the bottom of this page.

- -

 

-
-

Important: $(document).bind('pagecreate') vs $(document).bind('pageinit')

-

Prior to Beta 2 the recommendation to users wishing to manipulate jQuery Mobile enhanced page and child widget markup was to bind to the pagecreate event. In Beta 2 an internal change was made to decouple each of the widgets by binding to the pagecreate event in place of direct calls to the widget methods. As a result, users binding to the pagecreate in mobileinit would find their binding executing before the markup had been enhanced by each of the plugins. In keeping with the lifecycle of the jQuery UI Widget Factory, the initialization method is invoked after the create method, so the pageinit event provides the correct timing for post enhancement manipulation of the DOM and/or Javascript objects. - - In short, if you were previously using pagecreate to manipulate the enhanced markup before the page was shown, it's very likely you'll want to migrate to 'pageinit'. -

- -

Touch events

-
-
tap
-
Triggers after a quick, complete touch event.
- -
taphold
-
Triggers after a held complete touch event (close to one second).
- -
swipe
-

Triggers when a horizontal drag of 30px or more (and less than 20px vertically) occurs within 1 second duration but these can be configured:

-
    -
  • scrollSupressionThreshold (default: 10px) – More than this horizontal displacement, and we will suppress scrolling
  • -
  • durationThreshold (default: 1000ms) – More time than this, and it isn’t a swipe
  • -
  • horizontalDistanceThreshold (default: 30px) – Swipe horizontal displacement must be more than this.
  • -
  • verticalDistanceThreshold (default: 75px) – Swipe vertical displacement must be less than this.
  • -
-
- -
swipeleft
-
Triggers when a swipe event occurred moving in the left direction.
- -
swiperight
-
Triggers when a swipe event occurred moving in the right direction.
-
- -

Virtual mouse events

-

We provide a set of "virtual" mouse events that attempt to abstract away mouse and touch events. This allows 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. In touch environments, the plugin retains the order of event firing that is seen in traditional mouse environments, so for example, vmouseup is always dispatched before vmousedown, and vmousedown before vclick, etc. The virtual mouse events also normalize how coordinate information is extracted from the event, so in touch based environments, coordinates are available from the pageX, pageY, screenX, screenY, clientX, and clientY properties, directly on the event object.

-
-
vmouseover
-
Normalized event for handling touch or mouseover events
- -
vmousedown
-
Normalized event for handling touchstart or mousedown events
- -
vmousemove
-
Normalized event for handling touchmove or mousemove events
- -
vmouseup
-
Normalized event for handling touchend or mouseup events
- -
vclick
-
Normalized event for handling touchend or mouse click events. On touch devices, this event is dispatched *AFTER* vmouseup.
- -
vmousecancel
-
Normalized event for handling touch or mouse mousecancel events
-
- -
-

Warning: Use vclick with caution

-

Use vclick with caution on touch devices. Webkit based browsers synthesize mousedown, mouseup, and click events roughly 300ms after the touchend event is dispatched. The target of the synthesized mouse events are calculated at the time they are dispatched and are based on the location of the touch events and, in some cases, the implementation specific heuristics which leads to different target calculations on different devices and even different OS versions for the same device. This means the target element within the original touch events could be different from the target element within the synthesized mouse events.

-

We recommend using click instead of vclick anytime the action being triggered has the possibility of changing the content underneath the point that was touched on screen. This includes page transitions and other behaviors such as collapse/expand that could result in the screen shifting or content being completely replaced.

-
-

 

-
-

Canceling an elements default click behavior

-

Applications can call preventDefault() on a vclick event to cancel an element's default click behavior. On mouse based devices, calling preventDefault() on a vclick event equates to calling preventDefault() on the real click event during the bubble event phase. On touch based devices, it's a bit more complicated since the actual click event is dispatched about 300ms after the vclick event is dispatched. For touch devices, calling preventDefault() on a vclick event triggers some code in the vmouse plugin that attempts to catch the next click event that gets dispatched by the browser, during the capture event phase, and calls preventDefault() and stopPropagation() on it. As mentioned in the warning above, it is sometimes difficult to match up a touch event with its corresponding mouse event because the targets can differ. For this reason, the vmouse plugin also falls back to attempting to identify a corresponding click event by coordinates. There are still cases where both target and coordinate identification fail, which results in the click event being dispatched and either triggering the default action of the element, or in the case where content has been shifted or replaced, triggering a click on a different element. If this happens on a regular basis for a given element/control, we suggest you use click for triggering your action.

-
- -

Orientation change event

-
-
orientationchange
-
Triggers when a device orientation changes (by turning it vertically or horizontally). When bound to this event, your callback function can leverage a second argument, which contains an orientation property equal to either "portrait" or "landscape". These values are also added as classes to the HTML element, allowing you to leverage them in your CSS selectors. Note that we currently bind to the resize event when orientationchange is not natively supported, or when $.mobile.orientationChangeEnabled is set to false.
-
-

orientationchange timing

- -

The timing of the orientationchange with relation to the change of the client height and width is different between browsers, though the current implementation will give you the correct value for event.orientation derived from window.orientation. This means that if your bindings are dependent on the height and width values you may want to disable orientationChange all together with $.mobile.orientationChangeEnabled = false to let the fallback resize code trigger your bindings.

-
-
- -

Scroll events

-
-
scrollstart
-
Triggers when a scroll begins. Note that iOS devices freeze DOM manipulation during scroll, queuing them to apply when the scroll finishes. We're currently investigating ways to allow DOM manipulations to apply before a scroll starts.
-
-
-
scrollstop
-
Triggers when a scroll finishes.
-
- -

Page load events

-

Whenever an external page is loaded into the application DOM, 2 events are fired. The first is pagebeforeload. The 2nd event will be either pageload or pageloadfailed.

-
-
pagebeforeload
-

Triggered before any load request is made. Callbacks bound to this event can call preventDefault() on the event to indicate that they are handling the load request. Callbacks that do this *MUST* make sure they call resolve() or reject() on the deferred object reference contained in the data object passed to the callback.

-

The data object, passed as the 2nd arg to the callback function contains the following properties:

-
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • deferred (object) -
      -
    • Callbacks that call preventDefault() on the event, *MUST* call resolve() or reject() on this object so that changePage() requests resume processing. Deferred object observers expect the deferred object to be resolved like this:

      -
      
      -$( document ).bind( "pagebeforeload", function( event, data ){
      -
      -	// Let the framework know we're going to handle the load.
      -
      -	event.preventDefault();
      -
      -	// ... load the document then insert it into the DOM ...
      -	// at some point, either in this callback, or through
      -	// some other async means, call resolve, passing in
      -	// the following args, plus a jQuery collection object
      -	// containing the DOM element for the page.
      -
      -	data.deferred.resolve( data.absUrl, data.options, page );
      -
      -});
      -

      or rejected like this: -

      
      -$( document ).bind( "pagebeforeload", function( event, data ){
      -
      -	// Let the framework know we're going to handle the load.
      -
      -	event.preventDefault();
      -
      -	// ... load the document then insert it into the DOM ...
      -	// at some point, if the load fails, either in this
      -	// callback, or through some other async means, call
      -	// reject like this:
      -
      -	data.deferred.reject( data.absUrl, data.options );
      -
      -});
      -
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
-
-
pageload
-
Triggered after the page is successfully loaded and inserted into the DOM. Callbacks bound to this event will be passed a data object as its 2nd arg. This object contains the following information: -
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
  • xhr (object) -
      -
    • The jQuery XMLHttpRequest object used when attempting to load the page. This is what gets passed as the 3rd argument to the framework's $.ajax() success callback.
    • -
    -
  • -
  • textStatus (null or string) -
      -
    • According to the jQuery Core documentation, this will be a string describing the status. This is what gets passed as the 2nd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
-
-
pageloadfailed
-
Triggered if the page load request failed. By default, after dispatching this event, the framework will display a page failed message and call reject() on the deferred object contained within the event's data object. Callbacks can prevent this default behavior from executing by calling preventDefault() on the event. -

The data object, passed as the 2nd arg to the callback function contains the following properties:

-
    -
  • url (string) -
      -
    • The absolute or relative URL that was passed into $.mobile.loadPage() by the caller.
    • -
    -
  • -
  • absUrl (string) -
      -
    • The absolute version of the url. If url was relative, it is resolved against the url used to load the current active page.
    • -
    -
  • -
  • dataUrl (string) -
      -
    • The filtered version of absUrl to be used when identifying the page and updating the browser location when the page is made active.
    • -
    -
  • -
  • deferred (object) -
      -
    • Callbacks that call preventDefault() on the event, *MUST* call resolve() or reject() on this object so that changePage() requests resume processing. Deferred object observers expect the deferred object to be resolved like this:

      -
      
      -$( document ).bind( "pageloadfailed", function( event, data ){
      -
      -	// Let the framework know we're going to handle things.
      -
      -	event.preventDefault();
      -
      -	// ... attempt to load some other page ...
      -	// at some point, either in this callback, or through
      -	// some other async means, call resolve, passing in
      -	// the following args, plus a jQuery collection object
      -	// containing the DOM element for the page.
      -
      -	data.deferred.resolve( data.absUrl, data.options, page );
      -
      -});
      -

      or rejected like this: -

      
      -$( document ).bind( "pageloadfailed", function( event, data ){
      -
      -	// Let the framework know we're going to handle things.
      -
      -	event.preventDefault();
      -
      -	// ... attempt to load some other page ...
      -	// at some point, if the load fails, either in this
      -	// callback, or through some other async means, call
      -	// reject like this:
      -
      -	data.deferred.reject( data.absUrl, data.options );
      -
      -});
      -
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the options that were passed into $.mobile.loadPage().
    • -
    -
  • -
  • xhr (object) -
      -
    • The jQuery XMLHttpRequest object used when attempting to load the page. This is what gets passed as the first argument to the framework's $.ajax() error callback.
    • -
    -
  • -
  • textStatus (null or string) -
      -
    • According to the jQuery Core documentation, possible values for this property, aside from null, are "timeout", "error", "abort", and "parsererror". This is what gets passed as the 2nd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
  • errorThrown (null, string, object) -
      -
    • According to the jQuery Core documentation, this property may be an exception object if one occured, or if an HTTP error occured this will be set to the textual portion of the HTTP status. This is what gets passed as the 3rd argument to the framework's $.ajax() error callback.
    • -
    -
  • -
-
-
-

Page change events

-

Navigating between pages in the application is usually accomplished through a call to $.mobile.changePage(). This function is responsible for making sure that the page we are navigating to is loaded and inserted into the DOM, and then kicking off the transition animations between the current active page, and the page the caller wants to to make active. During this process, which is usually asynchronous, changePage() will fire off 2 events. The first is pagebeforechange. The second event depends on the success or failure of the change request. It will either be pagechange or pagechangefailed.

-
-
pagebeforechange
-
This event is triggered prior to any page loading or transition. Callbacks can prevent execution of the changePage() function by calling preventDefault on the event object passed into the callback. The callback also recieves a data object as its 2nd arg. The data object has the following properties: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-

It should be noted that callbacks can modify both the toPage and options properties to alter the behavior of the current changePage() call. So for example, the toPage can be mapped to a different url from within a callback to do a sort of redirect.

-
-
pagechange
-
This event is triggered after the changePage() request has finished loading the page into the DOM and all page transition animations have completed. Note that any pageshow or pagehide events will have fired *BEFORE* this event is triggered. Callbacks for this particular event will be passed a data object as the 2nd arg. The properties for this object are as follows: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-
-
pagechangefailed
-
This event is triggered when the changePage() request fails to load the page. Callbacks for this particular event will be passed a data object as the 2nd arg. The properties for this object are as follows: -
    -
  • toPage (object or string) -
      -
    • This property represents the page the caller wishes to make active. It can be either a jQuery collection object containing the page DOM element, or an absolute/relative url to an internal or external page. The value exactly matches the 1st arg to the changePage() call that triggered the event.
    • -
    -
  • -
  • options (object) -
      -
    • This object contains the configuration options to be used for the current changePage() call.
    • -
    -
  • -
-
-
-

Page transition events

-

Page transitions are used to animate the change from the current active page (fromPage) to a new page (toPage). Events are triggered before and after these transitions so that observers can be notified whenever pages are shown or hidden. The events triggered are as follows:

-
-
pagebeforeshow
-
Triggered on the "toPage" we are transitioning to, before the actual transition animation is kicked off. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • prevPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we are transitioning away from. Note that this collection is empty when the first page is transitioned in during application startup.
    • -
    -
  • -
-
- -
pagebeforehide
-
Triggered on the "fromPage" we are transitioning away from, before the actual transition animation is kicked off. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • nextPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we are transitioning to.
    • -
    -
  • -
-

Note that this event will not be dispatched during the transition of the first page at application startup since there is no previously active page.

-
- -
pageshow
-
Triggered on the "toPage" after the transition animation has completed. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • prevPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we just transitioned away from. Note that this collection is empty when the first page is transitioned in during application startup.
    • -
    -
  • -
-
- -
pagehide
-
Triggered on the "fromPage" after the transition animation has completed. Callbacks for this event will recieve a data object as their 2nd arg. This data object has the following properties on it: -
    -
  • nextPage (object) -
      -
    • A jQuery collection object that contains the page DOM element that we just transitioned to.
    • -
    -
  • -
-

Note that this event will not be dispatched during the transition of the first page at application startup since there is no previously active page.

-
- -
- -

You can access the prevPage or nextPage properties via the second argument of a bound callback function. For example:

-

-$( 'div' ).live( 'pageshow',function(event, ui){
-  alert( 'This page was just hidden: '+ ui.prevPage);
-});
-
-$( 'div' ).live( 'pagehide',function(event, ui){
-  alert( 'This page was just shown: '+ ui.nextPage);
-});
-
-

Also, for these handlers to be invoked during the initial page load, you must bind them before jQuery Mobile executes. This can be done in the mobileinit handler, as described on the global config page. -

Page initialization events

- -

Internally, jQuery Mobile auto-initializes plugins based on the markup conventions found in a given "page". For example, an input element with a type of range will automatically generate a custom slider control.

- -

This auto-initialization is controlled by the "page" plugin, which dispatches events before and after it executes, allowing you to manipulate a page either pre-or-post initialization, or even provide your own intialization behavior and prevent the auto-initializations from occuring. Note that these events will only fire once per "page", as opposed to the show/hide events, which fire every time a page is shown and hidden.

- -
-
pagebeforecreate
-
-

Triggered on the page being initialized, before most plugin auto-initialization occurs.

-

-$( '#aboutPage' ).live( 'pagebeforecreate',function(event){
-  alert( 'This page was just inserted into the dom!' );
-});
-
-

Note that by binding to pagebeforecreate, you can manipulate markup before jQuery Mobile's default widgets are auto-initialized. For example, say you want to add data-attributes via JavaScript instead of in the HTML source, this is the event you'd use.

- -

-$( '#aboutPage' ).live( 'pagebeforecreate',function(event){
-  // manipulate this page before its widgets are auto-initialized
-});
-
-
- -
pagecreate
-
-

Triggered when the page has been created in the DOM (via ajax or other) but before all widgets have had an opportunity to enhance the contained markup. This event is most useful for user's wishing to create their own custom widgets for child markup enhancement as the jquery mobile widgets do.

-

-$( '#aboutPage' ).live( 'pagecreate',function(event){
-  ( ":jqmData(role='sweet-plugin')" ).sweetPlugin();
-});
-
-
- -
pageinit
-
-

Triggered on the page being initialized, after initialization occurs. We recommend binding to this event instead of DOM ready() because this will work regardless of whether the page is loaded directly or if the content is pulled into another page as part of the Ajax navigation system.

-

-$( '#aboutPage' ).live( 'pageinit',function(event){
-  alert( 'This page was just enhanced by jQuery Mobile!' );
-});
-
-
-
- - - -

Page remove events

-

By default, the framework removes any non active dynamically loaded external pages from the DOM as soon as the user navigates away to a different page. The pageremove event is dispatched just before the framework attempts to remove the a page from the DOM.

-
-
pageremove
-
This event is triggered just before the framework attempts to remove an external page from the DOM. Event callbacks can call preventDefault on the event object to prevent the page from being removed. -
-
- -

Layout events

-

Some components within the framework, such as collapsible and listview search, dynamically hide and show content based on user events. This hiding/showing of content affects the size of the page and may result in the browser adjusting/scrolling the viewport to accommodate the new page size. Since this has the potential to affect other components such as fixed headers and footers, components like collapsible and listview trigger a custom updatelayout event to notify other components that they may need to adjust their layouts in response to their content changes. Developers who are building dynamic applications that inject, hide, or remove content from the page, or manipulate it in any way that affects the dimensions of the page, can also manually trigger this updatelayout event to ensure components on the page update in response to the changes.

-
-
updatelayout
-
This event is triggered by components within the framework that dynamically show/hide content, and is meant as a generic mechanism to notify other components that they may need to update their size or position. Within the framework, this event is fired on the component element whose content was shown/hidden, and bubbles all the way up to the document element. -

-$( '#foo' ).hide().trigger( 'updatelayout' );
-
-
-
- -

Animation Events

-

jQuery Mobile exposes the animationComplete plugin, which you can utilize after adding or removing a class that applies a CSS transition.

- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/globalconfig.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/globalconfig.html deleted file mode 100644 index 86220dd..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/globalconfig.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuring default settings - - - - - - - - - - -
- -
-

Configuring Defaults

- Home - Search -
- -
-
- -

Working with jQuery Mobile's Auto-initialization

-

Unlike other jQuery projects, such as jQuery and jQuery UI, jQuery Mobile automatically applies many markup enhancements as soon as it loads (long before the document.ready event fires). These enhancements are applied based on jQuery Mobile's default settings, which are designed to work with common scenarios. If changes to the settings are needed, they are easy to configure.

- -

The mobileinit event

-

When jQuery Mobile starts, it triggers a mobileinit event on the document object. To override default settings, bind to mobileinit.

- -
-				
-$(document).bind("mobileinit", function(){
-  //apply overrides here
-});
-				
-			
- -

Because the mobileinit event is triggered immediately, you'll need to bind your event handler before jQuery Mobile is loaded. Link to your JavaScript files in the following order:

- -
-				
-<script src="jquery.js"></script>
-<script src="custom-scripting.js"></script>
-<script src="jquery-mobile.js"></script>
-				
-			
- -

You can override default settings by extending the $.mobile object using jQuery's $.extend method.

- -
-				
-$(document).bind("mobileinit", function(){
-  $.extend(  $.mobile , {
-    foo: bar
-  });
-});
-				
-			
- -

Alternatively, you can set them using object property notation.

-
-				
-$(document).bind("mobileinit", function(){
-  $.mobile.foo = bar;
-});
-				
-			
- -

To explore the effects of global configuration options, see the config test pages.

- -

Configurable options

-

The following defaults are configurable via the $.mobile object:

- -
-
activeBtnClass string, default: "ui-btn-active"
-
The CSS class used for "active" button state.
- -
activePageClass string, default: "ui-page-active"
-
The CSS class used for the page currently in view or in a transition.
- -
ajaxEnabled boolean, default: true
-
jQuery Mobile will automatically handle link clicks and form submissions through Ajax, when possible. If false, URL hash listening will be disabled as well, and URLs will load as ordinary HTTP requests.
- -
allowCrossDomainPages boolean, default: false
-
When jQuery Mobile attempts to load an external page, the request runs through $.mobile.loadPage(). This will only allow cross-domain requests if $.mobile.allowCrossDomainPages is set to true. Because the jQuery Mobile framework tracks what page is being viewed within the browser's location hash, it is possible for a cross-site scripting (XSS) attack to occur if the XSS code in question can manipulate the hash and set it to a cross-domain URL of its choice. This is the main reason that the default setting for $.mobile.allowCrossDomainPages is set to false. In PhoneGap apps that must "phone home" by loading assets off a remote server, both the $.support.cors AND $.mobile.allowCrossDomainPages must be set to true.
- -
autoInitializePage boolean, default: true
-
When the DOM is ready, the framework should automatically call $.mobile.initializePage. If false, the page will not initialize and will be visually hidden until $.mobile.initializePage is manually called.
- -
buttonMarkup.hoverDelay integer, default: 200
-
Set the delay for touch devices to add the hover and down classes on touch interactions for buttons throughout the framework. Reducing the delay here results in a more responsive feeling ui, but will often result in the downstate being applied during page scrolling.
- -
defaultDialogTransition string, default: 'pop'
-
Set the default transition for dialog changes that use Ajax. Set to 'none' for no transitions.
- -
defaultPageTransition string, default: 'fade'
-
Set the default transition for page changes that use Ajax. Note: default changed from 'slide' to 'fade' in 1.1. Set to 'none' for no transitions.
- -
gradeA function that returns a boolean, default: a function returning the value of $.support.mediaquery
-
Any support conditions that must be met in order to proceed.
- -
hashListeningEnabled boolean, default: true
-
jQuery Mobile will automatically listen and handle changes to the location.hash. Disabling this will prevent jQuery Mobile from handling hash changes, which allows you to handle them yourself or use simple deep-links within a document that scroll to a particular ID.
- -
ignoreContentEnabled boolean, default: false
-
Warning: Setting this property to true will cause performance degradation on enhancement. Once set, all automatic enhancements made by the framework to each enhanceable element of the user's markup will first check for a data-enhance=false parent node. If one is found the markup will be ignored. This setting and the accompanying data attribute provide a mechanism through which users can prevent enhancement over large sections of markup.
- -
linkBindingEnabled boolean, default: true
-
jQuery Mobile will automatically bind the clicks on anchor tags in your document. Setting this options to false will prevent all anchor click handling including the addition of active button state and alternate link bluring. This should only be used when attempting to delegate the click management to another library or custom code.
- -
loadingMessage string, default: "loading"
-
Set the text that appears when a page is loading. If set to false, the message will not appear at all.
- -
loadingMessageTextVisible boolean, default: false
-
Whether the text should be visible when a loading message is shown. The text is always visible for loading errors.
- -
loadingMessageTheme string, default: "a"
-
The theme that the loading message box uses when text is visible.
- -
minScrollBack string, default: 250
-
Minimum scroll distance that will be remembered when returning to a page.
- -
ns string, default: ""
-
The namespace used in data- attributes (e.g., data-role). Can be set to any string, including a blank string which is the default. When using, it's clearest if you include a trailing dash, such as "mynamespace-" which maps to data-mynamespace-foo="...". -

If you use data- namespacing, you will need to update/override one selector in the theme CSS. The following data selectors should incorporate the namespace you're using: -


-.ui-mobile [data-mynamespace-role=page], .ui-mobile [data-mynamespace-role=dialog], .ui-page { ...
-		
-

-
- -
pageLoadErrorMessage string, default: "Error Loading Page"
-
Set the text that appears when a page fails to load through Ajax.
- -
pageLoadErrorMessageTheme string, default: "e"
-
Set the theme that the error message box uses.
- -
pushStateEnabled boolean, default: true
-
Enhancement to use history.replaceState in supported browsers, to convert the hash-based Ajax URL into the full document path. Note that we recommend disabling this feature if Ajax is disabled or if extensive use of external links are used.
- -
subPageUrlKey string, default: "ui-page"
-
The url parameter used for referencing widget-generated sub-pages (such as those generated by nested listviews). Translates to example.html&ui-page=subpageIdentifier. The hash segment before &ui-page= is used by the framework for making an Ajax request to the URL where the sub-page exists.
- -
touchOverflowEnabled boolean, default: false
-
Enable smoother page transitions and true fixed toolbars in devices that support both the overflow: and overflow-scrolling: touch; CSS properties. Note: Deprecated for 1.1.0.
- -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/index.html deleted file mode 100644 index cc6353b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - jQuery UI Mobile Framework - API - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/mediahelpers.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/mediahelpers.html deleted file mode 100644 index 8893b7a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/mediahelpers.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - jQuery Mobile Docs - Responsive Layout Helpers - - - - - - - - - - -
- -
-

Responsive Layout Helpers

- Home - Search -
- -
- -
-

Media Query Helper Classes

-

Note: This feature was deprecated in beta, and removed in 1.0rc1. We recommend using CSS3 Media Queries instead. To support older versions of Internet Explorer, check out respond.js, a fast & lightweight polyfill for min/max-width CSS3 Media Queries.

-

If you still need this feature, you can find the code here: jquery.mobile.media.classes.js

- -

jQuery Mobile adds classes to the HTML element that mimic browser orientation and common min/max-width CSS media queries. These classes are updated on load, resize and orientationchange, allowing you to key off these classes in your CSS, to create responsive layouts - even in browsers that don't support media queries!

- -

Orientation Classes

- -

The HTML element will always have a class of either "portrait" or "landscape", depending on the orientation of the browser or device. You can utilize these in your CSS like this:

-
-			
-.portrait {
-	/* portrait orientation changes go here! */
-}
-.landscape {
-	/* landscape orientation changes go here! */
-}			
-			
-			
- -

Min/Max Width Breakpoint Classes

-

By default, we create min and max breakpoint classes at the following widths: 320,480,768,1024. These translate to classes that look like this: "min-width-320px", "max-width-480px", and are meant to be used as a replacement of (or in addition to) the media query equivalents they mimic.

-
-			
-.myelement { 
-	float: none;
-}			
-.min-width-480px .myelement {
-	float: left;
-}		
-			
-
- -

Many plugins in jQuery Mobile leverage these width breakpoints. For example, form elements float beside their labels when the browser is wider than 480 pixels. The CSS to support this behavior for form text inputs looks like this:

- -
-			
-label.ui-input-text { 
-	display: block; 
-}
-.min-width-480px label.ui-input-text { 
-	display: inline-block; 
-}
-			
-
- -

Adding Width Breakpoints

-

To utilize width breakpoints of your own, jQuery Mobile exposes the $.mobile.addResolutionBreakpoints function, which accepts either a single number or array of numbers that will be added to the min/max breakpoints whenever they apply.

-
-			
-//add a min/max class for 1200 pixel widths			
-$.mobile.addResolutionBreakpoints(1200);
-
-//add min/max classes for 1200, and 1440 pixel widths			
-$.mobile.addResolutionBreakpoints([1200, 1440]);
-			
-
- -

Running Media Queries

-

jQuery Mobile provides a function that allows you to test whether a particular CSS Media Query applies. Simple call $.mobile.media() and pass a media type or query. If the browser supports that type or query, and it currently applies, the function will return true. If not, it'll return false.

- -
-			
-//test for screen media type
-$.mobile.media("screen");
-
-//test  a min-width media query
-$.mobile.media("screen and (min-width: 480px)");
-
-//test for iOS retina display
-$.mobile.media("screen and (-webkit-min-device-pixel-ratio: 2)");
-
-			
-
- -
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/methods.html deleted file mode 100644 index 23bba4b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/methods.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - - - jQuery Mobile Docs - Methods - - - - - - - - - - -
- -
-

Methods

- Home - Search -
- -
-
- -

jQuery Mobile exposes several methods and properties on the $.mobile object for use in your applications.

- - -
-
$.mobile.changePage (method)
-
Programmatically change from one page to another. This method is used internally for the page loading and transitioning that occurs as a result of clicking a link or submitting a form, when those features are enabled.
- -
- -
-
· Arguments
-
to (string or object, required) -
    -
  • String: Absolute or relative URL. ("about/us.html")
  • -
  • Object: jQuery collection object. ($("#about"))
  • -
-
- -
options (object, optional) -
    -
  • Properties: -
      -
    • allowSamePageTransition (boolean, default: false) By default, changePage() ignores requests to change to the current active page. Setting this option to true, allows the request to execute. Developers should note that some of the page transitions assume that the fromPage and toPage of a changePage request are different, so they may not animate as expected. Developers are responsible for either providing a proper transition, or turning it off for this specific case.
    • -
    • changeHash (boolean, default: true) Decides if the hash in the location bar should be updated.
    • -
    • data (object or string, default: undefined) The data to send with an Ajax page request. -
        -
      • Used only when the 'to' argument of changePage() is a URL.
      • -
      -
    • -
    • dataUrl (string, default: undefined) The URL to use when updating the browser location upon changePage completion. - If not specified, the value of the data-url attribute of the page element is used.
    • -
    • pageContainer (jQuery collection, default: $.mobile.pageContainer) Specifies the element that should contain the page.
    • -
    • reloadPage (boolean, default: false) Forces a reload of a page, even if it is already in the DOM of the page container. -
        -
      • Used only when the 'to' argument of changePage() is a URL.
      • -
      -
    • -
    • reverse (boolean, default: false) Decides what direction the transition will run when showing the page.
    • -
    • showLoadMsg (boolean, default: true) Decides whether or not to show the loading message when loading external pages.
    • -
    • role (string, default: undefined) The data-role value to be used when displaying the page. By default this is undefined which means rely on the value of the @data-role attribute defined on the element.
    • -
    • transition (string, default: $.mobile.defaultPageTransition) The transition to use when showing the page.
    • -
    • type (string, default: "get") Specifies the method ("get" or "post") to use when making a page request. -
        -
      • Used only when the 'to' argument of changePage() is a URL.
      • -
      -
    • -
    -
  • -
-
- -
-
- -
Examples: -
-			
-//transition to the "about us" page with a slideup transition
-$.mobile.changePage( "about/us.html", { transition: "slideup"} );
-
-//transition to the "search results" page, using data from a form with an ID of "search"" 	
-$.mobile.changePage( "searchresults.php", {
-	type: "post",
-	data: $("form#search").serialize()
-});
-
-//transition to the "confirm" page with a "pop" transition without tracking it in history	
-$.mobile.changePage( "../alerts/confirm.html", {
-	transition: "pop",
-	reverse: false,
-	changeHash: false
-});
-
-			
-			
- -
- - -
$.mobile.loadPage (method)
-
Load an external page, enhance its content, and insert it into the DOM. This method is called internally by the changePage() function when its first argument is a URL. This function does not affect the current active page so it can be used to load pages in the background. The function returns a deferred promise object that gets resolved after the page has been enhanced and inserted into the document.
- -
- -
-
· Arguments
-
url (string or object, required) A relative or absolute URL.
- -
options (object, optional) -
    -
  • Properties: -
      -
    • data (object or string, default: undefined) The data to send with an Ajax page request.
    • -
    • loadMsgDelay (number (in ms), default: 50) Forced delay before the loading message is shown. This is meant to allow time for a page that has already been visited to be fetched from cache without a loading message.
    • -
    • pageContainer (jQuery collection, default: $.mobile.pageContainer) Specifies the element that should contain the page after it is loaded.
    • -
    • reloadPage (boolean, default: false) Forces a reload of a page, even if it is already in the DOM of the page container.
    • -
    • role (string, default: undefined) The data-role value to be used when displaying the page. By default this is undefined which means rely on the value of the @data-role attribute defined on the element.
    • -
    • type (string, default: "get") Specifies the method ("get" or "post") to use when making a page request. -
    • -
    -
  • -
-
- -
-
- -
Examples: -
-			
-//load the "about us" page into the DOM
-$.mobile.loadPage( "about/us.html" );
-
-//load a "search results" page, using data from a form with an ID of "search"" 	
-$.mobile.loadPage( "searchresults.php", {
-	type: "post",
-	data: $("form#search").serialize()
-});
-			
-			
- -
- -
$.fn.jqmData(), $.fn.jqmRemoveData() (method)
-
When working with jQuery Mobile, jqmData and jqmRemoveData should be used in place of jQuery core's data and removeData methods (note that this includes $.fn.data, $.fn.removeData, and the $.data, $.removeData, and $.hasData utilities), as they automatically incorporate getting and setting of namespaced data attributes (even if no namespace is currently in use).
-
-
-
· Arguments:
-
See jQuery's data and removeData methods
- Note: Calling jqmData() with no argument will return undefined. This behavior is subject to change in future versions. -
· Also:
-
When finding elements by their jQuery Mobile data attribute, please use the custom selector :jqmData(), as it automatically incorporates namespaced data attributes into the lookup when they are in use. For example, instead of calling $("div[data-role='page']"), you should use $("div:jqmData(role='page')"), which internally maps to $("div[data-"+ $.mobile.ns +"role='page']") without forcing you to concatenate a namespace into your selectors manually.
-
-
- - -
$.fn.jqmEnhanceable() (method)
-
For users that wish to respect data-enhance=false parent elements during manual enhancement or custom plugin authoring jQuery Mobile provides the $.fn.jqmEnhanceable filter method.
-
-
-
· Settings:
-
If, and only if, $.mobile.ignoreContentEnabled is set to true, this method will traverse the parent nodes for each DOM element in the jQuery object and where it finds a data-enhance=false parent the child will be removed from the set.
-
· Warning:
-
The operation of traversing all parent elements can be expensive for even small jQuery object sets.
-
-
- -
$.fn.jqmHijackable() (method)
-
For users that wish to respect data-ajax=false parent elements during custom form and link binding jQuery Mobile provides the $.fn.jqmHijackable filter method.
-
-
-
· Settings:
-
If, and only if, $.mobile.ignoreContentEnabled is set to true, this method will traverse the parent nodes for each DOM element in the jQuery object and where it finds a data-ajax=false parent the child form or link will be removed from the set.
-
· Warning:
-
The operation of traversing all parent elements can be expensive for even small jQuery object sets.
-
-
- -
$.mobile.showPageLoadingMsg (method)
-
Show the page loading message, which is configurable via $.mobile.loadingMessage.
-
-
-
· Arguments
-
theme (string, default: "a") The theme swatch for the message.
-
msgText (string, default: "loading") The text of the message.
-
textonly (boolean, default: false) If true, the "spinner" image will be hidden when the message is shown.
-
-
-
Examples: -
-			
-//cue the page loader
-$.mobile.showPageLoadingMsg();
-
-//use theme swatch "b", a custom message, and no spinner
-$.mobile.showPageLoadingMsg("b", "This is only a test", true);
-			
-			
- -
- - - - -
$.mobile.hidePageLoadingMsg (method)
-
Hide the page loading message, which is configurable via $.mobile.loadingMessage.
- -
Example: -
-			
-//hide the page loader
-$.mobile.hidePageLoadingMsg();
-			
-			
- -
- -
$.mobile.fixedToolbars.show (method)
-
Utility method for displaying the fixed header and/or footer of the current active page within the viewport. Note that fixed headers/footers are never really hidden. Toggling the show/hide state of a toolbar is really toggling whether or not they are inline within the page content, or displayed within the viewport as if they were fixed.
-
-
-
· Arguments
-
immediately (boolean, optional) If true, any fixed header or footer for the current active page is displayed immediately within the viewport. If false or unspecified, the fixed header/footer will fade-in after a 100 millisecond delay. Note that other events such as a document resize or scroll event can result in an additional delay before the start of the header/footer display animation.
-
-
-
Example: -
-			
-// Show fixed header/footer with a fade animation.
-$.mobile.fixedToolbars.show();
-
-// Show fixed header/footer immediately.
-$.mobile.fixedToolbars.show(true);
-			
-			
- -
- -
$.mobile.fixedToolbars.hide (method)
-
Utility method for hiding the fixed header and/or footer of the current active page.
-
-
-
· Arguments
-
immediately (boolean, optional) If true, any fixed header or footer for the current active page is immediately placed inline (back in flow) with the page content, which means it will scroll along with the content and will only be visible when viewing the top or bottom of the page within the viewport. If false or unspecified, the fixed header/footer will fade-out after a 100 millisecond delay. Note that other events such as a document resize or scroll event can result in the header/footer being immediately hidden.
-
-
-
Example: -
-			
-// Hide fixed header/footer with a fade animation.
-$.mobile.fixedToolbars.hide();
-
-// Hide fixed header/footer immediately.
-$.mobile.fixedToolbars.hide(true);
-			
-			
- -
- -
$.mobile.path.parseUrl (method)
-
Utility method for parsing a URL and its relative variants into an object that makes accessing the components of the URL easy. When parsing relative variants, the resulting object will contain empty string values for missing components (like protocol, host, etc). Also, when parsing URLs that have no authority, such as tel: urls, the pathname property of the object will contain the data after the protocol/scheme colon.
- -
- -
-
· Arguments
-
url (string, required) A relative or absolute URL.
- -
· Return Value
-
-

This function returns an object that contains the various components of the URL as strings. The properties on the object mimic the browser's location object:

-
-
hash
-
The fragment conponent of the URL, including the leading '#' character.
-
host
-
The host and port number of the URL.
-
hostname
-
The name of the host within the URL.
-
href
-
The original URL that was parsed.
-
pathname
-
The path of the file or directory referenced by the URL.
-
port
-
The port specified within the URL. Most URLs rely on the default port for the protocol used, so this may be an empty string most of the time.
-
protocol
-
The protocol for the URL including the trailing ':' character.
-
search
-
The query component of the URL including the leading '?' character.
-
-

But it also contains additional properties that provide access to additional components as well as some common forms of the URL developers access:

-
-
authority
-
The username, password, and host components of the URL
-
directory
-
The directory component of the pathname, minus any filename.
-
domain
-
The protocol and authority components of the URL.
-
filename
-
The filename within the pathname component, minus the directory.
-
hrefNoHash
-
The original URL minus the fragment (hash) components.
-
hrefNoSearch
-
The original URL minus the query (search) and fragment (hash) components.
-
password
-
The password contained within the authority component.
-
username
-
The username contained within the authority component.
-
-
- -
-
- -
Examples: -
-			
-// Parsing the Url below results an object that is returned with the
-// following properties:
-//
-//  obj.href:         http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content
-//  obj.hrefNoHash:   http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread
-//  obj.hrefNoSearch: http://jblas:password@mycompany.com:8080/mail/inbox
-//  obj.domain:       http://jblas:password@mycompany.com:8080
-//  obj.protocol:     http:
-//  obj.authority:    jblas:password@mycompany.com:8080
-//  obj.username:     jblas
-//  obj.password:     password
-//  obj.host:         mycompany.com:8080
-//  obj.hostname:     mycompany.com
-//  obj.port:         8080
-//  obj.pathname:     /mail/inbox
-//  obj.directory:    /mail/
-//  obj.filename:     inbox
-//  obj.search:       ?msg=1234&type=unread
-//  obj.hash:         #msg-content
-
-var obj = $.mobile.path.parseUrl("http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234");
-			
-			
- -
- - -
$.mobile.path.makePathAbsolute (method)
-
Utility method for converting a relative file or directory path into an absolute path.
-
-
-
· Arguments
-
relPath (string, required) A relative file or directory path.
-
absPath (string, required) An absolute file or relative path to resolve against.
- -
· Return Value
-
This function returns a string that is an absolute version of the relative path passed in.
- -
-
-
Examples: -
-			
-// Returns: /a/b/c/file.html
-var absPath = $.mobile.path.makePathAbsolute("file.html", "/a/b/c/bar.html");
-
-// Returns: /a/foo/file.html
-var absPath = $.mobile.path.makePathAbsolute("../../foo/file.html", "/a/b/c/bar.html");
-
-			
-			
-
- - -
$.mobile.path.makeUrlAbsolute (method)
-
Utility method for converting a relative URL to an absolute URL.
-
- -
-
Arguments
-
relUrl (string, required) A relative URL.
-
absUrl (string, required) An absolute URL to resolve against.
- -
Return Value
-
This function returns a string that is an absolute version of the relative URL passed in.
- -
-
-
Examples: -
-			
-// Returns: http://foo.com/a/b/c/file.html
-var absUrl = $.mobile.path.makeUrlAbsolute("file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: http://foo.com/a/foo/file.html
-var absUrl = $.mobile.path.makeUrlAbsolute("../../foo/file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: http://foo.com/bar/file.html
-var absUrl = $.mobile.path.makeUrlAbsolute("//foo.com/bar/file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: http://foo.com/a/b/c/test.html?a=1&b=2
-var absUrl = $.mobile.path.makeUrlAbsolute("?a=1&b=2", "http://foo.com/a/b/c/test.html");
-
-// Returns: http://foo.com/a/b/c/test.html#bar
-var absUrl = $.mobile.path.makeUrlAbsolute("#bar", "http://foo.com/a/b/c/test.html");
-
-			
-			
- -
- - -
$.mobile.path.isSameDomain (method)
-
Utility method for comparing the domain of 2 URLs.
-
- -
-
· Arguments
-
url1 (string, required) A relative URL.
-
url2 (string, required) An absolute URL to resolve against.
- -
Return Value
-
This function returns a boolean true if the domains match, false if they don't.
- -
-
-
Examples: -
-			
-// Returns: true
-var same = $.mobile.path.isSameDomain("http://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: false
-var same = $.mobile.path.isSameDomain("file://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: false
-var same = $.mobile.path.isSameDomain("https://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");
-
-// Returns: false
-var same = $.mobile.path.isSameDomain("http://foo.com/a/file.html", "http://bar.com/a/b/c/test.html");
-
-			
-			
- -
- - -
$.mobile.path.isRelativeUrl (method)
-
Utility method for determining if a URL is a relative variant.
-
- -
-
· Arguments
-
url (string, required) A relative or absolute URL.
- -
· Return Value
-
This function returns a boolean true if the URL is relative, false if it is absolute.
- -
-
-
Examples: -
-			
-// Returns: false
-var isRel = $.mobile.path.isRelativeUrl("http://foo.com/a/file.html");
-
-// Returns: true
-var isRel = $.mobile.path.isRelativeUrl("//foo.com/a/file.html");
-
-// Returns: true
-var isRel = $.mobile.path.isRelativeUrl("/a/file.html");
-
-// Returns: true
-var isRel = $.mobile.path.isRelativeUrl("file.html");
-
-// Returns: true
-var isRel = $.mobile.path.isRelativeUrl("?a=1&b=2");
-
-// Returns: true
-var isRel = $.mobile.path.isRelativeUrl("#foo");
-
-
-			
-			
- -
- - -
$.mobile.path.isAbsoluteUrl (method)
-
Utility method for determining if a URL is absolute.
-
- -
-
· Arguments
-
url (string, required) A relative or absolute URL.
- -
· Return Value
-
This function returns a boolean true if the URL is absolute, false if not.
- -
-
-
Examples: -
-			
-// Returns: true
-var isAbs = $.mobile.path.isAbsoluteUrl("http://foo.com/a/file.html");
-
-// Returns: false
-var isAbs = $.mobile.path.isAbsoluteUrl("//foo.com/a/file.html");
-
-// Returns: false
-var isAbs = $.mobile.path.isAbsoluteUrl("/a/file.html");
-
-// Returns: false
-var isAbs = $.mobile.path.isAbsoluteUrl("file.html");
-
-// Returns: false
-var isAbs = $.mobile.path.isAbsoluteUrl("?a=1&b=2");
-
-// Returns: false
-var isAbs = $.mobile.path.isAbsoluteUrl("#foo");
-
-
-			
-			
- -
- - -
$.mobile.base (methods, properties)
-
Utilities for working with generated base element. TODO: document as public API is finalized.
- - - -
$.mobile.silentScroll (method)
-
Scroll to a particular Y position without triggering scroll event listeners.
-
-
-
· Arguments:
-
yPos (number, defaults to 0). Pass any number to scroll to that Y location.
-
-
- -
Examples: -
-			
-//scroll to Y 100px
-$.mobile.silentScroll(100);
-			
-			
- -
- - - - - -
$.mobile.activePage (property)
-
Reference to the page currently in view.
- - - - -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/themes.html deleted file mode 100644 index 0a8cc78..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/api/themes.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - jQuery Mobile Framework - Static Containers, States - - - - - - - - - - -
- -
-

Themes

- Home - Search -
- -
- -
-

Theming overview

- -

The theming system used in jQuery Mobile is similar to the ThemeRoller system in jQuery UI with a few important improvements:

- -
    -
  • It takes advantage of CSS3 properties to add rounded corners, box and text shadow and gradients instead of images, allowing the theme file to be very lightweight and reducing server requests.
  • -
  • Themes include multiple color "swatches" — each consisting of a header bar, content body, and button states that can be freely mixed and matched to create visual texture — to make richer designs possible.
  • -
  • Open-ended theming allows for up to 26 unique swatches per theme, to add almost unlimited variety to designs.
  • -
  • All backgrounds now use CSS3 gradients to dramatically reduce file size and number of server requests.
  • -
  • There is a simplified icon set in a sprite to reduce image weight.
  • -
- -

ThemeRoller

- Themroller Mobile Logo - The easiest way to create custom themes is with the ThemeRoller tool. It allows you to build a theme, then download a custom CSS file, ready to be dropped into your project. - -

Themes & swatches

- -

The theme system separates color and texture from structural styles that define things like padding and dimensions. This allows theme colors and textures to be defined once in the stylesheet and to be mixed, matched, and combined to achieve a wide range of visual effects.

- -

Each theme includes several global settings, including font family, drop shadows for overlays, and corner radius values for buttons and boxes. In addition, the theme can include multiple color swatches, each with color values for bars, content blocks, buttons and list items, and font text-shadow.

- -

The default theme includes 5 swatches that are given letters (a, b, c, d, e) for quick reference. To make mapping of color swatches consistent across our widgets, we have followed the convention that swatch "a" is the highest level of visual priority (black in our default theme), "b" is secondary level (blue) and "c" is the baseline level (gray) that we use by default in many situations, "d" for an alternate secondary level and "e" as an accent swatch. Themes may have additional swatches for accent colors or specific situations. For example, you could add a new theme swatch "f" that has a red bar and button for use in error situations.

- -

Most theme changes can be done using ThemeRoller, but it's also simple to manually edit the base swatches in the default theme and/or add additional swatches by editing the theme CSS file. Just copy a block of swatch styles, rename the classes with the new swatch letter name, and tweak colors as you see fit.

- - -

Bars

-

The default theme contains the following five bar styles:

- -
-
Bar A - Link
-
Bar B - Link
-
Bar C - Link
-
Bar D - Link
-
Bar E - Link
-
- -

By default, the framework assigns the "a" swatch to all headers and footers, because these are typically given high visual priority in an application. To set the color of a bar to a different swatch color, simply add the data-theme attribute to your header or footer and specify an alternate swatch letter ('b' or 'd', for example) and the specified theme swatch color will be applied. Learn more about toolbar theming.

- - - -

Content Blocks

-

The default theme also includes color swatch values for use in content blocks, designed to coordinate with the header color swatches in the theme.

- -
-
Block A - Link
-
Block B - Link
-
Block C - Link
-
Block D - Link
-
Block E - Link
-
- - -

If a theme isn't specified on a content block, the framework will default to "c" to maximize contrast against the default header "a", as shown here:

- -
- Back -

Default Header

-
-
-

Default Theme Content Header

-

This is the default content color swatch and a preview of a link.

- - -
- Cache settings: - - - - -
- Button -
- - - -

Learn more about content theming.

- - -

Lists & Buttons

-

Each swatch also includes default styles for interactive elements like list items and buttons.

- - - - - - - - - - - -

A button is included for each swatch in the theme. Each button has styles for normal, hover/focus and pressed states.

- - - - -

By default, any button that's placed in a bar is automatically assigned a swatch letter that matches its parent bar or content box. Thus, the button is visually integrated into the parent theme as shown here:

- -
- - - - - -
- -

This default behavior makes it easy to ripple a theme change through a page by setting a theme swatch on a parent because you know the buttons will maintain the same relative visual weight across themes. Since form elements use the button styles, they will also adapt to their parent container.

- -

If you want to add visual emphasis to a button, an alternate swatch color can be set by adding a data-theme="a" to the anchor. Once an alternate swatch color is set on a button in the markup, the framework won't override that color if the parent theme is changed, because you made a conscious decision to set it.

- -
-
-
- A - B - C - D - E -
-
-
-
- A - B - C - D - E -
-
-
-
- A - B - C - D - E -
-
-
-
- A - B - C - D - E -
-
-
-
- A - B - C - D - E -
-
- -
- -

Learn more about list theming and button theming.

- -

Global "Active" state

-

The jQuery Mobile framework uses a swatch called "active" (bright blue in the default theme) to consistently indicate the selected state, regardless of the individual swatch of the given widget. We apply this in navigation and form controls whenever there is a need to indicate what is currently selected. Because this theme swatch is designed for clear, consistent user feedback, it cannot be overridden via the markup; it is set once in the theme and applied by the framework whenever a selected or active state is needed. The styling for this state is in the theme stylesheet under the ui-btn-active style rules.

- -
- Active is used for the on state of these toggles: - - - - -
- - -

Icons

-

There is a core set of standard icons included in the framework that can be assigned to any button. To minimize the download size of the core icons, jQuery Mobile only includes these icons in white and automatically adds a semi-transparent black circle behind the icon to make sure it has good contrast on all background colors.

- -

Theme classes

-

Assigning color swatches through the data-theme attribute is one way to leverage the theme system, but it's also possible to apply any of the theme swatches directly to your markup through classes to apply the colors, textures and font formatting of your theme to any markup. This is especially useful when creating your own custom layout elements or UI widgets. Here are a few common theme classes, but many more are available in the theme stylesheet:

-
-
ui-bar-(a-z)
-
Applies the toolbar theme styles for the selected swatch letter. Commonly used in conjunction with ui-bar structural class to add the standard bar padding styles.
-
ui-body-(a-z)
-
Applies the content body theme styles for the selected swatch letter. Commonly used in conjunction with ui-body structural class to add the standard content block padding styles.
-
ui-btn-up-(a-z)
-
Applies the button/clickable element theme styles for the selected swatch letter. Commonly used in with the ui-btn-hover-(a-z) and ui-btn-down-(a-z) interaction class states to provide visual feedback and ui-btn-active to indicate the selected or "on" state.
-
ui-corner-all
-
Applies the theme's global border-radius for rounded corners and is used for container or grouped items in the framework (inset lists, radiobutton sets). There are additional classes for all the possible combinations of rounded corners, for example: ui-corner-tl (top left only), -top (both top corners), -left (both left corners), etc. A second full set of corner classes is provided for buttons so these can have a different corner radius. These use classes with a similar naming convention, but with "btn-corner" instead of "corner", like this: .ui-btn-corner-all.
-
ui-shadow
-
Applies the theme's global drop shadow to any element using CSS box-shadow property.
-
ui-disabled
-
Applies the disabled look and feel which essentially reduces the opacity of any element with this class to 30%, hides the cursor, and sets pointer-events: none; which prevents any interaction in many modern browsers.
-
- -

Overriding themes

-

The themes are meant as a solid starting point, but are meant to be customized. Since everything is controlled by CSS, it's easy to use a web inspector tool to identify the style properties you want to modify. The set of of theme classes (global) and semantic structural classes (widget-specific) added to elements provide a rich set of possible selectors to target style overrides against. We recommend adding an external stylesheet to the head, placed after the structure and theme stylesheet references, that contain all your style overrides. This allows you to easily update to newer versions of the library because overrides are kept separate from the library code.

- - -

Learn more about theming individual components:

- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/api-buttons.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/api-buttons.html deleted file mode 100644 index 20a8005..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/api-buttons.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - jQuery Mobile Docs - Buttons - - - - - - - - - - -
- -
-

Button API

- Home - Search -
- -
- -

Dependencies

-

To be documented

- -

Options

-

To be documented

- -

Methods

-

To be documented

- -

Known Issues

-

To be documented

- - - -
-
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-events.html deleted file mode 100644 index 2a2708a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-events.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - jQuery Mobile Docs - Button events - - - - - - - - - - -
- -
-

Button basics

- Home - Search -
- -
-
- -
- -

Button basics

- - - -

Bind events directly to the a, input, or button element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$( ".myButton" ).bind( "click", function(event, ui) {
-  ...
-});
-
- -

The form button plugin has the following custom events:

- -
- -
create triggered when a form button is created
-
- -

-$('[type='submit']').button({
-   create: function(event, ui) { ... }
-});		
-			
-
- -
- -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-grouped.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-grouped.html deleted file mode 100644 index 0f91c2a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-grouped.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - jQuery Mobile Docs - Grouped Buttons - - - - - - - - - - -
- -
-

Grouped

- Home - Search -
- -
-
- -

Grouped buttons

-

Occasionally, you may want to visually group a set of buttons together to form a single block that looks contained like a navigation component. To get this effect, wrap a set of buttons in a container with the data-role="controlgroup" attribute — the framework will create a vertical button group, remove all margins and drop shadows between the buttons, and only round the first and last buttons of the set to create the effect that they are grouped together.

-

-<div data-role="controlgroup">
-<a href="index.html" data-role="button">Yes</a>
-<a href="index.html" data-role="button">No</a>
-<a href="index.html" data-role="button">Maybe</a>
-</div>
-
- -

By default, grouped buttons are presented as a vertical list:

- -
- Yes - No - Maybe -
- -

By adding the data-type="horizontal" attribute to the controlgroup container, you can swap to a horizontal-style group that floats the buttons side-by-side and sets the width to only be large enough to fit the content. (Be aware that these will wrap to multiple lines if the number of buttons or the overall text length is too wide for the screen.) - -

Horizontal grouped buttons:

-
- Yes - No - Maybe -
- -

Mini horizontal grouped buttons by adding data-mini="true to the controlgroup:

-
- Yes - No - Maybe -
- -

Horizontal grouped buttons with icons:

-
- Add - Delete -
- -

Mini horizontal grouped buttons with icons by adding data-mini="true to the controlgroup::

-
- Add - Delete -
- -

Horizontal grouped buttons, icon only:

-
- Up - Down - Delete -
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-icons.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-icons.html deleted file mode 100644 index 253b8c4..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-icons.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - jQuery Mobile Docs - Button icons - - - - - - - - - - -
- -
-

Button icons

- Home - Search -
- -
-
- -

Adding Icons to Buttons

-

The jQuery Mobile framework includes a selected set of icons most often needed for mobile apps. To minimize download size, jQuery Mobile includes a single white icon sprite, and automatically adds a semi-transparent black circle behind the icon to ensure that it has good contrast on any background color.

- - -

An icon can be added to a button by adding a data-icon attribute on the anchor specifying the icon to display. For example, the following markup:

- - - <a href="index.html" data-role="button" data-icon="delete">Delete</a> - - -

Creates this button with an icon:

- Delete - -

A more compact button with the data-inline="true" attribute added to the button:

- Delete - -

Icon set

- -

The following data-icon attributes can be referenced to create the icons shown below:

- -

Left arrow - data-icon="arrow-l"

- My button -

Right arrow - data-icon="arrow-r"

- My button -

Up arrow - data-icon="arrow-u"

- My button -

Down arrow - data-icon="arrow-d"

- My button -

Delete - data-icon="delete"

- My button -

Plus - data-icon="plus"

- My button -

Minus - data-icon="minus"

- My button -

Check - data-icon="check"

- My button -

Gear - data-icon="gear"

- My button -

Refresh - data-icon="refresh"

- My button -

Forward - data-icon="forward"

- My button -

Back - data-icon="back"

- My button -

Grid - data-icon="grid"

- My button -

Star - data-icon="star"

- My button -

Alert - data-icon="alert"

- My button -

Info - data-icon="info"

- My button -

Home - data-icon="home"

- My button -

Search - data-icon="search"

- My button - - -

Icon positioning

-

By default, all icons in buttons are placed to the left of the button text.

- Delete - -

This default may be overridden using the data-iconpos attribute to set the icon to the right, above (top) or below (bottom) the text. For example, the markup:

- - -<a href="index.html" data-role="button" data-icon="delete" data-iconpos="right">Delete</a> - - -

Creates this button with right-aligned icon:

- Delete - -

Icons can also be positioned above the text by specifying data-iconpos="top"

- Delete - -

Or icons can also be positioned below the text by specifying data-iconpos="bottom"

- Delete - -

You can also create an icon-only button, by setting the data-iconpos attribute to notext. The button plugin will hide the text on-screen, but add it as a title attribute on the link to provide context for screen readers and devices that support tooltips. For example, replacing data-iconpos="right" on the previous example with data-iconpos="notext":

- - -<a href="index.html" data-role="button" data-icon="delete" data-iconpos="notext">Delete</a> - - -

Creates this icon-only button:

- Delete - - - -

Mini & Inline

-

The mini and inline attributes can be added to produce more compact buttons:

- Delete - Delete - Delete - Delete - Delete - - -

Custom Icons

-

To use custom icons, specify a data-icon value that has a unique name like myapp-email and the button plugin will generate a class by prefixing ui-icon- to the data-icon value and apply it to the button: ui-icon-myapp-email.

-

You can then write a CSS rule in your stylesheet that targets the ui-icon-myapp-email class to specify the icon background source. To maintain visual consistency with the rest of the icons, create a white icon 18x18 pixels saved as a PNG-8 with alpha transparency.

-

In this example, we're just pointing to a standalone icon image, but you could just as easily use an icon sprite and specify the positioning instead, just like the icon sprite we use in the framework.

- -
.ui-icon-myapp-email {
-	background-image: url("app-icon-email.png");
-}
- -

This will create the standard resolution icon, but many devices now have very high resolution displays, like the retina display on the iPhone 4. To add a HD icon, create an icon that is 36x36 pixels (exactly double the 18 pixel size), and add second rule that uses the -webkit-min-device-pixel-ratio: 2 media query to target a rule only to high resolution displays. Specify the background image for the HD icon file and set the background size to 18x18 pixels which will fit the 36 pixel icon into the same 18 pixel space. The media query block can wrap multiple icon rules:

-

-@media only screen and (-webkit-min-device-pixel-ratio: 2) {
-	.ui-icon-myapp-email {
-		background-image: url("app-icon-email-highres.png");
-		background-size: 18px 18px;
-	}
-	...more HD icon rules go here...
-}
-
- -

Icons and themes

-

The semi-transparent black circle behind the white icon ensures good contrast on any background color so it works well with the jQuery Mobile theming system. Here are examples of the same icons sitting on top of a range of different color swatches with themed buttons.

- - -

Swatch "A" themed buttons

- - - -

Swatch "B" themed buttons

- - - -

Swatch "C" themed buttons

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-inline.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-inline.html deleted file mode 100644 index cc9b551..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-inline.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - jQuery Mobile Docs - Inline buttons - - - - - - - - - - -
- -
-

Inline buttons

- Home - Search -
- -
-
-

Inline buttons

-

By default, all buttons in the body content are styled as block-level element so they fill the width of the screen:

- - Button - - -

However, if you want a more compact button that is only as wide as the text and icons inside, add the data-inline="true" attribute to the button:

- - - Button - -

If you have multiple buttons that should sit side-by-side on the same line, add the data-inline="true" attribute to each button. This will style the buttons to be the width of their content and float the buttons so they sit on the same line.

- -

-<a href="index.html" data-role="button" data-inline="true">Cancel</a>
-<a href="index.html" data-role="button" data-inline="true" data-theme="b">Save</a>
-
- -

The result is this:

- - Cancel - Save - -

Adding the data-mini="true" to the inline buttons creates a more compact version:

- - Cancel - Save - - -

If you want buttons to sit side-by-side but stretch to fill the width of the screen, you can use the content column grids to put normal full-width buttons into 2- or 3-columns.

- -

Icon example

-

When an icon is added to an inline button, the button will grow wider to accommodate the icon:

- - Cancel - Save - -

A mini version of the same:

- - Cancel - Save - -

- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-methods.html deleted file mode 100644 index e017ae6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-methods.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - jQuery Mobile Docs - Button methods - - - - - - - - - - -
- -
-

Button basics

- Home - Search -
- -
-
- -
- -

Button basics

- - - -

The following methods apply only to form buttons. Link-based buttons do not have any associated methods.

- -
- -
enable enable a disabled form button
-
-

-$('[type='submit']').button('enable');			
-				
-
- -
disable disable a form button
-
-

-$('[type='submit']').button('disable');			
-				
-
- -
refresh update the form button
-
-

If you manipulate a form button via JavaScript, you must call the refresh method on it to update the visual styling.

- -
		
-$('[type='submit']').button('refresh');
-				
-
- -
- -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-options.html deleted file mode 100644 index 7c51498..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-options.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - jQuery Mobile Docs - Button options - - - - - - - - - - -
- -
-

Button basics

- Home - Search -
- -
-
- -
- -

Button basics

- - - -

The following options apply to all buttons:

- -
-
corners boolean
-
-

default: true

-

Applies the theme button border-radius if set to true. This option is also exposed as a data attribute: data-corners="false"

-
$('a').buttonMarkup({ corners: "false" });
- No rounded corners -
-
icon string
-
-

default: null

-

Applies an icon from the icon set. This option is also exposed as a data attribute: data-icon="star"

-
$('a').buttonMarkup({ icon: "star" });
- Star icon -
- -
iconpos string
-
-

default: "left"

-

Positions the icon in the button. Possible values: left, right, top, bottom, none, notext. The notext value will display an icon-only button with no text feedback. This option is also exposed as a data attribute: data-iconpos="left"

-
$('a').buttonMarkup({ iconpos: "right" });
- Star icon -
- -
iconshadow boolean
-
-

default: true

-

Applies the theme shadow to the button's icon if set to true. This option is also exposed as a data attribute: data-iconshadow="false"

-
$('a').buttonMarkup({ iconshadow: "false" });
- No icon shadow -
- -
inline boolean
-
-

default: null (false)

-

If set to true, this will make the button act like an inline button so the width is determined by the button's text. By default, this is null (false) so the button is full width, regardless of the feedback content. Possible values: true, false. This option is also exposed as a data attribute: data-inline="true"

-
$('a').buttonMarkup({ inline: "true" });
- Inline -
- -
mini boolean
-
-

default: null (false)

-

If set to true, this will display a more compact version of the button that uses less vertical height. Possible values: true, false. This option is also exposed as a data attribute: data-mini="true"

-
$('a').buttonMarkup({ mini: "true" });
- Inline -
- -
shadow boolean
-
-

default: true

-

Applies the drop shadow style to the button if set to true. This option is also exposed as a data attribute: data-shadow="false"

-
$('a').buttonMarkup({ shadow: "false" });
- No button shadow -
- -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('a').buttonMarkup({ theme: "a" });
- Theme A -
-
- -
-

The following option applies only to form buttons, which are automatically initialized by the framework:

-
- -
-
initSelector CSS selector string
-
-

default: "button, [type='button'], [type='submit'], [type='reset'], [type='image']"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as form buttons. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-   $.mobile.button.prototype.options.initSelector = ".myButtons";
-});
-
-
-
- - -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-themes.html deleted file mode 100644 index 486d6d8..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-themes.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming buttons - - - - - - - - - - -
- -
-

Theming buttons

- Home - Search -
- -
-
- -

Theming buttons

- -

jQuery Mobile has a rich theming system that gives you full control of how buttons are styled. When a link is added to a container, it is automatically assigned a theme swatch letter that matches its parent bar or content box to visually integrate the button into the parent container, like a chameleon. So a button placed inside a content container with a theme of "a" (black in the default theme) will be automatically assigned the button theme of "a" (charcoal in the default theme). Here are examples of the button theme pairings in the default theme. All buttons have the same HTML markup:

- -

A swatch

Button
-

B swatch

Button
-

C swatch

Button
-

D swatch

Button
-

E swatch

Button
- -

Assigning theme swatches

-

Buttons can be manually assigned any of the button color swatches from the theme to add visual contrast with the container they sit inside by adding the data-theme attribute on the button markup and specifying a swatch letter.

- -
			
-<a href="index.html" data-role="button" data-theme="a">Theme a</a>			
-
- -

Here are 5 buttons with icons that have a different swatch letter assigned via the data-theme attribute.

- - Theme a - Theme b - Theme c - Theme d - Theme e - -

Theme variations

- -

"a" theme on container with themed buttons inside

- - -

"b" theme on container with themed buttons inside

- - -

"c" theme on container with themed buttons inside

- - -

"d" theme on container with themed buttons inside

- - -

"e" theme on container with themed buttons inside

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-types.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-types.html deleted file mode 100644 index 557ddb9..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/buttons-types.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - jQuery Mobile Docs - Button types - - - - - - - - - - -
- -
-

Button basics

- Home - Search -
- -
-
- -

Button basics

- - - - -

Buttons are coded with standard HTML anchor and input elements, then enhanced by jQuery Mobile to make them more attractive and useable on a mobile device. Use anchor links (a elements) to mark up navigation buttons, and input or button elements for form submission.

-

View the data- attribute reference to see all the possible attributes for buttons including adding icons or displaying them inline or grouped.

- -

Styling links as buttons

- -

In the main content block of a page, you can style any anchor link as a button by adding the data-role="button" attribute. The framework will enhance the link with markup and classes to style the link as a button. For example, this markup:

- - -<a href="index.html" data-role="button">Link button</a> - - -

Produces this link-based button:

- Link button - -

Note: Links styled like buttons have all the same visual options as true form-based buttons below, but there are a few important differences. Link-based buttons aren't part of the button plugin and only just use the underlying buttonMarkup plugin to generate the button styles so the form button methods (enable, disable, refresh) aren't supported. If you need to disable a link-based button (or any element), it's possible to apply the disabled class ui-disabled yourself with JavaScript to achieve the same effect.

- -

Mini size

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the button to create a mini version.

- -
	
-<a href="index.html" data-role="button" data-mini="true">Link button</a>
-
- -

This will produce a search input that a not as tall as the standard version and has a smaller text size.

- Link button - - - -

Form buttons

-

For ease of styling, the framework automatically converts any button or input element with a type of submit, reset, button, or image into a custom styled button — there is no need to add the data-role="button" attribute. However, if needed, you can directly call the button plugin on any selector, just like any jQuery plugin:

- - -$('[type='submit']').button(); - - -

To preserve events bound to the original button or input, the framework hides the original element by making it transparent and positioning it over the new button markup. When a user clicks on the the custom-styled button, they're actually clicking on the original element. To prevent a form button from being converted into an enhanced button, add the data-role="none" attribute and hte native control will be rendered.

- -

Button based button:

- - -

Input type="button" based button:

- - -

Input type="submit" based button:

- - -

Input type="reset" based button:

- - -

Input type="image" based button:

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/index.html deleted file mode 100644 index 279d9e7..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/buttons/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - jQuery Mobile Docs - Buttons - - - - - - - - - - -
- -
-

Buttons

- Home - Search -
- -
-

Buttons are core widgets in jQuery Mobile, and are used within a wide range of other plugins.

- - -
-
- - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/dialogTransition.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/dialogTransition.html deleted file mode 100644 index f7cbd28..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/dialogTransition.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

defaultDialogTransition is now "flip"

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - Or open a basic dialog - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/iOSFullscreen.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/iOSFullscreen.html deleted file mode 100644 index f861481..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/iOSFullscreen.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - - -
- -
-

jQuery Mobile

- Home - Search -
- -
- -

Fullscreen docs in iOS

-

First, hit Add to Home Screen to create a new shortcut icon on the home screen. Next, open the new shortcut and hit the button below to browse the docs as a fullscreen web app.

- Browse docs - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/index.html deleted file mode 100644 index 90b7fea..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/jq17b1.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/jq17b1.html deleted file mode 100644 index 2b26059..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/jq17b1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - -
- -
-

jQuery version

- Home - Search -
- -
- -

jQuery core version 1.7 Beta 1

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessage.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessage.html deleted file mode 100644 index e489427..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessage.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

loadingMessage is now disabled

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessageTextVisible.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessageTextVisible.html deleted file mode 100644 index 0047395..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/loadingMessageTextVisible.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - -
- - -
-

Config applied

- Home - Search -
- -
- -

loadingMessage text is now visible

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - -

To display the loading message on demand:

-
$.mobile.showPageLoadingMsg();
-

Click the buttons below to show and hide the loading message with the default options.

-
- - -
- -

Theming the loading message

-

To display the loading message with a different theme and message:

-
$.mobile.showPageLoadingMsg("a", "Loading theme a...");
-

The theme and message can be changed on the fly by calling the method again. Click the buttons below to see the loading message with the indicated theme.

-
- - - - - - -
- -

Text only messages

-

To display the loading message with no spinner:

-
$.mobile.showPageLoadingMsg("a", "No spinner", true);
-

Click the button below to see the loading message with no spinner.

-
- - -
- - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/minScrollBack.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/minScrollBack.html deleted file mode 100644 index ae90a2b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/minScrollBack.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

minScrollBack is now set to 999 (disabled)

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageLoadErrorMessage.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageLoadErrorMessage.html deleted file mode 100644 index 4cbe535..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageLoadErrorMessage.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

pageLoadErrorMessage is now "Yikes, we broke the internet!"

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - Or try this broken link - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageTransition.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageTransition.html deleted file mode 100644 index 8b2fca1..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pageTransition.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

defaultPageTransition is now "flow"

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pushState.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pushState.html deleted file mode 100644 index 7d54f0a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/pushState.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

pushStateEnabled is now disabled

-

To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/touchOverflow.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/touchOverflow.html deleted file mode 100644 index f746004..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/config/touchOverflow.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - jQuery Mobile Docs - Configuration - - - - - - - - - - - - - - -
- -
-

Config applied

- Home - Search -
- -
- -

touchOverflowEnabled is now active

-

The toolbar on this page should now be fixed, like a native toolbar. To test, hit the button below and browse the docs. Note that if a link causes a refresh, this setting will be lost and the default settings will be seen.

- Browse docs - touchOverflow docs - -

Some good pages to test out:

- Fixed toolbars - Fullscreen toolbars - Fixed persistent footer - Dialogs & transitions - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/api-content.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/api-content.html deleted file mode 100644 index 15bb7df..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/api-content.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - jQuery Mobile Docs - Content formatting - - - - - - - - - -
- -
-

Content formatting API

-
- -
- -

Dependencies

-

To be documented

- -

Options

-

To be documented

- -

Methods

-

To be documented

- -

Known Issues

-

To be documented

- - - -
-
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-events.html deleted file mode 100644 index 4030a9c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-events.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible

- Home - Search -
- -
-
-

Collapsible content

- - - -

Bind events directly to the container, typically a div element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-

-$( ".selector" ).bind( "collapse", function(event, ui) {
-  ...
-});
-
- -

The collapsible plugin has the following custom events:

- -
- -
create triggered when a collapsible is created
-
- -

-$( ".selector" ).collapsible({
-   create: function(event, ui) { ... }
-});
-			
-
- -
collapse triggered when a collapsible is collapsed
-
- -

-$( ".selector" ).collapsible({
-   collapse: function(event, ui) { ... }
-});
-			
-
- -
expand triggered when a collapsible is expanded
-
- -

-$( ".selector" ).collapsible({
-   expand: function(event, ui) { ... }
-});
-			
-
- -
- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-methods.html deleted file mode 100644 index 8fc91c8..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-methods.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible

- Home - Search -
- -
-
-

Collapsible content

- - - -

The collapsible plugin has no public methods.

-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-options.html deleted file mode 100644 index e45b18c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-options.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible

- Home - Search -
- -
-
-

Collapsible content

- - - -

The collapsible plugin has the following options:

- -
-
collapsed boolean
-
-

default: true

-

When false, the container is initially expanded with a minus icon in the header. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.collapsed = false;
-});
-
-

This option is also exposed as a data attribute: data-collapsed="false".

-
- -
collapseCueText string
-
-

default: " click to collapse contents"

-

This text is used to provide audible feedback for users with screen reader software. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.collapseCueText = " collapse with a click";
-});
-
-
- -
contentTheme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for the collapsible content block. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.contentTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-content-theme="a".

-
- -
expandCueText string
-
-

default: " click to expand contents"

-

This text is used to provide audible feedback for users with screen reader software. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.expandCueText = " expand with a click";
-});
-
-
- -
heading string
-
-

default: "h1,h2,h3,h4,h5,h6,legend"

-

Within the collapsible container, the first immediate child element that matches this selector will be used as the header for the collapsible. To change the selector, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.heading = ".mycollapsibleheading";
-});
-
-
- -
iconpos string
-
-

default: "left"

-

Positions the icon in the collapsible header. Possible values: left, right, top, bottom, none, notext.

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.iconpos = "right";
-});
-
-

This option is also exposed as a data attribute: data-iconpos="right".

-
- - - -
initSelector CSS selector string
-
-

default: ":jqmData(role='collapsible')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as collapsibles. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.initSelector = ".mycollapsible";
-});
-
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. If the value is false for an individual collapsible container, but that container is part of a collapsible set, then the value is inherited from the parent collapsible set. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.mini = true;
-});
-
-

This option is also exposed as a data attribute: data-mini="true".

-
-
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for the collapsible. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsible.prototype.options.theme = "a";
-});
-
-

This option is also exposed as a data attribute: data-theme="a".

-
- - -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-events.html deleted file mode 100644 index 5a558af..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-events.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible set

- Home - Search -
- -
-
-

Collapsible sets

- - - -

Bind events directly to the set container, typically a div element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-

-$( ".selector" ).bind( "create", function(event, ui) {
-  ...
-});
-
- -

The collapsible set plugin has the following custom event:

- -
- -
create triggered when a collapsible set is created
-
- -

-$( ".selector" ).collapsibleset({
-   create: function(event, ui) { ... }
-});
-			
-
- -
- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-methods.html deleted file mode 100644 index 781967b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-methods.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Sets - - - - - - - - - - -
- -
-

Collapsible set

- Home - Search -
- -
-
-

Collapsible sets

- - - -

The collapsible set plugin has the following method:

- -
-
refresh update the collapsible set
-
-

If you manipulate a collapsible set via JavaScript (e.g. add new collapsible containers), you must call the refresh method on it to update the visual styling.

- -

-$('.selector').collapsibleset('refresh');
-				
-
- -
- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-options.html deleted file mode 100644 index 25b3400..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set-options.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Sets - - - - - - - - - - -
- -
-

Collapsible set

- Home - Search -
- -
-
-

Collapsible sets

- - - -

The collapsible plugin has the following options:

- -
-
iconpos string
-
-

default: "left"

-

Positions the icons in the collapsible headers. Possible values: left, right, top, bottom, none, notext.

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsibleset.prototype.options.iconpos = "right";
-});
-
-

This option is also exposed as a data attribute: data-iconpos="right".

-
- -
initSelector CSS selector string
-
-

default: ":jqmData(role='collapsible-set')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as collapsible sets. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsibleset.prototype.options.initSelector = ".mycollapsibleset";
-});
-
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsibleset.prototype.options.mini = true;
-});
-
-

This option is also exposed as a data attribute: data-mini="true".

-
-
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for the collapsible set. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.collapsibleset.prototype.options.theme = "a";
-});
-
-

This option is also exposed as a data attribute: data-theme="a".

-
- -
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set.html deleted file mode 100644 index 94323bb..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible-set.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible set

- Home - Search -
- -
-
-

Collapsible set (accordion)

- - - -

Collapsible sets start with the exact same markup as individual collapsibles. By adding a parent wrapper with a data-role="collapsible-set" attribute around a number of collapsibles, the framework will style these to looks like a visually grouped widget and make it behave like an accordion so only one section can be open at a time. View the data- attribute reference to see all the possible attributes you can add to collapsible sets.

-

By default, all the sections will be collapsed. To set a section to be open when the page loads, add the data-collapsed="false" attribute to the heading of the section you want expanded.

- -
		
-<div data-role="collapsible-set">
-
-	<div data-role="collapsible" data-collapsed="false">
-	<h3>Section 1</h3>
-	<p>I'm the collapsible set content for section B.</p>
-	</div>
-	
-	<div data-role="collapsible">
-	<h3>Section 2</h3>
-	<p>I'm the collapsible set content for section B.</p>
-	</div>
-	
-</div>
-	
- - -

Here is an example of a collapsible set with 5 sections.

- -
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm open by default because I have the data-collapsed="false" attribute.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

-
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

-
-
-

Section 4

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

-
-
-

Section 5

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

-
-
- -

Mini collapsible sets

- -

For a more compact version that is useful in tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
-
-

Section 1

-

Collapsible content

-
-
-

Section 2

-

Collapsible content

- -
-
-

Section 3

-

Collapsible content

-
-
- -

Icon positioning

-

Collapsible headings’ default icon positioing can be overridden by using the data-iconpos attribute, either at the collapsible-set level or on an individual collapsible basis.

- -
-
-

Section 1

-

Inherits icon positioning from data-iconpos="right" attribute on parent.

-
-
-

Section 2

-

data-iconpos="left"

-
-
-

Section 3

-

data-iconpos="bottom"

-
-
-

Section 4

-

data-iconpos="top"

-
-
- - - -

Theming collapsible content

-

The standard data-theme attribute can be used to set the color of each collapsible in a set. To provide a clearer visual grouping of the content with the headers, add the data-content-theme attribute with a swatch letter. This adds a themed background color and border to the content block. For consistent theming, add these attributes to the parent collapsible set.

- - -
		
-<div data-role="collapsible-set" data-theme="c" data-content-theme="d">
-
- - -
-
-

Section 1

-

Collapsible content

-
-
-

Section 2

-

Collapsible content

- -
-
-

Section 3

-

Collapsible content

-
-
- -

Theming individual sections

-

To have individual sections in a group styled differently, add data-theme and data-content-theme attributes to specific collapsibles.

- -
-
-

Section header, swatch B

-

Collapsible content, swatch B

-
-
-

Section header, swatch A

-

Collapsible content, swatch A

-
-
-

Section header, swatch E

-

Collapsible content, swatch D

-
-
- -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible.html deleted file mode 100644 index 412083b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-collapsible.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - jQuery Mobile Docs - Collapsible Content - - - - - - - - - - -
- -
-

Collapsible

- Home - Search -
- -
-
-

Collapsible content

- - - -

To create a collapsible block of content, create a container and add the data-role="collapsible" attribute. Using data-content-theme attribute allows you to set a theme for the content of the collapsible. View the data- attribute reference to see all the possible attributes you can add to collapsibles.

- -

Directly inside this container, add any header element (H1-H6). The framework will style the header to look like a clickable button and add a "+" icon to the left to indicate it's expandable.

- -

After the header, add any HTML markup you want to be collapsible. The framework will wrap this markup in a container that will be hidden/shown when the heading is clicked.

- -

By default, the content will be collapsed.

-
		
-<div data-role="collapsible">
-   <h3>I'm a header</h3>
-   <p>I'm the collapsible content. By default I'm closed, but you can click the header to open me.</p>
-</div>
-
- - -
-

I'm a header

-

I'm the collapsible content. By default I'm closed, but you can click the header to open me.

-
- -

Expanding collapsibles on load

- -

To expand the content when the page loads, add the data-collapsed="false" attribute to the wrapper.

- - -<div data-role="collapsible" data-collapsed="false"> - - -

This code will create a collapsible widget like this:

- - -
-

I'm a header

-

I'm the collapsible content. I'm expanded by default because I have the "collapsed" state set to false.

-
- -

Mini collapsibles

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- - - <div data-role="collapsible" data-mini="true"> - - -

This code will create a mini collapsible widget:

- -
-

I'm a mini header

-

I'm the collapsible content. I'm expanded by default because I have the "collapsed" state set to false.

-
- -

Icon positioning

-

Collapsible headings’ default icon positioing can be overridden by using the data-iconpos attribute. In the below case, data-iconpos="right".

- -
-

I'm a header

-

data-iconpos="right"

-
- - -

Theming collapsible content

- - -

Collapsible content is minimally styled — we add only a bit of margin between the bar and content, and the header adopts the default Theme styles of the container it sits within.

- -

To provide a stronger visual connection between the collapsible header and content, add the data-content-theme attribute to the wrapper and specify a theme swatch letter. This will apply the swatch's border and flat background color (not the gradient) to the content block and changes the corner rounding to square off the bottom of the header and round the bottom of the content block instead to visually group these elements.

- -
		
-<div data-role="collapsible" data-content-theme="c">
-   <h3>Header swatch A</h3>
-   <p>I'm the collapsible content with a themed content block set to "C".</p>
-</div>
-
- -
-

Header swatch

-

I'm the collapsible content with a themed content block set to "C".

-
- -

Theming collapsible headers

-

To set the theme on a collapsible header button, add the data-theme attribute to the wrapper and specify a swatch letter. Note that you can mix and match swatch letters between the header and content with these theme attributes.

- -
		
-<div data-role="collapsible" data-theme="a" data-content-theme="a">
-   <h3>Header swatch A</h3>
-   <p>I'm the collapsible content with a themed content block set to "A".</p>
-</div>
-
- -
-

Header swatch A

-

I'm the collapsible content with a themed content block set to "A".

-
- - - -
-

Header swatch B

-

I'm the collapsible content with a themed content block set to "D".

-
- - - -

Nested Collapsibles

- -

Collapsibles can be nested inside each other if needed. In this example, we're setting the content theme to provide clearer visual connection between the levels.

-
-

I'm a header

-

I'm the collapsible content. By default I'm open and displayed on the page, but you can click the header to hide me.

- -
-

I'm a nested collapsible with a child collapsible

-

I'm a child collapsible.

-
-

Nested inside again.

-

Three levels deep now.

-
-
- - -
-

Section 3: Form elements

-
-
- - -
-
- - -
-
-
-
-
-
-
- -
-

Section 4: Collapsed list

-

Here is an inset list:

- -
-
- - - -

Collapsible sets (accordions)

-

It's possible to combine multiple collapsibles into a grouped sets that acts like an accordion widget.

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-grids.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-grids.html deleted file mode 100644 index a9652e2..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-grids.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - jQuery Mobile Docs - Content Grids - - - - - - - - - - -
- -
-

Layout grids

- Home - Search -
- -
-
- -

Using multiple column layouts isn't generally recommended on a mobile device because of the narrow screen width, but there are times where you may need to place small elements side-by-side (like buttons or navigation tabs, for example).

- -

The jQuery Mobile framework provides a simple way to build CSS-based columns through a block style class convention called ui-grid.

- -

There are four preset configurations layouts that can be used in any situation that requires columns:

-
    -
  • two-column (using the ui-grid-a class)
  • -
  • three-column (using the ui-grid-b class)
  • -
  • four-column (using the ui-grid-c class)
  • -
  • five-column (using the ui-grid-d class)
  • -
- -

Grids are 100% width, completely invisible (no borders or backgrounds) and don't have padding or margins, so they shouldn't interfere with the styles of elements placed inside them.

-

Within the grid container, child elements are assigned ui-block-a/b/c/d in a sequential manner which makes each "block" element float side-by-side, forming the grid. The ui-block-a class essentially clears the floats which will start a new line (see multiple row grids, below).

- -

Two column grids

-

To build a two-column (50/50%) layout, start with a container with a class of ui-grid-a, and add two child containers inside it classed with ui-block-a for the first column and ui-block-b for the second:

- -

-<div class="ui-grid-a">
-	<div class="ui-block-a"><strong>I'm Block A</strong> and text inside will wrap</div>
-	<div class="ui-block-b"><strong>I'm Block B</strong> and text inside will wrap</div>
-</div><!-- /grid-a -->
-
- - - -

The above markup produces the following content layout:

- -
-
I'm Block A and text inside will wrap.
-
I'm Block B and text inside will wrap.
-
- -

As you see above, by default grid blocks have no visual styling; they simply present content side-by-side.

- -

Grid classes can be applied to any container. In this next example, we add ui-grid-a to a fieldset, and apply the ui-block classes to the two buttons inside to stretch them each to 50% of the screen width:

- -

-<fieldset class="ui-grid-a">
-	<div class="ui-block-a"><button type="submit" data-theme="c">Cancel</button></div>
-	<div class="ui-block-b"><button type="submit" data-theme="b">Submit</button></div>	   
-</fieldset>
-
- -
-
-
-
- - -

Theme classes (not data-theme attributes) from the theming system can be added to an element, including grids. On the blocks below, we're adding two classes: ui-bar to add the default bar padding and ui-bar-e to apply the background gradient and font styling for the "e" toolbar theme swatch. For illustration purposes, an inline style="height:120px" attribute is also added to each grid to set each to a standard height.

- -
-
Block A
-
Block B
-
- -

Three-column grids

-

The other grid layout configuration uses class=ui-grid-b on the parent, and 3 child container elements, each with its respective ui-block-a/b/c class, to create a three-column layout (33/33/33%). Note: These blocks are also styled with theme classes so the grid layout is clearly visible.

- -

-<div class="ui-grid-b">
-	<div class="ui-block-a">Block A</div>
-	<div class="ui-block-b">Block B</div>
-	<div class="ui-block-c">Block C</div>
-</div><!-- /grid-b -->
-
- -

This will produce a 33/33/33% grid for our content.

- -
-
Block A
-
Block B
-
Block C
-
- -

And an example of a 3 column grid with buttons inside:

- -
-
-
-
-
- -

Four-column grids

- -

A four-column, 25/25/25/25% grid is created by specifying class=ui-grid-c on the parent and adding a fourth block. Note: These blocks are also styled with theme classes so the grid layout is clearly visible.

- -
-
A
-
B
-
C
-
D
-
- -

Five-column grids

-

A five-column, 20/20/20/20/20% grid is created by specifying class=ui-grid-d on the parent and adding a fourth block. Note: These blocks are also styled with theme classes so the grid layout is clearly visible.

- -
-
A
-
B
-
C
-
D
-
E
-
- -

Multiple row grids

- -

Grids are designed to wrap to multiple rows of items. For example, if you specify a 3-column grid (ui-grid-b) on a container that has nine child blocks, it will wrap to 3 rows of 3 items each. There is a CSS rule to clear the floats and start a new line when the class=ui-block-a is seen so make sure to assign block classes in a repeating sequence (a, b, c, a, b, c, etc.) that maps to the grid type:

- -
-
A
-
B
-
C
-
A
-
B
-
C
-
A
-
B
-
C
-
- - -

Grids in toolbars

-

Grids are helpful for creating layouts within a toolbar. Here's a footer with a 3 column grid.

- -
-

Settings

-
-
-
-
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-html.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-html.html deleted file mode 100644 index a7de57d..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-html.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - jQuery Mobile Docs - HTML formatting - - - - - - - - - - -
- -
-

HTML Formatting

- Home - Search -
- -
-
- - - - - -

The default approach to styling content in jQuery Mobile is simple: Use a light hand. Our goal is to let the browser's native rendering take precedence; we add a bit of padding for more comfortable readability, and use the theming system to apply the font family and colors.

-

Taking a light hand with content styling gives designers and developers a clean slate to work with, instead of fighting against a lot of complex style overhead.

- -

Default HTML markup styling

-

By default, jQuery Mobile themes use standard HTML styles and sizes for standard markup elements like headers, paragraph content, block quotes, anchor links, standard ordered, unordered and definition lists, and tables — as shown in the examples below:

-
- -

H1 Heading

-

H2 Heading

-

H3 Heading

-

H4 Heading

-
H5 Heading
-
H6 Heading
- -

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

- -
How about some blockquote action with a cite
- -

This is another paragraph of text so you can see how HTML markup works in content. This is another paragraph of text so you can see how HTML markup works in content. This is another paragraph of text so you can see how HTML markup works in content.

- -

We add a few styles to tables and fieldsets to make them more legible, which are easily overridden with customs styles.

- -
    -
  • Unordered list item 1
  • -
  • Unordered list item 1
  • -
  • Unordered list item 1
  • -
- -
    -
  1. Ordered list item 1
  2. -
  3. Ordered list item 1
  4. -
  5. Ordered list item 1
  6. -
- -
-
Definition term
-
I'm the definition text
-
Definition term
-
I'm the definition text
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Travel Itinerary
Flight:From:To:
Total: 3 flights
JetBlue 983Boston (BOS)New York (JFK)
JetBlue 354San Francisco (SFO)Los Angeles (LAX)
JetBlue 465New York (JFK)Portland (PDX)
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-themes.html deleted file mode 100644 index 9fdb97a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/content-themes.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - jQuery Mobile Docs - Content Themes - - - - - - - - - - -
- -
-

Theming content

- Home - Search -
- -
-
-

Theming the content area

-

The main content area of a page (container with the data-role="content" attribute) should be themed by adding the data-theme attribute to the data-role="page" container to ensure that the background colors are applied to the full page, regardless of the content length. (If you add the data-theme attribute to the content container, the background color will stop after the content. So there may be a gap in color between the content and fixed footer.)

-

Additionally, the content area of a collapsible can be themed to match the theme of the collapsible header using the data-content-theme attribute.

- - -<div data-role="page" data-theme="a" data-content-theme="a"> - - -

Theming collapsible blocks

-

To set the color of the collapsible header, add the data-theme attribute to the collapsible container. The icon and body are not currently themable through data attributes, but can be styled directly with custom css.

- - -<div data-role="collapsible" data-collapsed="true" data-theme="a"> - -

Themed examples

- -

A theme swatch on content & collapsible

-
-

H1 Heading

-

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

-
-

I'm a themed collapsible

-

I have data-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
-

I'm a themed collapsible with a themed content

-

I have data-content-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
- -

B theme swatch on content & collapsible

-
-

H1 Heading

-

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

-
-

I'm a themed collapsible

-

I have data-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
-

I'm a themed collapsible with a themed content

-

I have data-content-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
- -

C theme swatch on content & collapsible

-
-

H1 Heading

-

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

-
-

I'm a themed collapsible

-

I have data-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
-

I'm a themed collapsible with a themed content

-

I have data-content-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
- -

D theme swatch on content & collapsible

-
-

H1 Heading

-

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

-
-

I'm a themed collapsible

-

I have data-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
-

I'm a themed collapsible with a themed content

-

I have data-content-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
- -

E theme swatch on content & collapsible

-
-

H1 Heading

-

This is a paragraph that contains strong, emphasized and linked text. Here is more text so you can see how HTML markup works in content. Here is more text so you can see how HTML markup works in content.

-
-

I'm a themed collapsible

-

I have data-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
-

I'm a themed collapsible with a themed content

-

I have data-content-theme attribute set manually on my container to set the color to match the content block I'm in.

-
-
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/index.html deleted file mode 100644 index 697cb3c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/content/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - jQuery Mobile Docs - Content formatting - - - - - - - - - - -
- -
-

Content formatting

- Home - Search -
- -
- -

The content of pages in jQuery Mobile is completely open-ended, but the jQuery Mobile framework provides a number of helpful tools and widgets — such as collapsible panels and multiple-column grid layouts — to make it easy to format your content for mobile devices.

- - - - - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/events.html deleted file mode 100644 index 93ea81f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/events.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - jQuery Mobile Docs - Checkboxes - - - - - - - - - - -
- -
-

Checkboxes

- Home - Search -
- -
-
- -
- -

Checkboxes

- - - -

Bind events directly to the input element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$("input[type='checkbox']").bind( "change", function(event, ui) {
-  ...
-});
-
- -

The checkbox plugin has the following custom events:

- -
- -
create triggered when a checkbox is created
-
- -

-$("input[type='checkbox']").checkboxradio({
-   create: function(event, ui) { ... }
-});		
-			
-
- - -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/index.html deleted file mode 100644 index 3cef506..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/index.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - jQuery Mobile Docs - Checkboxes - - - - - - - - - - -
- -
-

Checkboxes

- Home - Search -
- -
-
- -
- -

Checkboxes

- - - -

Checkboxes are used to provide a list of options where more than one can be selected. Traditional desktop checkboxes are not optimized for touch input so in jQuery Mobile, we style the label for the checkboxes so they are larger and look clickable. A custom set of icons are added to the label to provide additional visual feedback.

- -

Both the radio and checkbox controls below use standard input/label markup, but are styled to be more touch-friendly. The styled control you see is actually the label element, which sits over the real input, so if images fail to load, you'll still have a functional control. In most browsers, clicking the label automatically triggers a click on the input, but we've had to trigger the update manually for a few mobile browsers that don't do this natively. On the desktop, these controls are keyboard and screen-reader accessible. View the data- attribute reference to see all the possible attributes you can add to checkboxes.

- -

To create a single checkbox, add an input with a type="checkbox" attribute and a corresponding label. If the input isn’t wrapped in its corresponding label, be sure to set the for attribute of the label to match the ID of the input so they are semantically associated.

- -
	
-<label><input type="checkbox" name="checkbox-1" /> I agree </label>
-			
-<input type="checkbox" name="checkbox-0" id="checkbox-0" class="custom" />
-<label for="checkbox-0">I agree</label>
-		
- -

The above snippets will produce two basic checkboxes. The default styles will set the width of the element to 100% of the parent container.

- - - - - - - -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
	
-<input type="checkbox" name="checkbox-0" id="checkbox-mini-0" class="custom" data-mini="true" />
-<label for="checkbox-mini-0">I agree</label>
-
- -

This will produce a select that is not as tall as the standard version and has a smaller text size.

- - - - -

Field containers & Legends

-

Because checkboxes use the label element for the text displayed next to the checkbox form element, we recommend wrapping the checkbox in a fieldset element that has a legend which acts as the title for the question. Add the data-role="controlgroup" attribute to the fieldset so it can be styled in a parallel way as text inputs, selects or other form elements.

- -

Wrap the fieldset in a div with data-role="fieldcontain" attribute so it can be styled in a parallel way as text inputs, selects or other form elements.

- - -
	
-<div data-role="fieldcontain">
-    <fieldset data-role="controlgroup">
-	   <legend>Agree to the terms:</legend>
-	   <input type="checkbox" name="checkbox-1" id="checkbox-1" class="custom" />
-	   <label for="checkbox-1">I agree</label>
-    </fieldset>
-</div>
-
- -
-
- Agree to the terms: - - -
-
- - - -

Vertically grouped checkboxes

- -

Typically, there are multiple checkboxes listed under a question title. To visually integrate multiple checkboxes into a grouped button set, the framework will automatically remove all margins between buttons and round only the top and bottom corners of the set if there is a data-role="controlgroup" attribute on the fie.

- -
-
- Choose as many snacks as you'd like: - - - - - - - - - - - -
-
- -

Horizontal toggle sets

- -

Checkboxes can also be used for grouped button sets where more than one button can be selected at once, such as the bold, italic and underline button group seen in word processors. To make a horizontal button set, add the data-type="horizontal" to the fieldset.

- - -<fieldset data-role="controlgroup" data-type="horizontal"> - - -

The framework will float the labels so they sit side-by-side on a line, hide the checkbox icons and only round the left and right edges of the group.

- -
-
- Font styling: - - - - - - - - -
-
- - - - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/methods.html deleted file mode 100644 index 0fc34dd..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/methods.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Checkboxes - - - - - - - - - - -
- -
-

Checkboxes

- Home - Search -
- -
-
- -
- -

Checkboxes

- - - -

The checkbox has the following methods:

- -
- -
enable enable a disabled checkbox
-
-

- $("input[type='checkbox']").checkboxradio('enable');
-				
-
- -
disable disable a select.
-
-

-$("input[type='checkbox']").checkboxradio('disable');
-				
-
- -
refresh update the custom select
-
- If you manipulate a checkbox via JavaScript, you must call the refresh method on it to update the visual styling. -

-$("input[type='checkbox']:first").attr("checked",true).checkboxradio("refresh");
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/options.html deleted file mode 100644 index 500db29..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/checkboxes/options.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - jQuery Mobile Docs - Checkboxes - - - - - - - - - - -
- -
-

Checkboxes

- Home - Search -
- -
-
- -
- -

Checkboxes

- - - -

The checkbox has the following options:

- -
-
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$("input[type='checkbox']").checkboxradio({ mini: "true" });
-
-
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$("input[type='checkbox']").checkboxradio({ theme: "a" });
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/docs-forms.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/docs-forms.html deleted file mode 100644 index ee8c4b2..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/docs-forms.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - jQuery Mobile Docs - Forms - - - - - - - - - - -
- -
-

Forms

- Home - Search -
- -
-
-

jQuery Mobile provides a complete set of finger-friendly form elements that are based on native HTML form elements.

- -

Form structure

- -

All forms should be wrapped in a form tag that has an action and method that will handle the form data processing on the server.

- - -<form action="form.php" method="post"> -... -</form> - - - -

Markup conventions

-

When constructing forms to be used in jQuery Mobile, most of the standard guidelines used to create forms that submit via ordinary HTTP POST or GET still apply. Additionally, the id attributes of form controls need to be not only unique on a given page, but also unique across the pages in a site. This is because jQuery Mobile's single-page navigation model allows many different "pages" to be present in the DOM at the same time. You must be careful to use unique id attributes so there will be only one of each in the DOM. Be sure to pair them properly with label elements via the for attribute.

- -

Mini sized elements

- -

For a more compact version of all form elements and buttons, add the data-mini="true" attribute to the element to create a mini version. This is useful in toolbars and tight spaces but is still finger-friendly. It's possible to add this attribute to a fieldcontainer to set this on a number of elements at once.

- -

-<label for="basic">Text Input:</label>
-<input type="text" name="name" id="basic" data-mini="true" />
-	
- -

This will produce an input that is not as tall as the standard version and has a smaller text size.

- - - -

Hiding labels accessibly

-

For the sake of accessibility, jQuery Mobile requires that all form elements be paired with a meaningful label. To hide labels in a way that leaves them visible to assistive technologies—for example, when letting an element’s placeholder attribute serve as a label—apply the helper class ui-hidden-accessible to the label itself:

- -
-<label for="username" class="ui-hidden-accessible">Username:</label>
-<input type="text" name="username" id="username" value="" placeholder="Username"/>
-
-
- -

To hide labels within a field container and adjust the layout accordingly, add the class ui-hide-label to the field container as in the following:

- - -
-<div data-role="fieldcontain" class="ui-hide-label">
-	<label for="username">Username:</label>
-	<input type="text" name="username" id="username" value="" placeholder="Username"/>
-</div>
-
-
- -

Both of the above examples will render as:

-
- - -
- -

While the label will no longer be visible, it will be available to assisitive technologies such as screen readers.

- - -

Disabling form elements

-

All jQuery Mobile widgets can be disabled in the markup by adding the standard disabled attribute to the element, just like you would with native controls. Each form widget also has standard disable and enable methods that are documented with each form widget. Here are a few examples of disabled widgets:

- -
- - -
- -
-
- Gender: - - - - - -
-
- -
- - -
- -
- - -
- -
- - -
- -

Note that you can disable buttons created from button or input-based markup, but not links with a role of button. Links don't have a parallel disabled feature in HTML, but if you need to disable a link-based button (or any element), it's possible to apply the disabled class ui-disabled yourself with JavaScript to achieve the same effect.

- -

Field containers

-

To improve the styling of labels and form elements on wider screens, wrap a div or fieldset with the data-role="fieldcontain" attribute around each label/form element. This framework aligns the input and associated label side-by-side, and breaks to stacked block-level elements below ~480px. The framework will also add a thin bottom border to act as a field separator.

- -

Forms in toolbars

-

While all form elements are now tested to work correctly within static toolbars as of jQuery Mobile 1.1, we recommend extensive testing when using form elements within fixed toolbars or within any position: fixed elements. This can potentially trigger a number of unpredictable issues in various mobile browsers, Android 2.2/2.3 in particular (detailed in Known issues in Android 2.2/2.3).

- -

For example:

-

-<div data-role="fieldcontain">
-<label for="name">Text Input:</label>
-<input type="text" name="name" id="name" value="" />
-</div>
-
- -

Will render as:

- -
- - -
- -

For additional examples, see the form elements gallery

- - -

Auto-initialization of form elements

-

By default, jQuery Mobile will automatically enhance certain native form controls into rich touch-friendly components. This is handled internally by finding form elements by tag name and running a plugin method on them. For instance, a select element will be found and initialized with the "selectmenu" plugin, while an input element with a type="checkbox" will be enhanced with the "checkboxradio" plugin. Once initialized, you can address these enhanced components programmatically through their jQuery UI widget API methods. See options, methods, and events listed on each form plugin's documentation page for details.

- -

Initializing groups of dynamically-injected form elements

-

If you should generate new markup client-side or load in content via AJAX and inject it into a page, you can trigger the create event to handle the auto-initialization for all the plugins contained within the new markup. This can be triggered on any element (even the page div itself), saving you the task of manually initializing each plugin (see below).

- -

For example, if a block of HTML markup (say a login form) was loaded in through Ajax, trigger the create event to automatically transform all the widgets it contains (inputs and buttons in this case) into the enhanced versions. The code for this scenario would be:

- - - $( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" ); - - -

Refreshing form elements

- -

In jQuery Mobile, some enhanced form controls are simply styled (inputs), but others are custom controls (selects, sliders) built from, and kept in sync with, the native control. To programmatically update a form control with JavaScript, first manipulate the native control, then use the refresh method to tell the enhanced control to update itself to match the new state. Here are some examples of how to update common form controls, then call the refresh method:

-

Checkboxes:

- - -$("input[type='checkbox']").prop("checked",true).checkboxradio("refresh"); - - -

Radios:

- -$("input[type='radio']").prop("checked",true).checkboxradio("refresh"); - - -

Selects:

-
-var myselect = $("#selectfoo");
-myselect[0].selectedIndex = 3;
-myselect.selectmenu("refresh");
-
- -

Sliders:

- -$("input[type='range']").val(60).slider("refresh"); - - -

Flip switches (they use slider):

- -
-var myswitch = $("#selectbar");
-myswitch[0].selectedIndex = 1;
-myswitch.slider("refresh");
-
- -

Preventing auto-initialization of form elements

-

If you'd prefer that a particular form control be left untouched by jQuery Mobile, simply give that element the attribute data-role="none". For example:

-

-<label for="foo">
-<select name="foo" id="foo"  data-role="none">
-	<option value="a" >A</option>
-	<option value="b" >B</option>
-	<option value="c" >C</option>
-</select>
-
- - -

If you'd like to prevent auto-initialization without adding attributes to your markup, you can customize the selector that is used for preventing auto-initialization by setting the page plugin's keepNative option (which defaults to [data-role="none"]). Be sure to configure this option inside an event handler bound to the mobileinit event, so that it applies to the first page as well as subsequent pages that are loaded.

-

-$(document).bind('mobileinit',function(){
-	$.mobile.page.prototype.options.keepNative = "select, input.foo, textarea.bar";
-});
-		
- -

Alternately you can use the data-enhance="false" data attribute on a parent element with $.mobile.ignoreContentEnabled set to true. Beware though, this will incur a performance penalty for each and every element in the page that would otherwise be enhanced as jQuery Mobile must traverse the set of parents to look for those elements.

- -

One special case is that of selects. The above sample will prevent any and all augmentation from taking place on select elements in the page if select is included. If you wish to retain the native performance and appearance of the menu itself and benefit from the visual augmentation of the select button by jQuery Mobile, you can set $.mobile.selectmenu.prototype.options.nativeMenu to true in a mobileinit callback as a global setting or use data-native-menu="true" on a case by case basis.

- - -

File Inputs

-

Using a multipart form with a file input is not supported by ajax. In this case you should decorate the parent form with data-ajax="false" to ensure the form is submitted properly to the server.

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-compare.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-compare.html deleted file mode 100644 index 7d316e6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-compare.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - jQuery Mobile Docs - Form element size comparison - - - - - - - - - - -
- -
-

Form sizes

- Home - Search -
- -
-
- -
- -

Form size comparison

- -

All form controls accept a data-mini="true" attribute that renders a smaller version of the enhanced element. In the case of grouped buttons, the data-mini="true" attribute can be added to the containing controlgroup.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Search

- - - - - -

Text

- - - - - -

Textarea

- - - - - -

Switch

- - - - - -

Slider

- - - - - -

Select

- - - - - -

Checkbox

-
- - - - - - -
-
-
- - - - - - -
-

Checkbox

-
- - - - - - -
-
-
- - - - - - -
-

Radio buttons

-
- - - - - - -
-
-
- - - - - - -
-

Radio toggle

-
- - - - -
-
-
- - - - -
-

Radio toggle

- - - -
- -
-
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-mini.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-mini.html deleted file mode 100644 index 412ed52..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-mini.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - jQuery Mobile Docs - Gallery of Form Controls - - - - - - - - - - -
- -
-

Mini forms

- Home - Search -
- -
-
- -
- -

Mini form elements

- -

All form controls accept a data-mini="true" attribute that renders a smaller version of the standard-sized form elements. In the case of grouped buttons, the data-mini="true" attribute can be added to the containing controlgroup. Compare mini and normal form elements side-by-side.

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
-
- Choose as many snacks as you'd like: - - - - - - - - - - - -
-
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
-
- Layout view: - - - - - - -
-
- -
- - -
- -
- - -
- -
- - -
- -
-
-
-
-
-
-
-
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-native.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-native.html deleted file mode 100644 index 9e2a5b6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all-native.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - jQuery Mobile Docs - Native Form Controls - - - - - - - - - - -
- -
-

Forms

- Home - Search -
- -
-
- -
- -

Native form elements & buttons

- -

Although the framework automatically enhances form elements and buttons into touch input optimized controls to streamline development, it's easy to tell jQuery Mobile to leave these elements alone so the standard, native control can be used instead.

-

Adding the data-role="none" attribute to any form or button element tells the framework to not apply any enhanced styles or scripting. The examples below all have this attribute in place to demonstrate the effect. You may need to write custom styles to lay out your form controls because we try to leave all the default styling intact.

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
-
- Choose as many snacks as you'd like: - - - - - - - - - - - -
-
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
-
- Layout view: - - - - - - -
-
- -
- - -
- -
- - -
- - - - -

Button based button:

- - -

Input type="button" based button:

- - -

Input type="submit" based button:

- - -

Input type="reset" based button:

- - -

Input type="image" based button:

- - -
- -
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all.html deleted file mode 100644 index bf48d29..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-all.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - jQuery Mobile Docs - Gallery of Form Controls - - - - - - - - - - -
- -
-

Forms

- Home - Search -
- -
-
- -
- -

Form elements

- -

This page contains various progressive-enhancement driven form controls. Native elements are sometimes hidden from view, but their values are maintained so the form can be submitted normally. Browsers that don't support the custom controls will still deliver a usable experience because all are based on native form elements.

- -

There is a complete set of mini-sized form elements which are useful for toolbars or tighter spaces. Compare mini and normal form elements side-by-side.

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
-
- Choose as many snacks as you'd like: - - - - - - - - - - - -
-
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
-
- Layout view: - - - - - - -
-
- -
- - -
- -
- - -
- -
- - -
- -
-
-
-
-
-
-
-
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-response.php b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-response.php deleted file mode 100644 index ef1eeec..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-response.php +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - jQuery Mobile Docs - Sample form response - - - - - - - - - -
- -
-

Sample form response

- Home - Search -
- -
-
- -
- -

You Chose:

- -
- - " . $_REQUEST['shipping'] . "

"; - ?> - -
- - Change shipping method - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-selfsubmit.php b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-selfsubmit.php deleted file mode 100644 index 05d99ef..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample-selfsubmit.php +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - jQuery Mobile Docs - Sample Form Submit to Self - - - - - - - - - -
- -
-

Sample form submit to self

- Home - Search -
- -
-
- -
- -
- Testing -
- - /> - /> -
-
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample.html deleted file mode 100644 index 6ed5a67..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-sample.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - jQuery Mobile Docs - Sample Form Submit - - - - - - - - - - -
- -
-

Forms

- Home - Search -
- -
-
- -

Ajax form submission

- -

In jQuery Mobile, form submissions are automatically handled using Ajax whenever possible, creating a smooth transition between the form and the result page. To ensure your form submits as intended, be sure to specify action and method properties on your form element. When unspecified, the method will default to get, and the action will default to the current page's relative path (found via $.mobile.path.get())

-

Forms also accept attributes for transitions just like anchors, such as data-transition="pop" and data-direction="reverse". To submit a form without Ajax, you can either disable Ajax form handling globally, or per form via the data-ajax="false" attribute. The target attribute (as in target="_blank") is respected on forms as well, and will default to the browser's handling of that target when the form submits. Note that unlike anchors, the rel attribute is not allowed on forms.

- - -

Default Ajax form example

-

This demonstrates automated ajax handling of form submissions. The form below is configured to send a GET request to forms-sample-response.php. On submit, jQuery Mobile will make sure that the Url specified is able to be retrieved via Ajax, and handle it appropriately. Keep in mind that just like ordinary HTTP form submissions, jQuery Mobile allows GET result pages to be bookmarked by updating the URL hash when the response returns successfully. Also like ordinary form submissions, POST requests do not contain query parameters in the hash, so they are not bookmarkable.

-
-
-
- - -
- -
-
- -

Non-Ajax form example

- -

To prevent form submissions from being automatically handled with Ajax, add the data-ajax="false" attribute to the form element. You can also turn off Ajax form handling completely via the ajaxEnabled global config option.

- -

The form below is identical to the one above except for the addition of the data-ajax="false" attribute. When the submit button is pressed, it will result in a full page refresh.

-
-
-
- - -
- -
-
- -

Self-submitting Forms

-

You can submit forms to the same URL you're currently viewing by setting the form's action attribute to that URL. This page demonstrates.

-

When a POST request is submitted to a page that's already in the DOM (which would commonly happen when submitting a form to the same URL currently in view), the response URL will be identical to that existing page, as POST requests do not append query string parameters to the URL. In this situation, jQuery Mobile will replace the page that submitted the form with the page returned in the response body.

- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-themes.html deleted file mode 100644 index 0727706..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/forms-themes.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Forms - - - - - - - - - - -
- -
-

Theming forms

- Home - Search -
- -
-
- -

Form themes

-

jQuery Mobile has a rich theming system that gives you full control of how pages and forms are styled. By default all form elements inside a container will automatically adopt the same theme color swatch as their parent. This allows form elements to blend into their layouts with minimal work. The data-theme attribute can be applied to any individual form element to apply any of the lettered theme color swatches to create contrast and emphasis in your designs.

- -

All the form elements in the examples below use the same HTML code with no theme swatch specified on the individual form elements. The only difference between each example block code is a data-theme swatch color assigned to each parent container. This illustrates the way form elements automatically adopt the theme swatch of their parent.

- - -

Body swatch A

-
- -
- - -
- -
- - -
- -
- - -
- - -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -
- -

Body swatch B

-
- -
- - -
- -
- - -
- -
- - -
- - -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- - -
- - -

Body swatch C

-
- -
- - -
- -
- - -
- -
- - -
- - -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- - -
- - - -

Body swatch D

-
- -
- - -
- -
- - -
- -
- - -
- - -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- - -
- - -

Body swatch E

-
- -
- - -
- -
- - -
- -
- - -
- - -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- - -
- - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/index.html deleted file mode 100644 index 9aa726f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - jQuery Mobile Docs - Forms - - - - - - - - - - -
- -
-

Form elements

- Home - Search -
- -
- -

All form elements begin with standard HTML controls that are enhanced to make them more attractive and easy to use. In browsers that don't support the custom controls, they will still have a usable experience because these are all based on native form elements.

- - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/plugin-eventsmethods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/plugin-eventsmethods.html deleted file mode 100644 index bcc06fb..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/plugin-eventsmethods.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - jQuery Mobile Docs - Form Plugin Methods - - - - - - - - - - -
- -
-

Form Plugin Methods

- Home - Search -
- -
-
- -
-

We've retired this page.

- -

Plugin events and methods are now documented separately for each component (see links on the left).

-
- - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/events.html deleted file mode 100644 index 2907e73..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/events.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - jQuery Mobile Docs - Radio buttons - - - - - - - - - - -
- -
-

Radio buttons

- Home - Search -
- -
-
- -
- -

Radio buttons

- - - - -

Bind events directly to the input element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$("input[type='radio']").bind( "change", function(event, ui) {
-  ...
-});
-
- -

The radio button plugin has the following custom events:

- -
- -
create triggered when a radio button is created
-
- - -

-$("input[type='radio']").checkboxradio({
-   create: function(event, ui) { ... }
-});		
-			
-
- - -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/index.html deleted file mode 100644 index 12902a1..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/index.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - jQuery Mobile Docs - Radio Buttons - - - - - - - - - - -
- -
-

Radio buttons

- Home - Search -
- -
-
- -
- -

Radio buttons

- - - -

Radio buttons are used to provide a list of options where only a single item can be selected. Traditional desktop radio buttons are not optimized for touch input so jQuery Mobile styles the label for the radio buttons so they are larger and look clickable. A custom set of icons are added to the label to provide additional visual feedback.

- -

Both the radio and checkbox controls below use standard input/label markup, but are styled to be more touch-friendly. The styled control you see is actually the label element, which sits over the real input, so if images fail to load, you'll still have a functional control. In most browsers, clicking the label automatically triggers a click on the input, but we've had to trigger the update manually for a few mobile browsers that don't do this natively. On the desktop, these controls are keyboard and screen-reader accessible. View the data- attribute reference to see all the possible attributes you can add to radio buttons.

- -

Vertically grouped radio buttons

- -

To create a set of radio buttons, add an input with a type="radio" attribute and a corresponding label. Set the for attribute of the label to match the ID of the input so they are semantically associated.

- -

The label element is displayed next to the radio form element. Wrap the radio buttons in a fieldset element that has a legend which acts as the title for the question.

- -

To visually integrate multiple radio buttons into a vertically grouped button set, the framework will automatically remove all margins between buttons and round only the top and bottom corners of the set if there is a data-role="controlgroup" attribute on the container.

- -
	
-<fieldset data-role="controlgroup">
-	<legend>Choose a pet:</legend>
-     	<input type="radio" name="radio-choice-1" id="radio-choice-1" value="choice-1" checked="checked" />
-     	<label for="radio-choice-1">Cat</label>
-
-     	<input type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2"  />
-     	<label for="radio-choice-2">Dog</label>
-
-     	<input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
-     	<label for="radio-choice-3">Hamster</label>
-
-     	<input type="radio" name="radio-choice-1" id="radio-choice-4" value="choice-4"  />
-     	<label for="radio-choice-4">Lizard</label>
-</fieldset>
-
- - -

This will produce a vertically grouped radio button set. The default styles set the width of the button group to 100% of the parent container and stacks the label on a separate line.

- - -
- Choose a pet: - - - - - - - - - - - -
- -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
			
-<fieldset data-role="controlgroup" data-mini="true">
-
-    	<input type="radio" name="radio-choice-1" id="radio-mini-1" value="choice-1" checked="checked" />
-
-    	<label for="radio-mini-1">Credit</label>
-    	<input type="radio" name="radio-choice-1" id="radio-mini-2" value="choice-2"  />
-
-    	<label for="radio-mini-2">Debit</label>
-    	<input type="radio" name="radio-choice-1" id="radio-mini-3" value="choice-3"  />
-
-    	<label for="radio-mini-3">Cash</label>
-</fieldset>
-
- -

This will produce a radio button that is not as tall as the standard version and has a smaller text size.

- -
- - - - - - -
- -

Field containers

- -

Optionally wrap the radiobuttons in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form.

-
	
-<div data-role="fieldcontain">
-    <fieldset data-role="controlgroup">
-    	<legend>Choose a pet:</legend>
-         	<input type="radio" name="radio-choice-1" id="radio-choice-1" value="choice-1" checked="checked" />
-         	<label for="radio-choice-1">Cat</label>
-
-         	<input type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2"  />
-         	<label for="radio-choice-2">Dog</label>
-
-         	<input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
-         	<label for="radio-choice-3">Hamster</label>
-
-         	<input type="radio" name="radio-choice-1" id="radio-choice-4" value="choice-4"  />
-         	<label for="radio-choice-4">Lizard</label>
-    </fieldset>
-</div>
-	
- - -

To visually integrate multiple radio buttons into a vertically grouped button set, the framework will automatically remove all margins between buttons and round only the top and bottom corners of the set if there is a data-role="controlgroup" attribute on the container.

- -
-
- Choose a pet: - - - - - - - - - - - -
-
-

Horizontal radio button sets

- -

Radio buttons can also be used for grouped button sets where only a single button can be selected at once, such as a view switcher control. To make a horizontal radio button set, add the data-type="horizontal" to the fieldset.

- - - <fieldset data-role="controlgroup" data-type="horizontal" > - - -
-
- Layout view: - - - - - - -
-
- -

The labels float so they sit side-by-side on a line. The radio button icons are hidden and only the left and right edges of the group are rounded.

- - - - - - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/methods.html deleted file mode 100644 index ec8edbb..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/methods.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Radio buttons - - - - - - - - - - -
- -
-

Radio buttons

- Home - Search -
- -
-
- -
- -

Radio buttons

- - - -

The radio button has the following methods:

- -
- -
enable enable a disabled radio button
-
-

- $("input[type='radio']").checkboxradio('enable');
-				
-
- -
disable disable a select.
-
-

-$("input[type='radio']").checkboxradio('disable');
-				
-
- -
refresh update the custom select
-
- If you manipulate a radio button via JavaScript, you must call the refresh method on it to update the visual styling. -

-$("input[type='radio']:first").attr("checked",true).checkboxradio("refresh");
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/options.html deleted file mode 100644 index 9671e99..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/radiobuttons/options.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - jQuery Mobile Docs - Radio buttons - - - - - - - - - - -
- -
-

Radio buttons

- Home - Search -
- -
-
- -
- -

Radio buttons

- - - -

The radio button has the following options:

- -
-
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$("input[type='radio']").checkboxradio({ mini: "true" });
-
-
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$("input[type='radio']").checkboxradio({ theme: "a" });
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/events.html deleted file mode 100644 index f97916b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/events.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - jQuery Mobile Docs - Search Input events - - - - - - - - - - -
- -
-

Search input

- Home - Search -
- -
-
- -
- -

Search input

- - - -

Bind events directly to the input element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$(".mySearchInput").bind( "change", function(event, ui) {
-  ...
-});
-
- -

The text input plugin has the following custom events:

- -
- -
create triggered when a text input is created
-
- -

-$( ".selector" ).textinput({
-   create: function(event, ui) { ... }
-});		
-			
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/index.html deleted file mode 100644 index 33fad42..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/index.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - jQuery Mobile Docs - Search input - - - - - - - - - - -
- -
-

Search input

- Home - Search -
- -
-
- -
- -

Search input

- - - -

Search inputs are a new HTML type that is styled with pill-shaped corners and adds a "x" icon to clear the field once you start typing. Start with an input with a type="search" attribute in your markup. View the data- attribute reference to see all the possible attributes you can add to search inputs.

- -

Set the for attribute of the label to match the ID of the input so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

- -
	
-<label for="search-basic">Search Input:</label>
-<input type="search" name="search" id="searc-basic" value="" />
-
- -

This will produce a basic search input. The default styles set the width of the input to 100% of the parent container and stack the label on a separate line.

- - - -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
	
-<label for="search-basic">Search Input:</label>
-<input type="search" name="search" id="searc-basic" value="" data-mini="true" />
-
- -

This will produce a search input that is not as tall as the standard version and has a smaller text size.

- - - -

Field containers

- -

Optionally wrap the search input in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form.

- -
	
-<div data-role="fieldcontain">
-    <label for="search">Search Input:</label>
-    <input type="search" name="password" id="search" value="" />
-</div>
-
- -

The search input is now displayed like this:

-
- - -
- -

Theming

-

The data-theme attribute can be added to the search input to set the theme to any swatch letter.

-
- - -
- -

Setting the clear button text

-

The text for the button used to clear the search input of text can be configured for all search inputs by binding to the mobileinit event and setting the $.mobile.textinput.prototype.options.clearSearchButtonText property to a string of your choosing.

- -

Calling the textinput plugin

- -

This plugin will auto-initialize on any page that contains a text input with the type="search" attribute without any need for a data-role attribute in the markup. However, if needed, you can directly call the textinput plugin on a selector, just like any jQuery plugin:

-

-$('.mySearchInput').textinput();			
-
- - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/methods.html deleted file mode 100644 index 5654c84..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/methods.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - jQuery Mobile Docs - Search Input methods - - - - - - - - - - -
- -
-

Search input

- Home - Search -
- -
-
- -
- -

Search input

- - - -

The text input plugin has the following methods:

- -
- -
enable enable a disabled text input
-
-

-$('.selector').textinput('enable');			
-				
-
- -
disable disable a text input
-
-

-$('.selector').textinput('disable');			
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/options.html deleted file mode 100644 index c929179..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/search/options.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - jQuery Mobile Docs - Text Search options - - - - - - - - - - -
- -
-

Search input

- Home - Search -
- -
-
- -
- -

Search input

- - - -

The text input plugin has the following options:

- -
-
initSelector CSS selector string
-
-

default: "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:not([type])"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as textinputs. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-   $.mobile.textinput.prototype.options.initSelector = ".myInputs";
-});
-
-
-
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$('.selector').textinput({ mini: "true" });
-
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('.selector').textinput({ theme: "a" });
-
- -
clearSearchButtonText string
-
-

default: "clear text"

-

Sets the text used for the button that clears the search input of text.

-
$('.selector').textinput({ clearSearchButtonText: "custom value" });
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/custom.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/custom.html deleted file mode 100644 index b475d46..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/custom.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - - - jQuery Mobile Docs - Select - - - - - - - - - - -
- -
-

Select Menus

- Home - Search -
- -
-
- -

Select menus

- - - -

Custom select menus

-

The framework is capable of building a custom menu based on the select element's list of options. We recommend using a custom menu when multiple selections are required, or when the menu itself must be styled with CSS.

- -

You can optionally use custom-styled select menus instead of the native OS menu. The custom menu supports disabled options and multiple selection (whereas native mobile OS support for both is inconsistent), adds an elegant way to handle placeholder values, and restores missing functionality on certain platforms such as optgroup support on Android (all explained below). In addition, the framework applies the custom button's theme to the menu to better match the look and feel and provide visual consistency across platforms. Lastly, custom menus often look better on desktop browsers because native desktop menus are smaller than their mobile counterparts and tend to look disproportionate.

- -

Keep in mind that there is overhead involved in parsing the native select to build a custom menu. If there are a lot of selects on a page, or a select has a long list of options, this can impact the performance of the page, so we recommend using custom menus sparingly.

- -

To use custom menus on a specific select, just add the data-native-menu="false" attribute. Alternately, this can also programmatically set the select menu's nativeMenu configuration option to false in a callback bound to the mobileinit event to achieve the same effect. This will globally make all selects use the custom menu by default. The following must be included in the page after jQuery is loaded but before jQuery Mobile is loaded.

- - - -
-$(document).bind('mobileinit',function(){
-   $.mobile.selectmenu.prototype.options.nativeMenu = false;
-});
-
-
- -

When the select has a small number of options that will fit on the device's screen, the menu will appear as a small overlay with a pop transition:

- -
- - -
- -

When it has too many options to show on the device's screen, the framework will automatically create a new "page" populated with a standard list view for the options. This allows us to use the native scrolling included on the device for moving through a long list. The text inside the label is used as the title for this page.

- - -
- - -
- -

Disabled options

-

jQuery Mobile will automatically disable and style option tags with the disabled attribute. In the demo below, the second option "Rush: 3 days" has been set to disabled.

- -
- - -
- -

Placeholder options

-

It's common for developers to include a "null" option in their select element to force a user to choose an option. If a placeholder option is present in your markup, jQuery Mobile will hide them in the overlay menu, showing only valid choices to the user, and display the placeholder text inside the menu as a header. A placeholder option is added when the framework finds:

-
    -
  • An option with no value attribute (or an empty value attribute)
  • -
  • An option with no text node
  • -
  • An option with a data-placeholder="true" attribute. (This allows you to use an option that has a value and a textnode as a placeholder option).
  • -
- -

You can disable this feature through the selectmenu plugin's hidePlaceholderMenuItems option, like this:

-
-	
-$.mobile.selectmenu.prototype.options.hidePlaceholderMenuItems = false;
-	
-	
- -

Examples of various placeholder options:

- - -
- - -
- - -
- - -
- - -
- - -
- - -

Multiple selects

-

If the multiple attribute is present in your markup, jQuery Mobile will enhance the element with a few extra considerations:

- -
    -
  • A header element will be created inside the menu and display the placeholder text and a close button.
  • -
  • Clicking on an item inside the overlay menu will not close the widget.
  • -
  • A ghosted, unchecked icon will appear adjacent to each unselected item. When the item is selected the icon will change to a checkbox. Neither icon will appear inside a single select box.
  • -
  • Once 2+ items are selected, a counter element with the total number of selected items will appear inside the button.
  • -
  • The text of each selected item will appear inside the button as a list. If the button is not wide enough to display the entire list, it is truncated with an ellipses.
  • -
  • If no items are selected, the button's text will default to the placeholder text.
  • -
  • If no placeholder element exists, the default button text will be blank and the header will appear with just a close button. Because this isn't a friendly user experience, we recommended that you always specify a placeholder element when using multiple select boxes.
  • -
- -
- - -
- -

When a select is large enough to where the menu will open in a new page, the placeholder text is displayed in the button when no items are selected, and the label text is displayed in the menu's header. This differs from smaller overlay menus where the placeholder text is displayed in both the button and the header, and from full-page single selects where the placeholder text is not used at all.

- -
- - -
- - - - - -

Optgroup support

-

If a select menu contains optgroup elements, jQuery Mobile will create a divider & group items based on the label attribute's text:

- -
- - -
- - -

Theming selects

-

You can specify any jQuery Mobile button data- attribute on a select element, too. In this example, we're setting the theme, icon and inline properties:

- -
- - -
- -

The data-overlay-theme attribute can be added to a select element to set the color of the overlay layer for the dialog-based custom select menus and the outer border of the smaller custom menus. By default, the content block colors for swatch A will be used for the overlays.

- -
- - -
- -
- - -
- - -
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/events.html deleted file mode 100644 index 03e86e3..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/events.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - jQuery Mobile Docs - Select events - - - - - - - - - - -
- -
-

Select Menus

- Home - Search -
- -
-
- -
- -

Select menus

- - - - -

Bind events directly to the select element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$(".mySelect").bind( "change", function(event, ui) {
-  ...
-});
-
- -

The select menu plugin has the following custom events:

- -
- -
create triggered when a select menu is created
-
- -

-$( ".selector" ).selectmenu({
-   create: function(event, ui) { ... }
-});		
-			
-
- - -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/index.html deleted file mode 100644 index 77aa271..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/index.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - jQuery Mobile Docs - Select - - - - - - - - - - -
- -
-

Select Menus

- Home - Search -
- -
-
- -
- -

Select menus

- - - -

The select menu is based on a native select element, which is hidden from view and replaced with a custom-styled select button that matches the look and feel of the jQuery Mobile framework. The select menu is ARIA-enabled and keyboard accessible on the desktop as well. View the data- attribute reference to see all the possible attributes you can add to selects.

- -

By default, the framework leverages the native OS options menu to use with the custom button. When the button is clicked, the native OS menu will open. When a value is selected and the menu closes, the custom button's text is updated to match the selected value. Please note that the framework also offers the possibility of having custom (non-native) select menus; see details at the bottom of this page and on the custom select menu page.

- -

To add a select menu to your page, start with a standard select element populated with a set of option elements. Set the for attribute of the label to match the ID of the select so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

- -

The framework will find all select elements and automatically enhance them into select menus, no need to apply a data-role attribute. To prevent the automatic enhancement of a select, add data-role="none" attribute to the select.

- -

-<label for="select-choice-0" class="select">Shipping method:</label>
-<select name="select-choice-0" id="select-choice-1">
-   <option value="standard">Standard: 7 day</option>
-   <option value="rush">Rush: 3 days</option>
-   <option value="express">Express: next day</option>
-   <option value="overnight">Overnight</option>
-</select>
-
- -

This will produce a basic select menu. The default styles set the width of the input to 100% of the parent container and stacks the label on a separate line.

- - - - -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
	
-<label for="select-choice-min" class="select">Shipping method:</label>
-<select name="select-choice-min" id="select-choice-1" data-mini="true">
-   <option value="standard">Standard: 7 day</option>
-   <option value="rush">Rush: 3 days</option>
-   <option value="express">Express: next day</option>
-   <option value="overnight">Overnight</option>
-</select> 
-
- -

This will produce a select that a not as tall as the standard version and has a smaller text size.

- - - -

Field containers

-

Optionally wrap the selects in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form.

-

-<div data-role="fieldcontain">
-   <label for="select-choice-1" class="select">Shipping method:</label>
-   <select name="select-choice-1" id="select-choice-1">
-      <option value="standard">Standard: 7 day</option>
-      <option value="rush">Rush: 3 days</option>
-      <option value="express">Express: next day</option>
-      <option value="overnight">Overnight</option>
-   </select>
-</div>
-
- -

The select input is now displayed like this:

- - -
- - -
- -

An example of a select with a long list of options:

- -
- - -
- -

Optgroups

-

The following example organizes the options into optgroup elements. Support for this feature in mobile selects is a bit spotty, but is improving.

- -
- - -
- - - -

Vertically grouped select inputs

- -

To create a grouped set of select inputs, first add select and a corresponding label. Set the for attribute of the label to match the ID of the select so they are semantically associated.

- -

Because the label element will be associated with each individual select input, we recommend wrapping the selects in a fieldset element that has a legend which acts as the combined label for the grouped inputs.

- -

Lastly, one needs to wrap the fieldset in a div with data-role="controlgroup" attribute, so it can be styled as a group.

- -
	
-<div data-role="fieldcontain">
-<fieldset data-role="controlgroup">
-	<legend>Date of Birth:</legend>
-
-    <label for="select-choice-month">Month</label>
-<select name="select-choice-month" id="select-choice-month">
-	<option>Month</option>
-	<option value="jan">January</option>
-	<!-- etc. -->
-</select>
-
-	<label for="select-choice-day">Day</label>
-<select name="select-choice-day" id="select-choice-day">
-	<option>Day</option>
-	<option value="1">1</option>
-	<!-- etc. -->
-</select>
-
-<label for="select-choice-year">Year</label>
-<select name="select-choice-year" id="select-choice-year">
-	<option>Year</option>
-	<option value="2011">2011</option>
-	<!-- etc. -->
-</select>
-</fieldset>
-</div>
-
- -
-
- Date of Birth: - - - - - - - - - -
- -
- -

Horizontally grouped select inputs

-

Select inputs can also be used for grouped sets with more than one related selections. To make a horizontal button set, add the data-type="horizontal" to the fieldset. Note that the buttons which trigger the select will resize depending on the currently selected option’s value. Note that browsers without support for display: inline-block; will group the selects vertically, as above.

- - -<fieldset data-role="controlgroup" data-type="horizontal"> - - -
- Date of Birth: - - - - - - - - - -
- -

Calling the select menu plugin

-

The select menu plugin will auto initialize on any page that contains a select menu, without any need for a data-role attribute in the markup. However, you can directly call the select menu plugin on any selector, just like any normal jQuery plugin:

-

-$('select').selectmenu();			
-
- -
- - -

Theming selects

-

You can specify any jQuery Mobile button data- attribute on a select element, too. In this example, we're setting the theme, icon and inline properties:

- -
- - -
- - -

Custom select menus

-

For the sake of advanced styling, the framework also offers a method of generating custom menus from existing select menu markup instead of the native OS menu. The custom menu supports disabled options and multiple selection (whereas native mobile OS support for both is inconsistent), adds an elegant way to handle placeholder values, and restores missing functionality on certain platforms such as optgroup support on Android. - -

-

- -
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/methods.html deleted file mode 100644 index 2369c80..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/methods.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - jQuery Mobile Docs - Select methods - - - - - - - - - - -
- -
-

Select Menus

- Home - Search -
- -
-
- -
- -

Select menus

- - - -

The select menu plugin has the following methods:

- -
- -
close close an open select menu
-
-

-$('select').selectmenu('close');			
-				
-
- -
enable enable a disabled select
-
-

-$('select').selectmenu('enable');			
-				
-
- -
disable disable a select.
-
-

-$('select').selectmenu('disable');			
-				
-
- -
open open a closed select menu (custom menus only)
-
-

-$('select').selectmenu('open');			
-				
-
- -
refresh update the custom select
-
- This is used to update the custom select to reflect the native select element's value.If the number of options in the select are different than the number of items in the custom menu, it'll rebuild the custom menu. Also, if you pass a true argument you can force the rebuild to happen. -

-//refresh value			
-$('select').selectmenu('refresh');
-
-//refresh and force rebuild
-$('select').selectmenu('refresh', true);
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/options.html deleted file mode 100644 index 15269df..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/selects/options.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - jQuery Mobile Docs - Select options - - - - - - - - - - -
- -
-

Select Menus

- Home - Search -
- -
-
- -
- -

Select menus

- - - -

The select menu plugin has the following options:

- - -
- -
corners boolean
-
-

default: true

-

Applies the theme button border-radius to the select button if set to true. This option is also exposed as a data attribute: data-corners="false"

-
$('select').selectmenu({ corners: "false" });
-
-
icon string
-
-

default: "arrow-down"

-

Applies an icon from the icon set to the custom button. This option is also exposed as a data attribute: data-icon="star"

-
$('select').selectmenu({ icon: "star" });
-
- -
iconpos string
-
-

default: "right"

-

Position of the icon in the select button. Possible values: left, right, none, notext. The notext value will display the select as an icon-only button with no text feedback. This option is also exposed as a data attribute: data-iconpos="left"

-
$('select').selectmenu({ iconpos: "left" });
-
- -
iconshadow boolean
-
-

default: true

-

Applies the theme shadow to the select button if set to true. This option is also exposed as a data attribute: data-iconshadow="false"

-
$('select').selectmenu({ iconshadow: "false" });
-
- -
initSelector CSS selector string
-
-

default: "select:not(:jqmData(role='slider'))"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as select menus. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-	$.mobile.selectmenu.prototype.options.initSelector = ".myselect";
-});
-
-
- -
inline boolean
-
-

default: null (false)

-

If set to true, this will make the select button act like an inline button so the width is determined by the button's text. By default, this is null (false) so the select button is full width, regardless of the feedback content. Possible values: true, false. This option is also exposed as a data attribute: data-inline="true"

-
$('select').selectmenu({ inline: "true" });
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$('select').selectmenu({ mini: "true" });
- -
nativeMenu boolean
-
-

default: true

-

When set to true, clicking the custom-styled select menu will open the native select menu which is best for performance. If set to false, the custom select menu style will be used instead of the native menu. This option is also exposed as a data attribute: data-native-menu="false"

-
$('select').selectmenu({ nativeMenu: "false" });
-
- -
overlayTheme string
-
-

default: a

-

Sets the color of the overlay layer for the dialog-based custom select menus and the outer border of the smaller custom menus. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, the content block colors for swatch A will be used for the overlays. This option is also exposed as a data attribute: ui-body-d

-
$('select').selectmenu({ overlayTheme: "d" });
-
- -
preventFocusZoom boolean
-
-

default: true on iOS platforms

-

This option disables page zoom temporarily when a custom select is focused, which prevents iOS devices from zooming the page into the select. By default, iOS often zooms into form controls, and the behavior is often unnecessary and intrusive in mobile-optimized layouts. This option is also exposed as a data attribute: data-prevent-focus-zoom="true"

-
$('select').selectmenu({ preventFocusZoom: true });
-
- - -
shadow boolean
-
-

default: true

-

Applies the drop shadow style to the select button if set to true. This option is also exposed as a data attribute: data-shadow="false"

-
$('select').selectmenu({ shadow: "false" });
-
- -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('select').selectmenu({ theme: "a" });
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/events.html deleted file mode 100644 index 69863b0..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/events.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider events - - - - - - - - - - -
- -
-

Slider

- Home - Search -
- -
-
- -
- -

Slider

- - - -

Bind events directly to the input element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$( ".selector" ).bind( "change", function(event, ui) {
-  ...
-});
-
- -

The slider plugin has the following custom event:

- -
- -
create triggered when a slider is created
-
- -

-$( ".selector" ).slider({
-   create: function(event, ui) { ... }
-});		
-			
-
- - -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/index.html deleted file mode 100644 index 7b7e8b7..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/index.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider - - - - - - - - - - -
- -
-

Slider

- Home - Search -
- -
-
- -
-

Slider

- - - -

To add a slider widget to your page, use a standard input with the type="range" attribute. The input's value is used to configure the starting position of the handle and the value is populated in the text input. Specify min and max attribute values to set the slider's range. If you want to constrain input to specific increments, add the step attribute. Set the value attribute to define the initial value. The framework will parse these attributes to configure the slider widget. View the data- attribute reference to see all the possible attributes you can add to sliders.

- -

As you drag the slider's handle, the framework will update the native input's value (and vice-versa) so they are always in sync; this ensures that the value is submitted with the form.

-

Set the for attribute of the label to match the ID of the input so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

- -

The framework will find all input elements with a type="range" and automatically enhance them into a slider with an accompanying input without any need to apply a data-role attribute. To prevent the automatic enhancement of this input into a slider, add data-role="none" attribute to the input and wrap them in a div with the data-role="fieldcontain" attribute to group them. In this example, the acceptable range is 0-100.

- -

-<label for="slider-0">Input slider:</label>
-<input type="range" name="slider" id="slider-0" value="60" min="0" max="100" />
-
- -

The default slider with these settings is displayed like this:

- - - -

Step increment

- -

To force the slider to snap to a specific increment, add the step attribute to the input. By default, the step is 1, but in this example, the step is 50 and the maximum value is 500.

- -

-<label for="slider-step">Input slider:</label>
-<input type="range" name="slider" id="slider-step" value="150" min="0" max="500" step="50" />
-
- -

This will produce an input that snaps to increments of 50. If a value is added to the input that isn't valid with the step increment, the value will be reset on blur to the closest step.

- - - - -

Fill highlight

- -

To have a highlight fill on the track up to the slider handle position, add the data-highlight="true" attribute to the input. The fill uses active state swatch.

- -

-<label for="slider-fill">Input slider:</label>
-<input type="range" name="slider" id="slider-fill" value="60" min="0" max="100" data-highlight="true" />
-
- - - - - -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -

-<label for="slider-0">Input slider:</label>
-<input type="range" name="slider" id="slider-0" value="25" min="0" max="100" data-highlight="true" data-mini="true" />
-
- -

This will produce an input that is not as tall as the standard version and has a smaller text size.

- - - -

Field containers

- -

Optionally wrap the slider markup in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form. In this example, the step attribute is omitted to allow any whole number value to be selected.

- - -

-<div data-role="fieldcontain">
-   <label for="slider">Input slider:</label>
-   <input type="range" name="slider" id="slider" value="25" min="0" max="100"  />
-</div>
-
- -

The slider is now displayed like this:

-
- - -
- -

Sliders also respond to key commands. Right Arrow, Up Arrow and Page Up keys increase the value; Left Arrow, Down Arrow and Page Down keys decrease it. To move the slider to its minimum or maximum value, use the Home or End key, respectively.

- - -

Calling the slider plugin

- -

This plugin will auto initialize on any page that contains a text input with the type="range" attribute. However, if needed you can directly call the slider plugin on any selector, just like any jQuery plugin:

-

-$('input').slider();
-
- - -

Theming the slider

-

To set the theme swatch for the slider, add a data-theme attribute to the input which will apply the theme to both the input, handle and track. The track swatch can be set separately by adding the data-track-theme attribute to apply the down state version of the selected button swatch.

- -

-<div data-role="fieldcontain">
-	<label for="slider-2">Input slider:</label>
-	<input type="range" name="slider-2" id="slider-2" value="25" min="0" max="100" data-theme="a" data-track-theme="b" />
-</div>
-		
- -

This will produce a themed slider:

-
- - -
-
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/methods.html deleted file mode 100644 index 0f85fd9..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/methods.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider methods - - - - - - - - - - -
- -
-

Slider

- Home - Search -
- -
-
- -
- -

Slider

- - - -

The slider plugin has the following methods:

- -
-
enable enable a disabled slider
-
-

-$('.selector').slider('enable');			
-				
-
- -
disable disable a slider
-
-

-$('.selector').slider('disable');			
-				
-
- -
refresh update the slider
-
-

If you manipulate a slider via JavaScript, you must call the refresh method on it to update the visual styling.

- -
			
-$('.selector').slider('refresh');
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/options.html deleted file mode 100644 index 73e893f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/slider/options.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider options - - - - - - - - - - -
- -
-

Slider

- Home - Search -
- -
-
- -
- -

Slider

- - - -

The slider plugin has the following options:

- -
-
disabled string
-
-

default: false

-

Sets the default state of the slider to disabled when "true".

-
$('.selector').slider({ disabled: "true" });
-
- -
highlight boolean
-
-

default: false

-

Sets an active state fill on the track from the left edge to the slider handle when set to "true".

-
$('.selector').slider({ highlight: "true" });
-
- -
initSelector CSS selector string
-
-

default: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as sliders. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-   $.mobile.slider.prototype.options.initSelector = ".myslider";
-});
-
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$('.selector').slider({ mini: "true" });
-
- -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as its parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('.selector').slider({ theme: "a" });
-
- -
trackTheme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for the slider's track, specifically. It accepts a single letter from a-z that maps to the swatches included in your theme.

-
$('.selector').slider({ trackTheme: "a" });
-

This option can be overridden in the markup by assigning a data attribute to the input, e.g. data-track-theme="a".

-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/events.html deleted file mode 100644 index 33e0391..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/events.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider events - - - - - - - - - - -
- -
-

Flip Toggle Switch

- Home - Search -
- -
-
- -
- -

Flip toggle switch

- - - -

Bind events directly to the select element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$( ".selector" ).bind( "change", function(event, ui) {
-  ...
-});
-
- -

The slider plugin has the following custom event:

- -
- -
create triggered when a slider is created
-
- -

-$( ".selector" ).slider({
-   create: function(event, ui) { ... }
-});		
-			
-
- - -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/index.html deleted file mode 100644 index 746fb1f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - jQuery Mobile Docs - Switch - - - - - - - - - - -
- -
-

Flip Toggle Switch

- Home - Search -
- -
-
- -
-

Flip toggle switch

- - - -

A binary "flip" switch is a common UI element on mobile devices that is used for binary on/off or true/false data input. You can either drag the flip handle like a slider or tap one side of the switch.

- -

To create a flip toggle, start with a select with two options. The first option will be styled as the "on" state switch and the second will be styled as the "off" state so write your options accordingly. View the data- attribute reference to see all the possible attributes you can add to flip switches.

- -

Set the for attribute of the label to match the ID of the input so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

- -
	
-<label for="flip-a">Select slider:</label>
-<select name="slider" id="flip-a" data-role="slider">
-	<option value="off">Off</option>
-	<option value="on">On</option>
-</select> 
-
- -

This will produce a basic flip toggle switch input. The default styles set the width of the switch to 100% of the parent container and stack the label on a separate line.

- - - - - -

Longer Labels

-

The control is proportionally scaled, so to use longer labels one can just add a line of CSS setting the switch to the desired width. For example, given the following markup:

-

-<div class="containing-element">
-	<label for="flip-min">Flip switch:</label>
-	<select name="slider" id="flip-min" data-role="slider">
-		<option value="off">Switch Off</option>
-		<option value="on">Switch On</option>
-	</select>
-</div>
-
- -

.containing-element .ui-slider-switch { width: 9em } will produce:

- - - -
- - -
- -

As some default styles hinge on fieldcontains, note that you may have to ensure that custom styles apply to switches within fieldcontains by using .ui-field-contain div.ui-slider-switch { width: […]; }.

- -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
	
-<label for="flip-a">Select slider:</label>
-<select name="slider" id="flip-a" data-role="slider" data-mini="true">
-	<option value="off">Off</option>
-	<option value="on">On</option>
-</select>
-
- -

This will produce a flip switch that is not as tall as the standard version and has a smaller text size.

- - - - -

Field containers

-

Optionally wrap the switch markup in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form.

- -
	
-<div data-role="fieldcontain">
-<label for="flip-b">Flip switch:</label>
-	<select name="slider" id="flip-b" data-role="slider">
-		<option value="no">No</option>
-		<option value="yes">Yes</option>
-	</select> 
-</div>
-
-

The flip toggle switch is now displayed like this:

-
- - -
- - -

Theming the flip switch

- -

Like all form elements, this widget will automatically inherit the theme from its parent container. To choose a specific theme color swatch, specify the data-theme attribute on the select and specify a swatch letter.

- -
	
-<div data-role="fieldcontain">
-	<label for="flip-c">Flip switch:</label>
-	<select name="slider" id="flip-c" data-role="slider" data-theme="a">
-		<option value="no">No</option>
-		<option value="yes">Yes</option>
-	</select> 
-</div>
-
-

This results in a switch with the A swatch colors for the handle. Note that the lefthand "on" state gets the active state color.

-
- - -
- -

Here is a E swatch variation:

-
- - -
- -

Calling the switch plugin

- -

This plugin will auto-initialize on any page that contains a select with the data-role="slider" attribute. However, if needed you can directly call the slider plugin on any selector, just like any jQuery plugin:

-

-$('select').slider();			
-
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/methods.html deleted file mode 100644 index bc03847..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/methods.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider methods - - - - - - - - - - -
- -
-

Flip Toggle Switch

- Home - Search -
- -
-
- -
- -

Flip toggle switch

- - - -

The slider plugin has the following methods:

- -
-
enable enable a disabled slider
-
-

-$('.selector').slider('enable');			
-				
-
- -
disable disable a slider
-
-

-$('.selector').slider('disable');			
-				
-
- -
refresh update the slider
-
-

If you manipulate a slider via JavaScript, you must call the refresh method on it to update the visual styling.

- -
			
-$('.selector').slider('refresh');
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/options.html deleted file mode 100644 index 95ac910..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/switch/options.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - jQuery Mobile Docs - Slider options - - - - - - - - - - -
- -
-

Flip Toggle Switch

- Home - Search -
- -
-
- -
- -

Flip toggle switch

- - - -

The slider plugin has the following options:

- -
-
disabled string
-
-

default: false

-

Sets the default state of the slider to disabled when "true".

-
$('.selector').slider({ disabled: "true" });
-
- -
initSelector CSS selector string
-
-

default: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as sliders. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-   $.mobile.slider.prototype.options.initSelector = ".myslider";
-});
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$('.selector').slider({ mini: "true" });
-
- -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('.selector').slider({ theme: "a" });
-
- -
trackTheme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for the slider's track, specifically. It accepts a single letter from a-z that maps to the swatches included in your theme.

-
$('.selector').slider({ trackTheme: "a" });
-

This option can be overridden in the markup by assigning a data attribute to the input, e.g. data-track-theme="a".

-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/events.html deleted file mode 100644 index 8b15410..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/events.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - jQuery Mobile Docs - Text Input events - - - - - - - - - - -
- -
-

Text inputs

- Home - Search -
- -
-
- -
- -

Text inputs

- - - -

Bind events directly to the input element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-
 
-$( ".selector" ).bind( "change", function(event, ui) {
-  ...
-});
-
- -

The text input plugin has the following custom events:

- -
- -
create triggered when a text input is created
-
- -

-$( ".selector" ).textinput({
-   create: function(event, ui) { ... }
-});		
-			
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/index.html deleted file mode 100644 index 203f9e9..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/index.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - jQuery Mobile Docs - Text inputs - - - - - - - - - - -
- -
-

Text inputs

- Home - Search -
- -
-
- -
- -

Text inputs & Textareas

- - - -

Text inputs and textareas are coded with standard HTML elements, then enhanced by jQuery Mobile to make them more attractive and useable on a mobile device. View the data- attribute reference to see all the possible attributes you can add to text inputs.

- -

Text inputs

-

To collect standard alphanumeric text, use an input with a type="text" attribute. Set the for attribute of the label to match the ID of the input so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

- -
	
-    <label for="basic">Text Input:</label>
-    <input type="text" name="name" id="basic" value=""  />
-
- -

This will produce a basic text input. The default styles set the width of the input to 100% of the parent container and stack the label on a separate line.

- - - - -

Mini version

- -

For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true" attribute to the element to create a mini version.

- -
	
-<label for="basic">Text Input:</label>
-<input type="text" name="name" id="basic" value="" data-mini="true" />
-
- -

This will produce an input that is not as tall as the standard version and has a smaller text size.

- - - -

Field containers

- -

Optionally wrap the text input in a container with the data-role="fieldcontain" attribute to help visually group it in a longer form.

- -
	
-<div data-role="fieldcontain">
-    <label for="name">Text Input:</label>
-    <input type="text" name="name" id="name" value=""  />
-</div>	
-
- -

The text input is now displayed like this:

-
- - -
- - -

More text input types

-

In jQuery Mobile, you can use existing and new HTML5 input types such as password, email, tel, number, and more. Some type values are rendered differently across browsers. For example, Chrome renders the range input as a slider. jQuery Mobile standardizes the appearance of range and search by dynamically changing their type to text. You can configure which input types are degraded to text with the page plugin's options.

- -

One major advantage of using these more specific input types if that on mobile devices, specialized keyboards that speed data entry are offered in place of the standard text keyboard. Try the following inputs on a mobile device to see which display custom keyboards on various platforms.

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - - -

Textareas

-

For multi-line text inputs, use a textarea element. The framework will auto-grow the height of the textarea to avoid the need for an internal scrollbar.

-

Set the for attribute of the label to match the ID of the textarea so they are semantically associated, and wrap them in a div with the data-role="fieldcontain" attribute to group them.

- -
	
-<label for="textarea-a">Textarea:</label>
-<textarea name="textarea" id="textarea-a">
-I'm a basic textarea. If this is pre-populated with content, the height will be automatically adjusted to fit without needing to scroll. That is a pretty handy usability feature.
-</textarea>
-
- -

This will produce a basic textarea with the width set to 100% of the parent container and the label stacked on a separate line. The textarea will grow to fit new lines as you type:

- - - -
	
-<div data-role="fieldcontain">
-<label for="textarea">Textarea:</label>
-	<textarea name="textarea" id="textarea"></textarea>
-</div>
-
- -

The textarea is displayed like this and will grow to fit new lines as you type:

-
- - -
- - -

Calling the textinput plugin

- -

This plugin will auto initialize on any page that contains a textarea or any of the text input types listed above without any need for a data-role attribute in the markup. However, if needed, you can directly call the textinput plugin on any selector, just like any jQuery plugin:

-

-$('input').textinput();			
-			
- - -

Degraded input types

-

jQuery Mobile degrades several HTML5 input types back to type=text or type=number after adding enhanced controls. For example, inputs with a type of range are enhanced with a custom slider control, and their type is set to number to offer a usable form input alongside that slider. Inputs with a type of search are degraded back to type=text after we add our own themable search input styling.

-

The page plugin contains a list of input types that are set to either true which means they'll degrade to type=text, false which means they'll be left alone, or a string such as "number", which means they'll be converted to that type (such as the case of type=range).

- -

You can configure which types are changed via the page plugin's degradeInputs option, which can be manipulated externally via $.mobile.page.prototype.options.degradeInputs, which has properties: color, date, datetime, "datetime-local", email, month, number, range, search, tel, time, url, and week. Be sure to configure this inside an event handler bound to the mobileinit event, so that it applies to the first page as well as subsequent pages that are loaded.

- - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/methods.html deleted file mode 100644 index f759952..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/methods.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - jQuery Mobile Docs - Text Input methods - - - - - - - - - - -
- -
-

Text inputs

- Home - Search -
- -
-
- -
- -

Text inputs

- - - -

The text input plugin has the following methods:

- -
- -
enable enable a disabled text input
-
-

-$('.selector').textinput('enable');			
-				
-
- -
disable disable a text input
-
-

-$('.selector').textinput('disable');			
-				
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/options.html deleted file mode 100644 index df2131a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/forms/textinputs/options.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - jQuery Mobile Docs - Text Input options - - - - - - - - - - -
- -
-

Text inputs

- Home - Search -
- -
-
- -
- -

Text inputs

- - - -

The text input plugin has the following options:

- -
-
initSelector CSS selector string
-
-

default: "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:not([type])"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as textinputs. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-   $.mobile.textinput.prototype.options.initSelector = ".myInputs";
-});
-
-
- -
mini boolean
-
-

default: false

-

Sets the size of the element to a more compact, mini version. This option is also exposed as a data attribute: data-mini="true"

-
$('.selector').textinput({ mini: "true" });
-
- -
preventFocusZoom boolean
-
-

default: true on iOS platforms

-

This option disables page zoom temporarily when a custom input is focused, which prevents iOS devices from zooming the page into the input. By default, iOS often zooms into form controls, and the behavior is often unnecessary and intrusive in mobile-optimized layouts. This option is also exposed as a data attribute: data-prevent-focus-zoom="true"

-
$('input').textinput({ preventFocusZoom: true });
-
- - -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for all instances of this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as it's parent container if not explicitly set. This option is also exposed as a data attribute: data-theme="a"

-
$('.selector').textinput({ theme: "a" });
-
- -
- -
-
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/index.html deleted file mode 100644 index 92e99d5..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - jQuery UI Mobile Framework - Documentation - - - - - - - - - - -
- -
-

jQuery Mobile Docs

- Home -
- -
- -

Nothing to see here folks.

-View the documentation home page - -
- -
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/docs-lists.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/docs-lists.html deleted file mode 100644 index 5346e81..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/docs-lists.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists Overview - - - - - - - - - - -
- -
-

Lists

- Home - Search -
- -
-
-

List views

- - - -

Basic linked lists

-

A list view is coded as a simple unordered list containing linked list items with a data-role="listview" attribute. jQuery Mobile will apply all the necessary styles to transform the list into a mobile-friendly list view with right arrow indicator that fills the full width of the browser window. When you tap on the list item, the framework will trigger a click on the first link inside the list item, issue an AJAX request for the URL in the link, create the new page in the DOM, then kick off a page transition. View the data- attribute reference to see all the possible attributes you can add to listviews.

-

Here is the HTML markup for a basic linked list.

- -

-<ul data-role="listview" data-theme="g">
-	<li><a href="acura.html">Acura</a></li>
-	<li><a href="audi.html">Audi</a></li>
-	<li><a href="bmw.html">BMW</a></li>
-</ul>
-
- - Basic list example - -

Style note on non-inset lists: all standard, non-inset lists have a -15px margin to negate the 15px of padding on the content area to make lists fill to the edges of the screen. If you add other widgets above or below a list, the negative margin may make these elements overlap so you'll need to add additional spacing in your custom CSS.

-

Nested lists

-

By nesting child ul or ol inside list items, you can create nested lists. When a list item with a child list is clicked, the framework will generate a new ui-page populated with the title of the parent in the header and the list of child elements. These dynamic nested lists are styled with the "b" theme swatch (blue in the default theme) to indicate that you are in a secondary level of navigation. Lists can be nested multiple levels deep and all pages and linking will be automatically handled by the framework.

-

To set the swatch color of the child list views, set the data-theme attribute on each list inside.

- Nested list example - -

Numbered lists

-

Lists can also be created from ordered lists (ol) which is useful when presenting items that are in a sequence such as search results or a movie queue. When the enhanced markup is applied to the list view, jQuery Mobile will try to first use CSS to add numbers to the list and, if not supported, will fall back to injecting numbers with JavaScript.

- - Numbered list example - -

Read-only lists

-

List views can also be used to display a non-interactive list of items, usually as an inset list. This list is built from an unordered or ordered list that don't have linked list items. The framework defaults to styling these list with the "c" theme swatch and sets the text size to a smaller size than the clickable lists to save a bit of space.

- - Read-only list example - -

Split button lists

-

In cases where there is more than one possible action per list item, a split button can be used to offer two independently clickable items -- the list item and a small arrow icon in the far right. To make a split list item, simply add a second link inside the li and the framework will add a vertical divider line, style the link as an icon-only arrow button, and set the title attribute of the link to the text the link for accessibility.

-

You can set the icon for the right split icon by specifying a data-split-icon attribute with the icon name you want. The theme swatch color of the split button can be set by specifying a swatch letter in the data-split-theme attribute

- - Split list example - - -

List dividers

-

List items can be turned into dividers to organize and group the list items. This is done by adding the data-role="list-divider" to any list item. These items are styled with the bar swatch "b" by default (blue in the default theme) but you can specify a theme for dividers by adding the data-dividertheme attribute to the list element (ul or ol) and specifying a theme swatch letter.

- - List divider example - - -

Search filter

-

jQuery Mobile provides a very easy way to filter a list with a simple client-side search feature. To make a list filterable, simply add the data-filter="true" attribute to the list. The framework will then append a search box above the list and add the behavior to filter out list items that don't contain the current search string as the user types. The input's placeholder text defaults to "Filter items...". To configure the placeholder text in the search input, you can either bind to the mobileinit event and set the $.mobile.listview.prototype.options.filterPlaceholder option to a string of your choosing, or use the data-attribute data-filter-placeholder on your listview. By default the search box will inherit its theme from its parent. The search box theme can be configured using the data-attribute data-filter-theme on your listview.

- - Search filter example - -

If you want to change the way in which list items are filtered, ie fuzzy search or matching from the beginning of the string, you can configure the callback used internally by defining $.mobile.listview.prototype.options.filterCallback during mobileinit or after the widget has been created with $("#mylist").listview('option', 'filterCallback', yourFilterFunction). Any function defined for the callback will be provided two arguments. First, the text of the current list item and second, the value being searched for. A truthy value will result in a hidden list item. The default callback which filters entries without the searchValue as a substring is described below: -

- -
function( text, searchValue ){
-  return text.toLowerCase().indexOf( searchValue ) === -1;
-};
- -

To filter list items by values other than the text, add a data-filtertext attribute to the list item. The value of this attribute will be passed as the first argument to the filterCallback function instead of the text.

- - Hidden data filter example - -

Text formatting & counts

-

The framework includes text formatting conventions for common list patterns like header/descriptions, secondary information and counts through semantic HTML markup.

- -
    -
  • To add a count indicator to the right of the list item, wrap the number in an element with a class of ui-li-count
  • -
  • To add text hierarchy, use headings to increase font emphasis and use paragraphs to reduce emphasis.
  • -
  • Supplemental information can be added to the right of each list item by wrapping content in an element with a class of ui-li-aside
  • -
- List with count bubbles - List with text formatting - -

Thumbnails & icons

-

To add thumbnails to the left of a list item, simply add an image inside a list item as the first child element. The framework will scale the image to 80 pixels square. To use standard 16x16 pixel icons in list items, add the class of ui-li-icon to the image element.

- List with thumbnail images - List with icon images - -

Inset lists

-

If lists are embedded in a page with other types of content, an inset list packages the list into a block that sits inside the content area with a bit of margin and rounded corners (theme controlled). By adding the data-inset="true" attribute to the list (ul or ol), applies the inset appearance.

- - Inset list example - -

Calling the listview plugin

-

You can directly call the listview plugin on any selector, just like any jQuery plugin:

- $('#mylist').listview(); - -

Updating lists

-

If you add items to a listview, you'll need to call the refresh() method on it to update the styles and create any nested lists that are added. For example:

- $('#mylist').listview('refresh'); - -

Note that the refresh() method only affects new nodes appended to a list. This is done for performance reasons. Any list items already enhanced will be ignored by the refresh process. This means that if you change the contents or attributes on an already enhanced list item, these won't be reflected. If you want a list item to be updated, replace it with fresh markup before calling refresh.

- - -
- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-af.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-af.jpg deleted file mode 100644 index e2e34fd8fcd4d4d731e9948880843b447851d4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10197 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ag.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ag.jpg deleted file mode 100644 index 02766347a624ab3ce44867c8a00a97d46e60d75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9044 zcmbW5byO6<_vjaCDVJQjMOZ*WI#xhhK)Op*x_e1!kd{uBt|g>HN?1yAVd=&tB$v*| z_xF3}y>s4Q@4Y)`=AW6lb3YSz?zs=M537J@DhkR901ONO0OPR$9u@#{0BlSwEG$gy z#|9f48wZyV5BE_>2ng^Afh44)KoTI3jFOIujGTr72m~>MXz1w~85zl_SlCz?*ytD- z8UCXL<8dl34lXes9x($skeuQFSsuCoKs>-Vz&A_`7QhoA1||^W;WvQs(N1iP{}RCe z6pSaBSdUiX;XfsK9MJF#@B{-B^U0(Aj{uLO10MSUSU_x2W_}qQGEGZd7FTkC&q?3$ zSY>OwDYPbz*aY9Zh2TG>qykaXus`Q`!O8VXNLWNvOkD1byn>>VvWm8juAaVup^?>x zkDsh> z>&fG>VB!9U3*(9RW5onwVKejNkjiM{TDp?42z1njyHLN7@x~dhPOaB@;BiA2WCK^wk zf7P1x*UJ^H&@YE3zQSE@v-f@eNrOw-)cB?_@7CRP$82dN*K>j)JxSgLZQJxqtIb66 zHJ@XPn9#UDp|}?dPa9_0;PdiIUD2hVN-A0jf_lONQZ@r;Ft^d?zNRz^C)ZmE+B*in zSZ0bRzbAHc@}%_)D33{X_OzeHC40%r#ccsqu{HjMN+U9-4ri5?+POPTZZ=y}RT}g1c?*w9L`XER zkYnCW*Wuk{pu_c9@5&lMywCR+CL-%xjp^%Es=e1W8EQiNIVGb{ml9+ZM6YArh`e;Z z55VT8RM~TNuGp)cck&fKKqr!R!DAjIl#1oM?>{zXJ}aZ<=}E-BoY|ZY3v@462~QZI z3WB8ip4Bo8N$%VDPWFtFZKlQU)Je%xGc=$?nwlul8A*fsVuYiw8K%Fin|jR6wKWV$ z9{yHgW2?P}>VYI3j`4@yZJCvP5GeaoMCF&){a;%~abg}-C8P>h{aVpcf6zim7Y9#v z69~9Z9kBPJS@hz;9{pY#jI)&?xIbo`xf^Ad zG~bT=;ry&G)kwAn-!L_gXcuyJ70GdkO=P}O1x88-6L&oT^1xPajvDjbOB5^`6`}}7 zRcM64JmVX@m`fTS6Lty z^MifVX`dQPpABkA__+UW8kgwmqUu!1=VP3d3_wRe4ix_DU0~?791x1ECFrzsFv9!QNIMm@fz7-5dmj|*R zr{-40CNvasslXZKSfL4aCmR`ZRN8aemwFF?P3Ra;nW2oV_)pe8=~t~a!A7(4U=?pH zbj|muT`3=!?DB=#w1eJ-rWfg``iuzn8*Ay%lBSY%`>g4+;dCU;_4-ngp}<~CO&`4HfmvoJmSYQcc9qV~o{VnJHY6|O}e|*%|G@pPb)Z1Fy)z8zO=>ed^ z6LDoe>PGT5M#)pt-R)!E9Pm6CP8({GcNYNuk`2FhSaz&alpGR$N@kZ3WaRkkSF(Iq z^fW~s2pxMbwDzgCPe&z}ZF2W~>agWNyq=vv!@V;`6&#r+$W25G&vEGY?FNlaomR$) zADs06wdvdYDIfNMFILiG(^ERL`x+@FU4*CkO0d$6bAa15$Ez%;{$q2Ca^`J|4taMs zaiKM1{@Gde^IW5v1Rg`dq2BkDB+n3@VND(NowsC@+zn(ru&q2>3)d7b0P9Z9q^Xae z+6<62e%H@FHARV91-7yM8YH%<&;DaCX&#@u@c@e|!RBJqy2%JRekSH@{nf96+@g&1 z0RTLcKKr-zF0EXv#wS-WA-rZI7noEd$gF1ihoF@_e^ zTlgZqGAsh$^+N9{#=wh)mw7{itn3|#kF-*{2ufUJqd4-%_Ehy8VLGdU+xiUCyC7DYE?Jc7W}t8S*%3{S|!vWbh)LVWWB-yjpu&5%AvRP&G)8e2;6gKCi^F zu*YGa6d_+Hnus@)_hm;lFrDaT!8XvJXrcz>yqDi!|K>fXj1EJ^oxI_PcwO3515av- z>r~dg z%QWSuax|f6vSergo*2xp4|pZ~($%F8_JPYylpy}Kx!vaJlJkvUU$Pxib#tV;naRPC z_I1y7y!f3Pr=)qc>N!3K>EXLo7EiI;mTCw|sLxZoT%kkhyRpeKg;%CxX4l{cK+@;+ zD%1670xsWTSy>OvYL43r7_DK($^aXoF0#V>OgQi4dKoKnb$laBEJ;n9so$##ad$r)p_x3YW9dmZo(%l_cPQf?B#FD zeOLQdatVY}Le8_-+tM8n8cBA}FYn^*1BU9D2Je}Ab1*L%hZ?(-b?O$bZ&kx~ZC20B zk?R3O?x41552RtEtP|PGoDZZT?hB7@Wvci)*Rn&l^W551;DKuV*d;U|prV)M*dZ&d zb2d9wQ;Bo{pEmeZD(cW|cnt&->cAP+YSEf7K2XLGL#KF4e{%^q3SyYE+*z|KuDU~w zD~nlv*Mlt>Bb_^SH@#YQo@^E!tR7R0u-4*UcJ|bBG#RqI*z4Y(FSmWu^8m13HWQ}( zdYA89WVbIp4d)6(x})p{(f5i{UKG|?I7H6|yLTZpar;%g7V1xb^6G@v$D;FRs(hja zOnM;xWS?_z&V_K|oIVVR5rM=8L1QP%6VoPxQ9 zf=2X<+dvn_sG9rK-uf(kT~*hCTzToOt1fT*oxC1u>||Lo6%7iO{*o6YeuGO39)9Ci zPP$j)vto8b{^2$n&*ZB54i|cSr!MAMW^{5I)%};l>ng>M#C*VO-`EV&^7EHPT6giu z$N512`ef@yQ9z(>rf-Ri^%^qETM;5$=sQ%0K~LGcOq|f88HQ9c_U&dwm7l^g{Vu!B1@F}M)}IBt?xX=eZCOs<(v zKaG$_<8Lc%0+EvngdR)RPa|RS6}{A! zVNM@Vv#jPRLG_AAbfu#}zv^T%7@Ke;xzh!Dd>DHN zQSq^L8#Yaf<>cZ&uiTZyC~U0tJcsLt%r9c+$#f@T4lp8+Qw)H{e6@+0>G-aL53#_L zeJRmu_DeA<`hT5s(PV5udh|=j$V6PkYM|#S9q{`HY#Fm$@Ja=RXoZI${4Y_T=1%8T zkXg9FUnN+3?7y#v-=uJB&Z|DO%Gq#8eh63zQW=@y_9{1(?R^$vB)lnb2i<(%vL~hf zZ#U1ln1_uyG4#F?nzwjQfztooD*Rp7qjkG+gtL!)=ku0-rv8+;1kj$p8R^ zO^?2&Pj~>BRT!vJp5l*p_g zTl~8w(%7M?C*Mgtsry~`Cd=#X-WLrao14%NfMDolC0)(e^IV4Cnzq8?ChkK2fKI7_ z$C@{_NSm|n!{ru7TdU+DdrzhH&)qoIpn)^ZYory-xM4n^c!|b0WL1Lk>%whJZ(CiH z@K3Xmzt+HH5t1Zg2_9dcMO|^ht+cvrFAIA^^x#q+*$>-cHgD=M!TM}TxJfKP?9QI` zw-+aECbO(cFfBnh9XdXBZ$2V~eUkD3&hjBCGnh`PAT|&L!`1qz`qedTcB2!tiR5wU zljo{U-K=jaI|q$u^-X?lGKR2@G-T*?Bfev^cg>9xL(+}@I#aB=B$cOpy)!1x4cxib z_uMe$@ek$c_^rhx5#tP~o|$*Lv5Xc9mU^MdU1Lov^7!2;LX_qoEU0x=BU{h7CU%pm2f!B5;B&M z#(a2(?X72|3X9%c=%=yigm%Qn6TcoS+qptOKYga}sCV`4R(D%aP=;tDPpV~)^fK+G z_Ui?d_Q~Cu2e)!R=*Du|2krj5n!hZGzTo_qd%sb9XP=QWPqR^51d13&fRoXEj;$wNaLr!i9#Y2`u+7>+na0m>Iin z!<#0HCo7A>iMNvC-3+r28AnSH-)tS`MPeUf2T5@z#9h z>Y0LNu7by?&o(G3(_O8ISkC%`##B)MR@<5oX4-^rerNl*XHrQ)J>kwqE5i3~5rjGM zPcKTsdwX)E#!Ihqw-A>hL)Q-gofi8J-kn3Q8VzCj0lEA&(7h>m=@(U;)`nX4jXF5` zlO8U2dCa1l>;pi$)97kX-gn>AWFe?5HAEF4N=O1oP@uQpHpj86vL&kLHS_u2bCrP+ zb(nKDW^Q+3{X*P!!U(bpAK$1I{5|P`IzB%+kr-xcf6OS@B#m*QJ>c}8ad!+Ecxu{B z#s8xAnZV(MK=(u!i5lF!J}+^Jo&mPFq_vbMc$*%3y0_Yv&Qj@V%CSnTbaeV-R@<^F zi>1d$6eTKkLB1$xV4lUq>XJLJu^(ZuD7Sim9};ujnP_2|r|&G~tFM`*$7`x$F(%+% zo)i&O@;n_f2i)P>ab=>mcCQZ`Rb=v%&No8wdhA8m^6a+{u;~nrEoy8B5!-JbAu3cV zYk{fBbCA7LX(WlEkhFK_rf)bh;?+VCI&Iy@6#2L7EwOa!XO2jQae?{e;a3$G{!7i4 zXMmt2GlWM%U7^i6i_2iEb({>TRVTz_T5-z5zWp~#JiZ17yXoVXceZW$^R2G@pNfRD zOS)8)LUB$T0|)yw!af?Hs9q6kb!$hYvfU1(-m*z-;Rac(Vs@QNH~c&NCWj9eDyoTf zqYHMCxC4hAH^6cOxHWt2LGe5bPh;!j`tiwI`3*&u7iA^mCd#p}Jr# z-c8B)jd!*F(W-EuY5li=B!%fS#yh+1vb3o(Y~I`i0)c)mw={Yuw`JO+fHOp#_)$Ta zZv>9t@dIE6w$hu%XA4c?^OdLl^L_+=Xi2ODOU6#X*yw&OfLEDKdm5l1@iDe@U}Tc; zStcuEJbqDl4?J^7+?U#-?4(~$-)nKUZRW?%-1jNYG3HBYm=c03JGYTiWga(jRxb<; zBnM=)G?o)u@6BQ0=Z@Sso~x^yPnICpr#ICNv_92gf9OX5hcW}62mFhttS5)sF@1yQ|Bn0B29kE(Q*4JMeIDA4PzB)~3H$w8qte)-Q-5oXnr=va!+qOV^?ZRX zX`U$CXIGfTCYuWLFZgb4k@1_*Dvd)KX*=Np{+dSThFRIs zn6{t&f}w6#FYd>UJTb;Zp|P+&^{^$0?FT?16g01;yC!%k@D=-m%w{iGK+(_%=!r1-ccFL1o=9_bW5Ey-w=?VedsBX?aEu;VOc? zN*Avb0sh^xZsK_wuYv;YEFdPLdRx((UnUMWsesyLdJe_pP?!$jvrtUJk@WHjH()Kms)ZwG+$ z$-+vsvd^Jx@%S6hw}$c}Upg1pd%s<=_L=1sd4q2jbZ6S9ji~qY3wIX4D_V5#30A&l zMDLr9=3v!Iq*5=1CRpk;7}Dt5tNP~h-#0|whY(o>cj*;jeQhOo<#pS#Ia(nj&=WLR z;6Cok8Dxo=ziZrRYPl`{^<^z%BdLL)jnE;A)+cjxwJ@it#MvBWHl8JJr;TSyvCje# z*0Ic@(;SYIFtaB8oWe@JWvd|_N}kB#M>La68=KL{97?axK4)$w*#+4 zd5H5Gd$8g{p2&cB;O0=(IGj~JzjsyCD6G@R>r&S$c`o4VhLcO~@;z9>?|3m#Y*o9u z@P1fnW>WvTla}BFj(EPz!k(#4jhp(e;-8sb@o9;bGP!+C+uC8$5$}xQXFde+j}ddI zj17}c7AKa{b~CrHl$%Rn!@%X?Z!H;aubOW1?craiXzEU>qG}%fQ^nN-w-lV< zFhG30J;uN@P%q0YvP_?|cXhskvrM(lFJS&YvSQCnT)t(gM9K1Vbe32KCD)QmNihaW zh^M*_w8bLdX52!zdS$VtA%~<`we|G%cCRyz^wCFQw36+>t8AreJZwXiftaFN^4*w?KN#Gy)YwUzj`bPe*5`ir!~TE@ z*!VxS_$q6M)wV&JBqlL}mS}K-I+t@8RKj@Mt0`ShV3;&j`vJh+FUqJr(2+kPi@o_x1w8cE&Ex*t7{>O-fUfNuxCW5rM77pp@+$v}Oa?X=tT(@LV z2d_W&#(Zf^aN0mmuUO>_v!~Y{^no2B zk=0(^=Q2R+Pz*#OEq(Ti=pC3UKAtk?MQ3zgl^tKWkhuC`b^6(zlZTf}A>|rSHooU4 zol`s0M)qf9r%(}nk5Yj>aX{M)*+{Ke-X{rCg`_WZE&@SCUK14*w2IoJ1=PYfSqv<# zjrCK@wwZF(*9{zL&N3$Kaf?}B{@^R747BCR#lDe(T=x_ut1h`+4#59*bHaz8l07D! zebCpFyUsY#wjPOKlEtf-=3O{s%}iK=uS{hh%zhVS#4tlkM8kLPYzXN(b|%Bk|BVD1 z3RG2c4@Za*Dr#w5?b?s{Te|X`-Q)3NW4e(gDk1_sm-hr{eRx@Y$zR3GxrZqH%OAsO zw*PA_ZN<;v+P%?q)m6^>KlEeKpRhIndK+Pt7)2)e$(Iy{wj~?#U#RTM=JOJ`% zDwd1~1%_%jzXML;9E;Nzv4)GOYtXgVU3&7oKI#O}!w7TP~7ns{}rY~dU+ zW7%aJ$fD8kR$9e_S(xvlI)Hr7cb=25?D)WL!RLZgExB zCsT=Dz)|uFb7>61AB^}urSw;)4BDXcmZ$g4aq20vu7qeila%pV=&FOpgnr*j9i?u( zb*|oc^2TDAz(W&3c1CfKhZjM+hpn{E&kY;d6|Z=FLL0cp6eyIzoXDAx(U1{ifmK<6 zBKBE^lreJno?#_=&qzQjE=99@#E!2VO446BKaBIe@@=`UnP^C&#z>)i{w=g%;(NTG zXpG7gNbfL29HEy5|4t1#gxK zbZ_3o%a$#?U`+kANDwEx>t$9Lj_ZA01V^KUzEm#RQOzeBzb~E?UXWfJkji)fFhOXh zr#!(1`|??Vf8V)@oVw<<93JY&Rj8ywmfIkEEtN-;CD@`BgZH>{&UR@tu5*1urM+Z> z5bZr(R80i_M$%U=0nCec&;<03{(gkH{8ua8 z)50JBbdx!m6w-tj0b}YbGwtUR!yVr5R7I(i`RU?kw@jYksQc3UP)scCjo;Ot>So}e zh!Bisxsi{*M5)iGJ(UK*a;iK_n!obu%Ipao#iDfj{w}w*{v{<59e65k`cUKBKlV1? zel{*p$1>68CSc`wK5y2bSsC`Os;YlVDM%x%p@qr6aYE5nx;x0z9ie0zI*l5`&l8R1 z178!Q8WvdHzRBUc_uQOs7#pKuwoG=1@0dOS;+?CVd*AHV)x+wR57m;qvS96X{~{W&-Z)YZQBikFud6kW2ED~aZ| zag&XklU39L+jY|*H5!{^5R23csHfSPVsJ^u;g}6eL}+4FLooGCOCPR*pAu5qBFRs#U1*Lntds+p2=$}iNRbWam377(28Opw;oMh(-m(XguTFUS)& zJ{iJc;yJow#6BUrf0&KIvmZjY(EZ)18(7zOLD$o#h&mqPimtc+ z3w&D4>)NLBVlqN-Zuw4~w`)n>AkMNu$T$%F<)Jgx7IKb#M z2Jd7@-42;tRNRVUA;|lT!&Pr2oJ!{O&kMlWYAljl~HE2u%B{lS}6r;$&Z2 zt&`H}c&U$Q5~lw?ccdVP>^{iI9I)d}<>hW_YI3FMBS-TbAAp(c=P9)JWE8>5)EEX1 zSgWzPv#qf`e`h`TvnfH!O998Oe7baXgNV9d#94XD-aUHyRXF8+KwB6e%2j78<&2@E z_7*&L>sutWoNRay%{K%i?(W)ly+U?m`>3RzSat8$>sn9NBW2@Cj0E!V_{wlkt8p6j zwVVWF_jzFp>0y7QLiP1)kDqsV%ztWex%Y^tWckLod4vNIG|`XRe=|;7`Wh?Igv8wF z4kN#Zfg<-}Y%P~k@5~Q0c&C^B0KhX3<5Rq4X=Nb63bO7SyO+?`;BZM7NGm}E!E{o5 zbvZs&o>9^o0G#?2 zounHmFUTxNQd>0p0rc2`ML|7nN4R%*_m6(Q`#)H!ORmegjf{t`?9{^<9129HI K4UeFQx&Hwy2(`Wd diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-bb.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-bb.jpg deleted file mode 100644 index e23683a414cfae31547211b7341e5b5d75d02ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4319 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 L#}vt9;@tlLKFIYe diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-hc.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-hc.jpg deleted file mode 100644 index cc099d10117ec8930527175380c805b6b6c89045..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12825 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-mg.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-mg.jpg deleted file mode 100644 index c3850e3ae6dd7ead124cc82314613d8fc9f124fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5955 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 a504YHIUPq-nbzT4jIUGy|C0t2X8sL7^{v+c diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ok.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ok.jpg deleted file mode 100644 index 90a08f7a71c0117fe841e7295990834dfc26b4ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11084 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 WK6?z?PmeMHY4woEoNbJ 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 RaDq}7wv*D0)GWr&{WnlqZ`J?+ diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-rh.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-rh.jpg deleted file mode 100644 index 614969a2043ba823cb9fe89a41cb791134f33411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9336 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 Dlo&5f diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ws.jpg b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/album-ws.jpg deleted file mode 100644 index 33cf555ab02bf88a4ca1ae3542e5f7683b45a90f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5569 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 eX;<7EEX*TuN8E$Anb;bEMoMU00@{IGd>1D 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/de.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/de.png deleted file mode 100644 index ac4a977362738ca7daa20784717f10f9617136b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)h<6BFn%a z@b8~2SoNP@zd$;E{sbbRuHQd?{QCI=sNwhbA3*&Qe}GP900=;09NYi^fU@pUdVa9*13;+Sd!tjgXKhXQEMobL97(p6<{RLvMGBN!7 j!N9=G@a-1^K!5=NcXWu!7_DDe00000NkvXXu0mjfeQx^H diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/fi.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/fi.png deleted file mode 100644 index 14ec091b802cf24ebd9f8825f81cd2f6e360b46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVFP2AE)Ir2{}>qlLBSs|`Qg(SfB<4)VqlOE;Q=cD|Nnn$ zna02W|Nj1E&`=Tpav_4q;M$#E00G4E4{SI@`q`VGKvVzz{r4XmU}R+c_2(Zz0I~c7 zs`v*r?Dty(;z&PFFXX zRA5t=4x{1SIibD)Vqy6A2V^D4P_SySA|L?j2ip1XFA)9%V~_%1r~w2J3=}{2Oiu1 f7(RXZ0uW#T>&I!FfdIJb00000NkvXXu0mjfj-u42 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gb.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gb.png deleted file mode 100644 index ff701e19f6d2c0658fb23b1d94124cba4ce60851..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)U(k2*|8J(R-+sudaynhucHbwAMTnor{mwqO^w7JHzaBsT z{O^B8RYf5+LvDs&KmRKVd78=o{`1#HTiEo_OolaGleS)G+IQ#sUI`b*pv<`1zCJ=H0jd{{2S>p`ri%{LsXJ%FbMS z$#S`6f|?OG!^Jxczkf6Q`UNF{l0Sd`ad7zm>({^EzyAS6{{CgrkluOb3l1A>ZU2~A zK+FZ=zkmP!`TOVhpFbzBzFaPmD2$N3;+$pK?>zdet`f0002ovPDHLkV1gy;I?Vt8 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gf.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/images/gf.png deleted file mode 100644 index 8332c4ec23c853944c29b02d7b32a88033f48a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&ZO=a{vExMP2%`MCSoB^FIcLe_%lf;|~%E5I`(IQNh}3Ao>6Q|DFUXMn*>AqQd`w z|1kXd^B;tM|Njjl{{hM0zwd6?1Q0+hV1xeud-4=Wy?p-%sO`^#2S61Jzk!N?s)6X& zzhA%p|N6}=D+{y%Ab`Lc{sL9~1=0UN4*CD*7s%9KAf+JHKs~=eB-8KTKvw|-5R1&; zzd&a|ob(5%^Z$Q=wHy9p13+aOpFRNu5F>N&`Tk_-7w>=n{RejQzkfh&Kn{rf10?_b z{tFTZibx5v&dxav5I~H7|Ney-|DWN1$%1FyagzUW0464;_wU~W1Q5$TW@eGxtUvee z3vAf*8|igK9~@*rr66bh|NrkNM8z+V zAV?>O@ek;bKfu6d00{qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/index.html deleted file mode 100644 index beb1d0d..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists - - - - - - - - - - -
- -
-

Lists

- Home - Search -
- -
- -

Lists are used for data display, navigation, result lists, and data entry so jQuery Mobile includes a wide range of list types and formatting examples to cover most common design patterns.

- - - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-all-full.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-all-full.html deleted file mode 100644 index 3e919ca..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-all-full.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists - - - - - - - - - - -
- -
-

Linked list samples

- Home - Search -
- -
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-count.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-count.html deleted file mode 100644 index 47a9983..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-count.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists Count Bubbles - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-divider.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-divider.html deleted file mode 100644 index ddbcab6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-divider.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - jQuery Mobile Docs - List Dividers - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-events.html deleted file mode 100644 index bd6981c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-events.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists Overview - - - - - - - - - - -
- -
-

Lists

- Home - Search -
- -
-
-

List views

- - - -

Bind events directly to the ol or ul element. Use jQuery Mobile's virtual events, or bind standard JavaScript events, like change, focus, blur, etc.:

-

-$( ".selector" ).bind( "change", function(event, ui) {
-  ...
-});
-
- -

The listview plugin has the following custom event:

- -
- -
create triggered when a listview is created
-
- -

-$( ".selector" ).listview({
-   create: function(event, ui) { ... }
-});
-			
-
- -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-formatting.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-formatting.html deleted file mode 100644 index 8c497d4..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-formatting.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - jQuery Mobile Docs - List Formatting - - - - - - - - - - -
- -
-

List formatting

- Home - Search -
- -
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms-inset.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms-inset.html deleted file mode 100644 index 35ba69b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms-inset.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - jQuery Mobile Docs - Inset Lists with Forms - - - - - - - - - - -
- -
-

Inset with Forms

- Home - Search -
- -
-
-
-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • -
    - Choose as many snacks as you'd like: - - - - - - - - - - - -
    -
  • - -
  • -
    - Font styling: - - - - - - - - -
    -
  • -
  • -
    - Choose a pet: - - - - - - - - - - - -
    -
  • - - -
  • -
    - Layout view: - - - - -
    -
  • - -
  • - - -
  • - -
  • - - -
  • - -
  • - - -
  • - -
  • -
    -
    -
    -
    -
  • - -
- - - -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms.html deleted file mode 100644 index 018b441..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-forms.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists with Forms - - - - - - - - - - -
- -
-

Lists with Forms

- Home - Search -
- -
-
-
-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • -
    - Choose as many snacks as you'd like: - - - - - - - - - - - -
    -
  • - -
  • -
    - Font styling: - - - - - - - - -
    -
  • -
  • -
    - Choose a pet: - - - - - - - - - - - -
    -
  • - - -
  • -
    - Layout view: - - - - - - -
    -
  • - -
  • - - -
  • - -
  • - - -
  • - -
  • - - -
  • - -
  • -
    -
    -
    -
    -
  • - -
- -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-icons.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-icons.html deleted file mode 100644 index 39aa7f4..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-icons.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - jQuery Mobile Docs - List Icons - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-inset.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-inset.html deleted file mode 100644 index e904d03..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-inset.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists with Form Controls - - - - - - - - - - -
- -
-

Inset list samples

- Home - Search -
- -
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-methods.html deleted file mode 100644 index bab5012..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-methods.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists Overview - - - - - - - - - - -
- -
-

Lists

- Home - Search -
- -
-
-

List views

- - - -

The listview plugin has the following methods:

- -
-
childPages retrieve the sub-pages
-
-

This method returns a jQuery object containing all the immediate child pages of a nested list.

- -

-$('.selector').listview('childPages');
-				
-
- -
refresh update the listview
-
-

If you manipulate a listview via JavaScript (e.g. add new LI elements), you must call the refresh method on it to update the visual styling.

- -

-$('.selector').listview('refresh');
-				
-
- -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-nested.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-nested.html deleted file mode 100644 index caccada..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-nested.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - jQuery Mobile Docs - Nested Lists - - - - - - - - - - -
- -
-

Nested list

- Home - Search -
- -
-
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ol.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ol.html deleted file mode 100644 index 810a2e5..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ol.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - jQuery Mobile Docs - Ordered Lists - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-options.html deleted file mode 100644 index 776c0d8..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-options.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists Overview - - - - - - - - - - -
- -
-

Lists

- Home - Search -
- -
-
-

List views

- - - -

The listview plugin has the following options:

- -
-
countTheme string
-
-

default: "c"

-

Sets the color scheme (swatch) for list item count bubbles. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.countTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-count-theme="a".

-
- -
dividerTheme string
-
-

default: "b"

-

Sets the color scheme (swatch) for list dividers. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.dividerTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-dividertheme="a".

-
- -
filter boolean
-
-

default: false

-

Adds a search filter bar to listviews. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.filter = true;
-});
-
-

This option is also exposed as a data attribute: data-filter="true".

-
- -
filterCallback function
-
-

The function to determine which rows to hide when the search filter textbox changes. The function accepts two arguments -- the text of the list item (or data-filtertext value if present), and the search string. Return true to hide the item, false to leave it visible. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.filterCallback = function( text, searchValue ) {
-        // only show items that *begin* with the search string
-        return text.toLowerCase().substring( 0, searchValue.length ) !== searchValue;
-    };
-});
-
-
- -
filterPlaceholder string
-
-

default: "Filter items..."

-

The placeholder text used in search filter bars. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.filterPlaceholder = "Search...";
-});
-
-

This option is also exposed as a data attribute: data-filter-placeholder="Search...".

-
- -
filterTheme string
-
-

default: "c"

-

Sets the color scheme (swatch) for the search filter bar. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.filterTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-filter-theme="a".

-
- -
headerTheme string
-
-

default: "b"

-

Sets the color scheme (swatch) for headers of nested list sub pages. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.headerTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-header-theme="a".

-
- -
initSelector CSS selector string
-
-

default: ":jqmData(role='listview')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as list views. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.initSelector = ".mylistview";
-});
-
-
- -
inset boolean
-
-

default: false

-

Adds inset list styles. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.inset = true;
-});
-
-

This option is also exposed as a data attribute: data-inset="true".

-
- -
splitIcon string
-
-

default: "arrow-r"

-

Applies an icon from the icon set to all split list buttons. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.splitIcon = "a";
-});
-
-

This option is also exposed as a data attribute: data-split-icon="a".

-
- -
splitTheme string
-
-

default: "b"

-

Sets the color scheme (swatch) for split list buttons. It accepts a single letter from a-z that maps to the swatches included in your theme. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.splitTheme = "a";
-});
-
-

This option is also exposed as a data attribute: data-split-theme="a".

-
- -
theme string
-
-

default: null, inherited from parent

-

Sets the color scheme (swatch) for this widget. It accepts a single letter from a-z that maps to the swatches included in your theme. By default, it will inherit the same swatch color as its parent container if not explicitly set. To set the value for all instances of this widget, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-    $.mobile.listview.prototype.options.theme = "a";
-});
-
-

This option is also exposed as a data attribute: data-theme="a".

-
- -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-performance.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-performance.html deleted file mode 100644 index b51746e..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-performance.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - - - jQuery Mobile Docs - List Performance Test - - - - - - - - - - -
- -
-

500 item list

- Home - Search -
- -
-
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly-inset.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly-inset.html deleted file mode 100644 index e1cbf79..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly-inset.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - jQuery Mobile Docs - Readonly Inset Lists - - - - - - - - - - -
- -
-

Readonly Inset Lists

- Home - Search -
- -
-
-

Simple list

- -
    -
  • Acura
  • -
  • Audi
  • -
  • BMW
  • -
  • Cadillac
  • -
  • Ferrari
  • -
- -

Count bubbles

-
    -
  • Inbox 12
  • -
  • Outbox 0
  • -
  • Drafts 4
  • -
  • Sent 328
  • -
  • Trash 62
  • -
- -

Numbered list

-
    -
  1. The Godfather
  2. -
  3. Inception
  4. -
  5. The Good, the Bad and the Ugly
  6. -
  7. Pulp Fiction
  8. -
  9. Schindler's List
  10. -
- -

Divided, formatted content

-
    -
  • -

    Stephen Weber

    -

    You've been invited to a meeting at Filament Group in Boston, MA

    -

    Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.

    -

    6:24PM

    -
  • -
  • -

    jQuery Team

    -

    Boston Conference Planning

    -

    In preparation for the upcoming conference in Boston, we need to start gathering a list of sponsors and speakers.

    -

    9:18AM

    -
  • -
- - - - -

Icon list

-
    -
  • FranceFrance 4
  • -
  • GermanyGermany 4
  • -
  • Great BritainGreat Britain 0
  • -
  • FinlandFinland 12
  • -
  • NorwayNorway 328
  • -
  • United StatesUnited States 62
  • -
- -

Thumbnail list

- -
    -
  • - -

    Broken Bells

    -

    Broken Bells

    -
  • -
  • - -

    Warning

    -

    Hot Chip

    -
  • -
  • - -

    Wolfgang Amadeus Phoenix

    -

    Phoenix

    -
  • -
- -

Divided, filterable list

-
    -
  • A
  • -
  • Adam Kinkaid
  • -
  • Alex Wickerham
  • -
  • Avery Johnson
  • -
  • B
  • -
  • Bob Cabot
  • -
  • C
  • -
  • Caleb Booth
  • -
  • Christopher Adams
  • -
- - - - - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly.html deleted file mode 100644 index 99d27e3..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-readonly.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - jQuery Mobile Docs - Inset Readonly Lists - - - - - - - - - - -
- - - -
-

Readonly lists

- Home - Search -
- -
-
-

Here is a variety of full-width lists that are read-only. If a list has the data-role="listview" attribute, but the contents aren't linked, it will display as read-only. These look like normal lists, except they don't have a right arrow and the text is set to a smaller size to save space.

- -

Simple list

- -
    -
  • Acura
  • -
  • Audi
  • -
  • BMW
  • -
  • Cadillac
  • -
  • Ferrari
  • -
- -

Count bubbles

-
    -
  • Inbox 12
  • -
  • Outbox 0
  • -
  • Drafts 4
  • -
  • Sent 328
  • -
  • Trash 62
  • -
- -

Numbered list

-
    -
  1. The Godfather
  2. -
  3. Inception
  4. -
  5. The Good, the Bad and the Ugly
  6. -
  7. Pulp Fiction
  8. -
  9. Schindler's List
  10. -
- -

Divided, formatted content

-
    -
  • -

    Stephen Weber

    -

    You've been invited to a meeting at Filament Group in Boston, MA

    -

    Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.

    -

    6:24PM

    -
  • -
  • -

    jQuery Team

    -

    Boston Conference Planning

    -

    In preparation for the upcoming conference in Boston, we need to start gathering a list of sponsors and speakers.

    -

    9:18AM

    -
  • -
- - - - -

Icon list

-
    -
  • FranceFrance 4
  • -
  • GermanyGermany 4
  • -
  • Great BritainGreat Britain 0
  • -
  • FinlandFinland 12
  • -
  • NorwayNorway 328
  • -
  • United StatesUnited States 62
  • -
- -

Thumbnail list

- -
    -
  • - -

    Broken Bells

    -

    Broken Bells

    -
  • -
  • - -

    Warning

    -

    Hot Chip

    -
  • -
  • - -

    Wolfgang Amadeus Phoenix

    -

    Phoenix

    -
  • -
- -

Divided, filterable list

-
    -
  • A
  • -
  • Adam Kinkaid
  • -
  • Alex Wickerham
  • -
  • Avery Johnson
  • -
  • B
  • -
  • Bob Cabot
  • -
  • C
  • -
  • Caleb Booth
  • -
  • Christopher Adams
  • -
- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-filtertext.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-filtertext.html deleted file mode 100644 index 085a204..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-filtertext.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - jQuery Mobile Docs - Filtered Lists Using Hidden Data - - - - - - - - - - -
- -
-

Search hidden data

- Home - Search -
- -
-
-

By default, the listview filter simply searches against the content in each list item. If you want the filter to search against different content, add the data-filtertext attribute to the item and populate it with one or many keywords and phrases that should be used to match against. Note that if this attribute is added, the contents of the list item are ignored.

-

This attribute is useful for dealing with allowing for ticker symbols and full company names to be searched, or for covering common spellings and abbreviations for countries.

- -
		
-<li data-filtertext="NASDAQ:AAPL Apple Inc."><a href="#">Apple</a></li>
-<li data-filtertext="USA U.S.A. United States of America"><a href="#">United States</a></li>
-
- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-inset.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-inset.html deleted file mode 100644 index d50a1c9..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-inset.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - jQuery Mobile Docs - Filtered Inset Lists - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-with-dividers.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-with-dividers.html deleted file mode 100644 index f1f011b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search-with-dividers.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - jQuery Mobile Docs - Filtered Lists with Dividers - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search.html deleted file mode 100644 index 81afc2c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-search.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - jQuery Mobile Docs - Filtered Lists - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split-purchase.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split-purchase.html deleted file mode 100644 index 42dc86c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split-purchase.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - jQuery Mobile Docs - Sample Dialog - - - - - - - - - - - -
- -
-

Purchase?

-
- -
-

This album costs $10.99 and includes 9 tracks.

-

Your download will begin immediately on your mobile device and all tracks will by added your your library next time you sync.

- Purchase album - No thanks - -
- -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split.html deleted file mode 100644 index 621a6d3..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-split.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - jQuery Mobile Docs - Split Button Lists - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-themes.html deleted file mode 100644 index 9feb23d..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-themes.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Lists - - - - - - - - - - -
- -
-

Theming lists

- Home - Search -
- -
-
- -

All the standard button swatches can be applied to lists. The framework assigns a default list theme swatch of "c" (silver in the default theme) and swatch "b" (blue in default theme) for dividers. Below is a default themed list.

- - -<ul data-role="listview" data-inset="true"> - - - -

Theming list items

-

The list item color scheme can be changed to any button color theme swatch by adding the data-theme attribute to the list, and setting the letter theme swatch. Here is the same list above with the "a" swatch applied.

- - -<ul data-role="listview" data-inset="true" data-theme="d"> - - - - -

data-theme attributes also work at the LI-level, for styling a single item.

- - - -

Theming dividers

- -

The theme for list dividers can be set by adding the data-divider-theme to the list and specifying a swatch letter. Here is an example of the same list above with swatch "d" set on the dividers.

- - -<ul data-role="listview" data-inset="true" data-theme="d" data-divider-theme="e"> - - - - -

Theming count bubbles

- -

The theme for count bubbles can be set by adding the data-count-theme to the list and specifying a swatch letter. Here is an example with swatch "e" set on the dividers.

- - -<ul data-role="listview" data-inset="true" data-theme="d" data-divider-theme="e" data-count-theme="b"> - - - - -

Theming icons

- -

The default icon for each list item is arrow-r. To override this, set the data-icon attribute on the desired list item to the name of a standard icon. To prevent icons from appearing altogether, set the data-icon attribute to "false".

-
-
-<li data-icon="info"><a href="#">Notices</a></li>
-<li data-icon="alert"><a href="#">Alerts</a></li>
-<li data-icon="false"><a href="#">No icon</a></li>
-
-
- - - -

Theming split buttons

- -

For split lists which a second button, the framework default to "b" for the theme swatch (blue in the default theme) Here is a default split list:

- - - - -<ul data-role="listview" data-inset="true" data-split-theme="a"> - -

To specify the color swatch for the icon button on the right, add the data-split-theme to the list and specify a swatch letter. This attribute can also be added to individual split inside list items by adding a data-theme attribute to specific links (see second list item).

- - -

The icon for the split theme can set at the list level by adding the data-split-icon to the list and specifying a standard icon. This attribute can also be added to individual split inside list items by adding a data-icon attribute to specific links (see second list item).

- - -<ul data-role="listview" data-inset="true" data-split-theme="d" data-split-icon="delete"> - - - - - - -

Examples of all basic list swatches

- -

A swatch

- - -

B swatch

- - -

C swatch

- - -

D swatch

- - -

E swatch

- - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-thumbnails.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-thumbnails.html deleted file mode 100644 index 546cffd..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-thumbnails.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - jQuery Mobile Docs - Lists with Thumbnails - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ul.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ul.html deleted file mode 100644 index 60d0907..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/lists/lists-ul.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - jQuery Mobile Docs - Basic Lists - - - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/nav.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/nav.html deleted file mode 100644 index eb00f6c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/nav.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - jQuery UI Mobile Framework - Documentation - - - - - - - - - - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-alt.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-alt.html deleted file mode 100644 index 383a747..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-alt.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
-
-

Dialog

- -
- -
-

I'm colorful

-

This is a regular page, styled as a dialog. To create a dialog, just link to a normal page and include a transition and data-rel="dialog" attribute.

- Good for you - Don't care, really -
-
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-buttons.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-buttons.html deleted file mode 100644 index 6614b24..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-buttons.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
- - - -
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-overlay.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-overlay.html deleted file mode 100644 index 108ee86..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-overlay.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
-
-

Dialog

-
- -
-

Custom overlay

-

This dialog adds data-overlay-theme="e" to the page container to set the overlay swatch color.

- I like it -
- -
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-success.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-success.html deleted file mode 100644 index a45e5e2..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-success.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
- - -
-

Flickr upload:

-

Photos posted successfully

- - View photo page - Done -
-
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-with-select.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-with-select.html deleted file mode 100644 index 53ee29f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog-with-select.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example with Select - - - - - - - - - - - -
- -
-

Dialog select test

-
- - -
- - - - - - - -
- -
-

Sample Dialogs

-
- -
- -
-
- - -
- -
- - -
- - Real Submit Would go here -
- Cancel -
-
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog.html deleted file mode 100644 index 55799e5..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dialog.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
- -
-

Dialog

- -
- -
-

Delete page?

-

This is a regular page, styled as a dialog. To create a dialog, just link to a normal page and include a transition and data-rel="dialog" attribute.

- Sounds good - Cancel -
-
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/docs-links-urltest/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/docs-links-urltest/index.html deleted file mode 100644 index c7de6d6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/docs-links-urltest/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - jQuery Mobile Framework - Test URL Example - - - - - - - - - - -
-
-

URL Test Page

-
-
-

This is a regular page that updated the url with a different value than was requested.

-
-
- - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/animals.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/animals.html deleted file mode 100644 index dcb43be..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/animals.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -Animals - - - - - - - - -
-

Animals

-
-

All your favorites from aardvarks to zebras.

-
    -
  • Pets
  • -
  • Farm Animals
  • -
  • Wild Animals
  • -
-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/category.php b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/category.php deleted file mode 100644 index c0d1be1..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/category.php +++ /dev/null @@ -1,150 +0,0 @@ - array( - name => "Animals", - description => "All your favorites from aardvarks to zebras.", - items => array( - array( - name => "Pets", - ), - array( - name => "Farm Animals", - ), - array( - name => "Wild Animals", - ) - ) - ), - colors => array( - name => "Colors", - description => "Fresh colors from the magic rainbow.", - items => array( - array( - name => "Blue", - ), - array( - name => "Green", - ), - array( - name => "Orange", - ), - array( - name => "Purple", - ), - array( - name => "Red", - ), - array( - name => "Yellow", - ), - array( - name => "Violet", - ) - ) - ), - vehicles => array( - name => "Vehicles", - description => "Everything from cars to planes.", - items => array( - array( - name => "Cars", - ), - array( - name => "Planes", - ), - array( - name => "Construction", - ) - ) - ) -); - -// Get the name of the category to display from -// the query params for the script. - -$category_name = ''; -if ( $_GET[ 'id' ] ) { - $category_name = $_GET[ 'id' ]; -} - -// Now get the category data, by name, from our in-memory -// dictionary. This is the part where a script normally fetches -// the data from a database. - -$category_obj = $category_data[ $category_name ]; - -// Now figure out how the script is being called. If it's being -// called via XmlHttpRequest, then send the data back as JSON. -// If not, then send it back as a list in an HTML document. - -if( $_SERVER[ "HTTP_X_REQUESTED_WITH" ] && $_SERVER[ "HTTP_X_REQUESTED_WITH" ] ==="XMLHttpRequest" ) { - // Data should be written out as JSON. - header("Content-type: application/json"); - if ( !$category_obj ) { - echo 'null'; - } else { - echo '{"name":"' . $category_obj[ 'name' ] - . '","description":"' . $category_obj[ 'description' ] - . '","items":['; - - $arr = $category_obj[ 'items' ]; - $count = count($arr); - for ( $i = 0; $i < $count; $i++ ) { - if ( $i ) { - echo ","; - } - echo '{"name":"' . $arr[ $i ][ 'name' ] . '"}'; - } - echo "]}"; - } -} else { - // Data should be written out as HTML. - header("Content-type: text/html"); -?> - - - - - -Vehicles - - - - - -
-

-
- -

No matches found.

- -

-
    -" . $arr[ $i ][ 'name' ] . "\n"; - } -?> -
- -
-
- - - - - - - -Colors - - - - - - - - -
-

Colors

-
-

Fresh colors from the magic rainbow.

-
    -
  • Blue
  • -
  • Green
  • -
  • Orange
  • -
  • Purple
  • -
  • Red
  • -
  • Yellow
  • -
  • Violet
  • -
-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/index.html deleted file mode 100644 index 0d6328c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -Dynamic Page Samples - - - - - - - - -
-

Categories

- -
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page-external.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page-external.html deleted file mode 100644 index 21443ec..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page-external.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - -changePage JSON Sample - - - - - - - - - -
-

Categories

-
-

Select a Category Below:

- -
-
-
-

-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page.html deleted file mode 100644 index 9d26bbb..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/sample-reuse-page.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - -changePage JSON Sample - - - - - - - - -
-

Categories

-
-

Select a Category Below:

- -
- -
-
-

-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/vehicles.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/vehicles.html deleted file mode 100644 index 923c9c3..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/dynamic-samples/vehicles.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -Vehicles - - - - - - - - -
-

Vehicles

-
-

Everything from cars to planes.

-
    -
  • Cars
  • -
  • Planes
  • -
  • Destruction
  • -
-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/index.html deleted file mode 100644 index f26b965..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - jQuery Mobile Docs - Pages - - - - - - - - - - -
- -
-

Pages

- Home - Search -
- -
- -

jQuery Mobile includes automatic AJAX page loading of external pages with back button history support, a set of animated page transitions and simple tools for displaying pages as dialogs.

- - - - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/multipage-template.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/multipage-template.html deleted file mode 100644 index acd9643..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/multipage-template.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - Multi-page template - - - - - - - - - -
- -
-

Multi-page

-
- -
-

One

- -

I have an id of "one" on my page container. I'm first in the source order so I'm shown when the page loads.

- -

This is a multi-page boilerplate template that you can copy to build your first jQuery Mobile page. This template contains multiple "page" containers inside, unlike a single page template that has just one page within it.

-

Just view the source and copy the code to get started. All the CSS and JS is linked to the jQuery CDN versions so this is super easy to set up. Remember to include a meta viewport tag in the head to set the zoom level.

-

You link to internal pages by referring to the ID of the page you want to show. For example, to link to the page with an ID of "two", my link would have a href="#two" in the code.

- -

Show internal pages:

-

Show page "two"

-

Show page "popup" (as a dialog)

-
- -
-

Page Footer

-
-
- - - -
- -
-

Two

-
- -
-

Two

-

I have an id of "two" on my page container. I'm the second page container in this multi-page template.

-

Notice that the theme is different for this page because we've added a few data-theme swatch assigments here to show off how flexible it is. You can add any content or widget to these pages, but we're keeping these simple.

-

Back to page "one"

- -
- -
-

Page Footer

-
-
- - - - - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-anatomy.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-anatomy.html deleted file mode 100644 index cea0830..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-anatomy.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - jQuery Mobile Docs - Anatomy of a Page - - - - - - - - - - -
- -
-

Anatomy of a Page

- Home - Search -
- -
-
-

The jQuery Mobile "page" structure is optimized to support either single pages, or local internal linked "pages" within a page.

- -

The goal of this model is to allow developers to create websites using best practices — where ordinary links will "just work" without any special configuration — while creating a rich, native-like experience that can't be achieved with standard HTTP requests.

- -

Mobile page structure

- -

A jQuery Mobile site must start with an HTML5 'doctype' to take full advantage of all of the framework's features. (Older devices with browsers that don't understand HTML5 will safely ignore the 'doctype' and various custom attributes.)

-

In the 'head', references to jQuery, jQuery Mobile and the mobile theme CSS are all required to start things off. jQuery Mobile 1.1 works with both 1.6.4 and 1.7.1 versions of jQuery core. We recommend linking to the files hosted on the jQuery CDN for best performance:

- -

-<!DOCTYPE html> 
-<html> 
-	<head> 
-	<title>Page Title</title> 
-	
-	<meta name="viewport" content="width=device-width, initial-scale=1"> 
-
-	<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
-	<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
-	<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
-</head> 
-
-<body> 
-...content goes here...
-</body>
-</html>
-
- -

Viewport meta tag

-

Note above that there is a meta viewport tag in the head to specify how the browser should display the page zoom level and dimensions. If this isn't set, many mobile browsers will use a "virtual" page width around 900 pixels to make it work well with existing desktop sites but the screens may look zoomed out and too wide. By setting the viewport attributes to content="width=device-width, initial-scale=1", the width will be set to the pixel width of the device screen.

- -
<meta name="viewport" content="width=device-width, initial-scale=1"> 
- -

These settings do not disable the user's ability to zoom the pages, which is nice from an accessibility perspective. There is a minor issue in iOS that doesn't properly set the width when changing orientations with these viewport settings, but this will hopefully be fixed in a future release. You can set other viewport values to disable zooming if required since this is part of your page content, not the library.

- -

Inside the body: Pages

-

Inside the <body> tag, each view or "page" on the mobile device is identified with an element (usually a div) with the data-role="page" attribute. View the data- attribute reference to see all the possible attributes you can add to pages.

- -
-
<div data-role="page"> 
-	...
-</div> 
-
-
- -

Within the "page" container, any valid HTML markup can be used, but for typical pages in jQuery Mobile, the immediate children of a "page" are divs with data-roles of "header", "content", and "footer".

- -
-
<div data-role="page"> 
-	<div data-role="header">...</div> 
-	<div data-role="content">...</div> 
-	<div data-role="footer">...</div> 
-</div> 
-
-
- - -

Putting it together: Basic single page template

- -

Putting it all together, this is the standard boilerplate page template you should start with on a project:

- -

-<!DOCTYPE html> 
-<html> 
-	<head> 
-	<title>Page Title</title> 
-	
-	<meta name="viewport" content="width=device-width, initial-scale=1"> 
-
-	<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
-	<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
-	<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
-</head> 
-<body> 
-
-<div data-role="page">
-
-	<div data-role="header">
-		<h1>Page Title</h1>
-	</div><!-- /header -->
-
-	<div data-role="content">	
-		<p>Page content goes here.</p>		
-	</div><!-- /content -->
-
-	<div data-role="footer">
-		<h4>Page Footer</h4>
-	</div><!-- /footer -->
-</div><!-- /page -->
-
-</body>
-</html>
-
- - View boilerplate template - - -

Multi-page template structure

- -

A single HTML document can contain multiple 'pages' that are loaded together by stacking multiple divs with a data-role of "page". Each 'page' block needs a unique ID (id="foo") that will be used to link internally between 'pages' (href="#foo"). When a link is clicked, the framework will look for an internal 'page' with the ID and transition it into view.

- -

Here is an example of a 2 "page" site built with two jQuery Mobile divs navigated by linking to an ID placed on each page wrapper. Note that the IDs on the page wrappers are only needed to support the internal page linking, and are optional if each page is a separate HTML document. Here is what two pages look inside the body element.

- -

-<body> 
-
-<!-- Start of first page -->
-<div data-role="page" id="foo">
-
-	<div data-role="header">
-		<h1>Foo</h1>
-	</div><!-- /header -->
-
-	<div data-role="content">	
-		<p>I'm first in the source order so I'm shown as the page.</p>		
-		<p>View internal page called <a href="#bar">bar</a></p>	
-	</div><!-- /content -->
-
-	<div data-role="footer">
-		<h4>Page Footer</h4>
-	</div><!-- /footer -->
-</div><!-- /page -->
-
-
-<!-- Start of second page -->
-<div data-role="page" id="bar">
-
-	<div data-role="header">
-		<h1>Bar</h1>
-	</div><!-- /header -->
-
-	<div data-role="content">	
-		<p>I'm the second in the source order so I'm hidden when the page loads. I'm just shown if a link that references my ID is beeing clicked.</p>		
-		<p><a href="#foo">Back to foo</a></p>	
-	</div><!-- /content -->
-
-	<div data-role="footer">
-		<h4>Page Footer</h4>
-	</div><!-- /footer -->
-</div><!-- /page -->
-</body>
-
- - View multi-page template - -

- -

PLEASE NOTE: Since we are using the hash to track navigation history for all the Ajax 'pages', it's not currently possible to deep link to an anchor (index.html#foo) on a page in jQuery Mobile, because the framework will look for a 'page' with an ID of #foo instead of the native behavior of scrolling to the content with that ID.

- - -

Conventions, not requirements

- -

Although the page structure outlined above is a recommended approach for a standard web app built with jQuery Mobile, the framework is very flexible with document structure. The page, header, content, and footer data-role elements are optional and are mostly helpful for providing some basic formatting and structure. The page wrapper that used to be required for auto-initialization to work is now optional for single page documents, so there isn't any required markup at all. For a web page with a custom layout, all of these structural elements can be omitted and the Ajax navigation and all widgets will work just like they do in the boilerplate structure. Behind the scenes, the framework will inject the page wrapper if it's not included in the markup because it’s needed for managing pages, but the starting markup can now be extremely simple.

- -

Note that in a multi-page setup, you are required to have page wrappers in your markup in order to group the content into multiple pages.

- - - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-cache.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-cache.html deleted file mode 100644 index cc2c333..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-cache.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - jQuery Mobile Docs - Prefetching & caching pages - - - - - - - - - - -
- -
-

Prefetching & caching pages

- Home - Search -
- -
-
- - -

Prefetching pages

- -

Usually, it's a good idea to store your app's pages in several single-page templates instead of one large multi-page template. This minimizes the size of the page's DOM.

- -

When using single-page templates, you can prefetch pages into the DOM so that they're available instantly when the user visits them. To prefetch a page, add the data-prefetch attribute to a link that points to the page. jQuery Mobile then loads the target page in the background after the primary page has loaded and the pagecreate event has triggered. For example:

- -

-<a href="prefetchThisPage.html" data-prefetch> ... </a>
-
- -

You can prefetch as many linked pages as you like. Just add data-prefetch to all the links you want to prefetch.

- -

Alternatively, you can prefetch a page programmatically using $.mobile.loadPage():

- -

-$.mobile.loadPage( pageUrl, { showLoadMsg: false } );
-
- -

Another advantage of prefetching a page is that the user doesn't see the Ajax loading message when visiting the prefetched page. The Ajax loading message only appears if the framework hasn't finished prefetching the page by the time the link is followed.

- -

Prefetching pages naturally creates additional HTTP requests and uses bandwidth, so it's wise to use this feature only in situations where it's highly likely that the prefetched page will be visited. A common scenario is a photo gallery, where you can prefetch the "previous" and "next" photo pages so that the user can move quickly between photos.

- - -

DOM size management

- -

For animated page transitions to work, the pages you're transitioning from and to both need to be in the DOM. However, keeping old pages in the DOM quickly fills the browser's memory, and can cause some mobile browsers to slow down or even crash.

- -

jQuery Mobile therefore has a simple mechanism to keep the DOM tidy. Whenever it loads a page via Ajax, jQuery Mobile flags the page to be removed from the DOM when you navigate away from it later (technically, on the pagehide event). If you revisit a removed page, the browser may be able to retrieve the page's HTML file from its cache. If not, it refetches the file from the server. (In the case of nested list views, jQuery Mobile removes all the pages that make up the nested list once you navigate to a page that's not part of the list.)

- -

Pages inside a multi-page template aren't affected by this feature at all - jQuery Mobile only removes pages loaded via Ajax.

- - -

Caching pages in the DOM

- -

If you prefer, you can tell jQuery Mobile to keep previously-visited pages in the DOM instead of removing them. This lets you cache pages so that they're available instantly if the user returns to them.

- -

To keep all previously-visited pages in the DOM, set the domCache option on the page plugin to true, like this:

- -

-$.mobile.page.prototype.options.domCache = true;
-
- -

Alternatively, to cache just a particular page, you can add the data-dom-cache="true" attribute to the page's container:

- -

-<div data-role="page" id="cacheMe" data-dom-cache="true">
-
- -

You can also cache a page programmatically like this:

- -

-pageContainerElement.page({ domCache: true });
-
- -

The drawback of DOM caching is that the DOM can get very large, resulting in slowdowns and memory issues on some devices. If you enable DOM caching, take care to manage the DOM yourself and test thoroughly on a range of devices.

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-customtransitions.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-customtransitions.html deleted file mode 100644 index a26f396..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-customtransitions.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - jQuery Mobile Docs - Transitions - - - - - - - - - - -
- -
-

Transitions

- Home - Search -
- -
-
- -

Creating custom CSS-based transitions

- - -

To create a custom CSS transition, select a class name that corresponds to the name of your transition, for example "slide", and then define your "in" and "out" CSS rules to take advantage of transitions or animation keyframes:

- -

-		.slide.in {
-		 	-webkit-transform: translateX(0);
-			-moz-transform: translateX(0);
-			-webkit-animation-name: slideinfromright;
-			-moz-animation-name: slideinfromright;
-		}
-			
-		.slide.out {
-			-webkit-transform: translateX(-100%);
-			-moz-transform: translateX(-100%);
-			-webkit-animation-name: slideouttoleft;
-			-moz-animation-name: slideouttoleft;
-		}
-
-		@-webkit-keyframes slideinfromright {
-			from { -webkit-transform: translateX(100%); }
-			to { -webkit-transform: translateX(0); }
-		}
-		
-		@-webkit-keyframes slideouttoleft {
-			from { -webkit-transform: translateX(0); }
-			to { -webkit-transform: translateX(-100%); }
-		}
-	
-		@-moz-keyframes slideinfromright {
-			from { -moz-transform: translateX(100%); }
-			to { -moz-transform: translateX(0); }
-		}
-		
-		@-moz-keyframes slideouttoleft {
-			from { -moz-transform: translateX(0); }
-			to { -moz-transform: translateX(-100%); }
-		}
-		
-				
- -

During a CSS-based page transition, jQuery Mobile will place the class name of the transition on both the "from" and "to" pages involved in the transition. It then places an "out" class on the "from" page, and "in" class on the "to" page. The presence of these classes on the "from" and "to" page elements then triggers the animation CSS rules defined above. As of jQuery Mobile version 1.1, animation class additions are queued, rather than simultaneous, producing an out-then-in sequence, which is friendlier for mobile rendering than our previous simultaneous transition sequence.

- -

If your transition supports a reverse direction, you need to create CSS rules that use the reverse class in addition to the transition class name and the "in" and "out" classes:

- -

-		.slide.in.reverse {
-			-webkit-transform: translateX(0);
-			-moz-transform: translateX(0);
-			-webkit-animation-name: slideinfromleft;
-			-moz-animation-name: slideinfromleft;
-		}
-
-		.slide.out.reverse {
-			-webkit-transform: translateX(100%);
-			-moz-transform: translateX(100%);
-			-webkit-animation-name: slideouttoright;
-			-moz-animation-name: slideouttoright;
-		}
-
-		@-webkit-keyframes slideinfromleft {
-			from { -webkit-transform: translateX(-100%); }
-			to { -webkit-transform: translateX(0); }
-		}
-
-		@-webkit-keyframes slideouttoright {
-			from { -webkit-transform: translateX(0); }
-			to { -webkit-transform: translateX(100%); }
-		}
-		
-		@-moz-keyframes slideinfromleft {
-			from { -moz-transform: translateX(-100%); }
-			to { -moz-transform: translateX(0); }
-		}
-
-		@-moz-keyframes slideouttoright {
-			from { -moz-transform: translateX(0); }
-			to { -moz-transform: translateX(100%); }
-		}
-		
-				
- -

After the CSS rules are in place, you simply specify the name of your transition within the @data-transition attribute of a navigation link:

- -
<a href="#page2" data-transition="slide">Page 2</a>
-				
- -

When the user clicks on the navigation link, jQuery Mobile will invoke your transition when it navigates to the page mentioned within the link.

- -

In case you were wondering why none of the CSS rules above specified any easing or duration, it's because the CSS for jQuery Mobile defines the default easing and duration in the following rules:

- -

-		.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: 225;
-		}
-				
- -

If you need to specify a different easing or duration, simply add the appropriate CSS3 property to your custom page transition rules.

- - -

Creating custom JavaScript-based transitions

- -

When a user clicks on a link within a page, jQuery Mobile checks if the link specifies a @data-transition attribute. The value of this attribute is the name of the transition to use when displaying the page referred to by the link. If there is no @data-transition attribute, the transition name specified by the configuration option $.mobile.defaultPageTransition is used for pages, and $.mobile.defaultDialogTransition is used for dialogs.

- -

After the new page is loaded, the $.mobile.transitionHandlers dictionary is used to see if any transition handler function is registered for the given transition name. If a handler is found, that handler is invoked to start and manage the transition. If no handler is found the handler specified by the configuration option $.mobile.defaultTransitionHandler is invoked.

- -

By default, the $.mobile.transitionHandlers dictionary is only populated with a single handler entry called "default". This handler plays a dual purpose of either executing a "none" transition, which removes the "ui-page-active" class from the page we are transitioning "from", and places it on the page we are transitioning "to", or a Queued CSS3 Animated Transition, such as the one explained above. If the transition is "none", it will be instantaneous; no animation, no fanfare.

- -

The $.mobile.defaultTransitionHandler points to a handler function that assumes the name is a CSS class name, and implements the "Pure CSS3 Based Transitions" section above.

- -

The default transition handler is available on the $.mobile namespace:

- -

-$.mobile.transitionHandlers[ "default" ];
-		
- -

Transition Handlers

- -

A transition handler is a function with the following call signature:

- -

-function myTransitionHandler(name, reverse, $to, $from)
-{
-    var deferred = new $.Deferred();
-
-    // Perform any actions or set-up necessary to kick-off
-    // your transition here. The only requirement is that
-    // whenever the transition completes, your code calls
-    // deferred.resolve(name, reverse, $to, $from).
-
-    // Return a promise.
-    return deferred.promise();
-}
-		
- -

Your handler must create a Deferred object and return a promise to the caller. The promise is used to communicate to the caller when your transition is actually complete. It is up to you to call deferred.resolve() at the correct time. If you are new to Deferred objects, you can find documentation here.

- -

Registering and Invoking Your Transition Handler

- -

Once you have created a transition handler function, you need to tell jQuery Mobile about it. To do this, simply add your handler to the $.mobile.transitionHandlers dictionary. Remember, the key used should be the name of your transition. This name is also the same name that will be used within the @data-transition attribute of any navigation links.

- -

-// Define your transition handler:
-
-function myTransitionHandler(name, reverse, $to, $from)
-{
-    var deferred = new $.Deferred();
-
-    // Perform any actions or set-up necessary to kick-off
-    // your transition here. The only requirement is that
-    // whenever the transition completes, your code calls
-    // deferred.resolve(name, reverse, $to, $from).
-
-    // Return a promise.
-    return deferred.promise();
-}
-
-// Register it with jQuery Mobile:
-
-$.mobile.transitionHandlers["myTransition"] = myTransitionHandler;
-		
- -

Once you've registered your handler, you can invoke your transition by placing a data-transition attribute on a link:

- -
<a href="#page2" data-transition="myTransition">Page 2</a>
-		
- -

When the user clicks the link above, your transition handler will be invoked after the page is loaded and it is ready to be shown.

- -

Overriding a CSS Transition With Your Own Handler

- -

As previously mentioned the default transition handler assumes that any transition name other than "none" is a CSS class to be placed on the "from" and "to" elements to kick off a CSS3 animation. If you would like to override one of these built-in CSS transitions, you simply register your own handler with the same name as the CSS page transition you want to override. So for example, if I wanted to override the built-in "slide" CSS transition with my own JavaScript based transition, I would simply do the following:

- -
// Define your transition handler:
-
-function myTransitionHandler(name, reverse, $to, $from)
-{
-    var deferred = new $.Deferred();
-
-    // Perform any actions or set-up necessary to kick-off
-    // your transition here. The only requirement is that
-    // whenever the transition completes, your code calls
-    // deferred.resolve(name, reverse, $to, $from).
-
-    // Return a promise.
-    return deferred.promise();
-}
-
-// Register it with jQuery Mobile:
-
-$.mobile.transitionHandlers["slide"] = myTransitionHandler;
-		
- -

Once you do this, anytime the "slide" transition is invoked, your handler, instead of the default one, will be called to perform the transition.

- -

Overriding the Default Transition Handler

- -

The $.mobile.css3TransitionHandler function is the default transition handler that gets invoked when a transition name is used and not found in the $.mobile.transitionHandlers dictionary. If you want to install your own custom default handler, you simply set the $.mobile.defaultTransitionHandler to your handler:

- -
// Define your default transition handler:
-
-function myTransitionHandler(name, reverse, $to, $from)
-{
-    var deferred = new $.Deferred();
-
-    // Perform any actions or set-up necessary to kick-off
-    // your transition here. The only requirement is that
-    // whenever the transition completes, your code calls
-    // deferred.resolve(name, reverse, $to, $from).
-
-    // Return a promise.
-    return deferred.promise();
-}
-
-$.mobile.defaultTransitionHandler = myTransitionHandler;
-		
- -

Once you do this, your handler will be invoked any time a transition name is used but not found within the $.mobile.transitionHandlers dictionary.

- -

A model for Custom transition handler development

-

Transition handlers involve a number of critical operations, such as hiding any existing page, showing the new page, scrolling either to the top or a remembered scroll position on that new page, setting focus on the new page, and any animation and timing sequences you'd like to add. During development, we would recommend using jquery.mobile.transitions.js as a coding reference.

- -

Transitions and scroll position

-

One of the key things jQuery Mobile does is store your scroll position before starting a transition so it can restore you to the same place once you return to the page when hitting the Back button or closing a dialog. Here are the same buttons from the top to test the scrolling logic.

- - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dialogs.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dialogs.html deleted file mode 100644 index cf18675..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dialogs.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - jQuery Mobile Docs - Dialogs - - - - - - - - - - -
- -
-

Dialogs

- Home - Search -
- -
-
-

Creating dialogs

-

Any page can be presented as a modal dialog by adding the data-rel="dialog" attribute to the page anchor link. When the "dialog" attribute is applied, the framework adds styles to add rounded corners, margins around the page and a dark background to make the "dialog" appear to be suspended above the page.

- -

- - <a href="foo.html" data-rel="dialog">Open dialog</a> - -

- - Open dialog - - - -

Transitions

-

By default, the dialog will open with a 'pop' transition. Like all pages, you can specify any page transition you want on the dialog by adding the data-transition attribute to the link. To make it feel more dialog-like, we recommend specifying a transition of "pop", "slideup" or "flip".

- - -<a href="foo.html" data-rel="dialog" data-transition="pop">Open dialog</a> - - - - - -

Closing dialogs

-

When any link is clicked within in a dialog, the framework will automatically close the dialog and transition to the requested page, just as if the dialog were a normal page. To create a "cancel" button in a dialog, just link to the page that triggered the dialog to open and add the data-rel="back" attribute to your link. This pattern of linking to the previous page is also usable in non-JS devices as well.

-

For JavaScript-generated links, you can simply set the href attribute to "#" and use the data-rel="back" attribute. You can also call the dialog's close() method to programmatically close dialogs, for example: $('.ui-dialog').dialog('close').

- -

Setting the close button text

-

Just like the page plugin, you can set a dialog's close button text through an option or data attribute. The option can be configured for all dialogs by binding to the mobileinit event and setting the $.mobile.dialog.prototype.options.closeBtnText property to a string of your choosing, or you can place the data attribute data-close-btn-text to configure the text from your markup.

- -

History & Back button behavior

-

Since dialogs are typically used to support actions within a page, the framework does not include dialogs in the hash state history tracking. This means that dialogs will not appear in your browsing history chronology when the Back button is clicked. For example, if you are on a page, click a link to open a dialog, close the dialog, then navigate to another page, if you were to click the browser's Back button at that point you will navigate back to the first page, not the dialog.

- -

Styling & theming

-

Dialogs can be styled with different theme swatches, just like any page by adding data-theme attributes to the header, content, or footer containers. Here is an example of a different dialog design:

- An alternate color scheme - -

Dialogs appear to be floating above an overlay layer. This overlay adopts the swatch A content color by default, but the data-overlay-theme attribute can be added to the page wrapper to set the overlay to any swatch letter. Here is an example of a dialog with the overlay set to swatch e:

- Custom overlay swatch - - -

Dialogs can also be used more like a control sheet to offer multiple buttons if you simply remove the top margin from the dialog's inner container element. For example, if your dialog page had a class of my-dialog, you could add this CSS to pin that dialog to the top: .ui-dialog.my-dialog .ui-dialog-contain { margin-top: 0 }, or you could just apply that style to all dialogs with .ui-dialog .ui-dialog-contain { margin-top: 0 }.

- Share photos... - -

Dialog width and margins

-

For the sake of readability, dialogs have a default max-width of 500 pixels (plus 15px padding on each side). There is also a 10% top margin to give dialogs larger top margin on larger screens, but collapse to a small margin on smartphones. To override these styles, add the following CSS override rule to your stylesheet and tweak as needed:

- -
-.ui-dialog .ui-header, 
-.ui-dialog .ui-content, 
-.ui-dialog .ui-footer { 
-	max-width: 500px; 
-	margin: 10% auto 15px auto; 
-}
-
- - - - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dynamic.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dynamic.html deleted file mode 100644 index cc50f11..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-dynamic.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - jQuery Mobile Docs - Dynamically Injecting Pages - - - - - - - - - - -
- -
-

Dynamically Injecting Pages

- Home - Search -
- -
-
-

jQuery Mobile and Dynamic Page Generation

-

jQuery Mobile allows pages to be pulled into the DOM dynamically via its default click hijacking behavior, or through manual calls to $.mobile.changePage(). This is great for applications that generate HTML pages/fragments on the server-side, but there are sometimes cases where an application needs to dynamically generate page content on the client-side from JSON or some other format. This may be necessary for bandwidth/performance reasons, or because it is the data format of choice for the server they are interacting with.

-

For applications that need to generate page markup on the client-side, it's important to know about the notifications that are triggered during a $.mobile.changePage() call because they can be used as hooks into the navigation system that will allow you to generate your content at the appropriate time.

-

A call to changePage() will usually trigger the following event notifications:

-
    -
  • pagebeforechange -
      -
    • Fired off before any page loading or transition.
    • -
    • NOTE: This event was formerly known as "beforechangepage".
    • -
    -
  • -
  • pagechange -
      -
    • Fired off after all page loading and transitions.
    • -
    • NOTE: this event was formerly known as "changepage".
    • -
    -
  • -
  • pagechangefailed -
      -
    • Fired off if an error has occurred while attempting to dynamically load a new page.
    • -
    -
  • -
-

These notifications are triggered on the parent container element ($.mobile.pageContainer) of pages, and will bubble all the way up to the document element and window.

-

For applications wishing to inject pages, or radically modify the content of an existing page, based on some non-HTML data, such as JSON or in-memory JS object, the pagebeforechange event is very useful since it gives you a hook for analyzing the URL or page element the application is being asked to load or switch to, and short-circuit the default changePage() behavior by simply calling preventDefault() on the pagebeforechange event.

-

To illustrate this technique, take a look at this working sample. In this sample, the main page starts off with a list of categories that the user can navigate into. The actual items in each category are stored in a JavaScript object in memory, for illustrative purposes, but the data can really come from anywhere.

-

-var categoryData = {
-	animals: {
-		name: "Animals",
-		description: "All your favorites from aardvarks to zebras.",
-		items: [
-			{
-				name: "Pets"
-			},
-			{
-				name: "Farm Animals"
-			},
-			{
-				name: "Wild Animals"
-			}
-		]
-	},
-	colors: {
-		name: "Colors",
-		description: "Fresh colors from the magic rainbow.",
-		items: [
-			{
-				name: "Blue"
-			},
-			{
-				name: "Green"
-			},
-			{
-				name: "Orange"
-			},
-			{
-				name: "Purple"
-			},
-			{
-				name: "Red"
-			},
-			{
-				name: "Yellow"
-			},
-			{
-				name: "Violet"
-			}
-		]
-	},
-	vehicles: {
-		name: "Vehicles",
-		description: "Everything from cars to planes.",
-		items: [
-			{
-				name: "Cars"
-			},
-			{
-				name: "Planes"
-			},
-			{
-				name: "Construction"
-			}
-		]
-	}
-};
-
-

The application uses links with urls that contain a hash that tells the application what category items to display:

-
-
-  	<h2>Select a Category Below:</h2>
-  	<ul data-role="listview" data-inset="true">
-    	<li><a href="#category-items?category=animals">Animals</a></li>
-    	<li><a href="#category-items?category=colors">Colors</a></li>
-    	<li><a href="#category-items?category=vehicles">Vehicles</a></li>
-    </ul>
-
-
-

Internally, when the user clicks on one of these links, the application intercepts the internal $.mobile.changePage() call that is invoked by the frameworks' default link hijacking behavior. It then analyzes the URL for the page about to be loaded, and then decides whether or not it should handle the loading itself, or to let the normal changePage() code handle things.

-

The application was able to insert itself into the changePage() flow by binding to the pagebeforechange event at the document level:

-
-
-// Listen for any attempts to call changePage().
-$(document).bind( "pagebeforechange", function( e, data ) {
-
-	// We only want to handle changePage() calls where the caller is
-	// asking us to load a page by URL.
-	if ( typeof data.toPage === "string" ) {
-
-		// We are being asked to load a page by URL, but we only
-		// want to handle URLs that request the data for a specific
-		// category.
-		var u = $.mobile.path.parseUrl( data.toPage ),
-			re = /^#category-item/;
-
-		if ( u.hash.search(re) !== -1 ) {
-
-			// We're being asked to display the items for a specific category.
-			// Call our internal method that builds the content for the category
-			// on the fly based on our in-memory category data structure.
-			showCategory( u, data.options );
-
-			// Make sure to tell changePage() we've handled this call so it doesn't
-			// have to do anything.
-			e.preventDefault();
-		}
-	}
-});
-
-
-

So why listen at the document level? In short, because of deep-linking. We need our binding to be active before the jQuery Mobile framework initializes and decides how to process the initial URL that invoked the application.

-

When the callback for the pagebeforechange binding is invoked, the 2nd argument to the callback will be a data object that contains the arguments that were passed to the initial $.mobile.changePage() call. The properties of this object are as follows:

-
    -
  • toPage -
      -
    • Can be either a jQuery collection object containing the page to be transitioned to, OR a URL reference for a page to be loaded/transitioned to.
    • -
    -
  • -
  • options -
      -
    • Object containing the options that were passed in by the caller of the $.mobile.changePage() function.
    • -
    • A list of the options can be found here.
    • -
    -
  • -
-

For our sample application, we are only interested in changePage() calls where URLs are initially passed in, so the first thing our callback does is check the type for the toPage. Next, with the help of some URL parsing utilities, it checks to make sure if the URL contains a hash that we are interested in handling ourselves. If so, it then calls an application function called showCategory() which will dynamically create the content for the category specified by the URL hash, and then it calls preventDefault() on the event.

-

Calling preventDefault() on a pagebeforechange event causes the originating $.mobile.changePage() call to exit without performing any work. Calling the preventDefault() method on the event is the equivalent of telling jQuery Mobile that you have handled the changePage() request yourself.

-

If preventDefault() is not called, changePage() will continue on processing as it normally does. One thing to point out about the data object that is passed into our callback, is that any changes you make to the toPage property, or options properties, will affect changePage() processing if preventDefault() is not called. So for example, if we wanted to redirect or map a specific URL to another internal/external page, our callback could simply set the data.toPage property in the callback to the URL or DOM element of the page to redirect to. Likewise, we could set, or un-set any option from within our callback, and changePage() would use the new settings.

-

So now that we know how to intercept changePage() calls, let's take a closer look at how this sample actually generates the markup for a page. Our example actually uses, or we should say, re-uses the same page to display each of the categories. Each time one of our special links is clicked, the function showCategory() gets invoked:

-

-// Load the data for a specific category, based on
-// the URL passed in. Generate markup for the items in the
-// category, inject it into an embedded page, and then make
-// that page the current active page.
-function showCategory( urlObj, options )
-{
-	var categoryName = urlObj.hash.replace( /.*category=/, "" ),
-
-		// Get the object that represents the category we
-		// are interested in. Note, that at this point we could
-		// instead fire off an ajax request to fetch the data, but
-		// for the purposes of this sample, it's already in memory.
-		category = categoryData[ categoryName ],
-
-		// The pages we use to display our content are already in
-		// the DOM. The id of the page we are going to write our
-		// content into is specified in the hash before the '?'.
-		pageSelector = urlObj.hash.replace( /\?.*$/, "" );
-
-	if ( category ) {
-		// Get the page we are going to dump our content into.
-		var $page = $( pageSelector ),
-
-			// Get the header for the page.
-			$header = $page.children( ":jqmData(role=header)" ),
-
-			// Get the content area element for the page.
-			$content = $page.children( ":jqmData(role=content)" ),
-
-			// The markup we are going to inject into the content
-			// area of the page.
-			markup = "<p>" + category.description + "</p><ul data-role='listview' data-inset='true'>",
-
-			// The array of items for this category.
-			cItems = category.items,
-
-			// The number of items in the category.
-			numItems = cItems.length;
-
-		// Generate a list item for each item in the category
-		// and add it to our markup.
-		for ( var i = 0; i < numItems; i++ ) {
-			markup += "<li>" + cItems[i].name + "</li>";
-		}
-		markup += "</ul>";
-
-		// Find the h1 element in our header and inject the name of
-		// the category into it.
-		$header.find( "h1" ).html( category.name );
-
-		// Inject the category items markup into the content element.
-		$content.html( markup );
-
-		// Pages are lazily enhanced. We call page() on the page
-		// element to make sure it is always enhanced before we
-		// attempt to enhance the listview markup we just injected.
-		// Subsequent calls to page() are ignored since a page/widget
-		// can only be enhanced once.
-		$page.page();
-
-		// Enhance the listview we just injected.
-		$content.find( ":jqmData(role=listview)" ).listview();
-
-		// We don't want the data-url of the page we just modified
-		// to be the url that shows up in the browser's location field,
-		// so set the dataUrl option to the URL for the category
-		// we just loaded.
-		options.dataUrl = urlObj.href;
-
-		// Now call changePage() and tell it to switch to
-		// the page we just modified.
-		$.mobile.changePage( $page, options );
-	}
-}
-
-

In our sample app, the hash of the URL we handle contains 2 parts:

-

-#category-items?category=vehicles
-
-

The first part, before the '?' is actually the id of the page to write content into, the part after the '?' is info the app uses to figure out what data it should use when generating the markup for the page. The first thing showCategory() does is deconstruct this hash to extract out the id of the page to write content into, and the name of the category it should use to get the correct set of data from our in-memory JavaScript category object. After it figures out what category data to use, it then generates the markup for the category, and then injects it into the header and content area of the page, wiping out any other markup that previously existed in those elements.

-

After it injects the markup, it then calls the appropriate jQuery Mobile widget calls to enhance the list markup it just injected. This is what turns the normal list markup into a fully styled listview with all its behaviors.

-

Once that's done, it then calls $.mobile.changePage(), passing it the DOM element of the page we just modified, to tell the framework that it wants to show that page.

-

Now an interesting problem here is that jQuery Mobile typically updates the browser's location hash with the URL associated with the page it is showing. Because we are re-using the same page for each category, this wouldn't be ideal, because the URL for that page has no specific category info associated with it. To get around this problem, showCategory() simply sets the dataUrl property on the options object it passes into changePage() to tell it to display our original URL instead.

-

That's the sample in a nutshell. It should be noted that this particular sample and its usage is not a very good example of an app that degrades gracefully when JavaScript is turned off. That means it probably won't work very well on C-Grade browsers. We will be posting other examples that demonstrate how to degrade gracefully in the future. Check this page for updates.

-
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-links.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-links.html deleted file mode 100644 index 3d9c659..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-links.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - jQuery Mobile Docs - Linking Pages - - - - - - - - - - -
- -
-

Linking pages

- Home - Search -
- -
-
-

Linking pages

- -

jQuery Mobile is designed to work with simple page linking conventions. Essentially, you can link pages and assets as you normally would, and jQuery Mobile will automatically handle page requests in a single-page model, using Ajax when possible. When Ajax isn't possible (such as a non-same-domain url, or if specified using certain attributes on the link), a normal http request is used instead.

- -

The goal of this model is to allow developers to create websites using best practices — where ordinary links will "just work" without any special configuration — while creating a rich, native-like experience that can't be achieved with standard HTTP requests.

- -

Default link behavior: Ajax

- -

To enable animated page transitions, all links that point to an external page (ex. products.html) will be loaded via Ajax. To do this unobtrusively, the framework parses the link's href to formulate an Ajax request (Hijax) and displays the loading spinner. All this happens automatically by jQuery Mobile.

- -

If the Ajax request is successful, the new page content is added to the DOM, all mobile widgets are auto-initialized, then the new page is animated into view with a page transition.

- -

If the Ajax request fails, the framework will display a small error message overlay (styled in the "e" swatch) that disappears after a brief time so this doesn't break the navigation flow. View an example of the error message.

- -

Note: You cannot link to a multipage document with Ajax navigation active because the framework will only load the first page it finds, not the full set of internal pages. In these cases, you must link without Ajax (see next section) for a full page refresh to prevent potential hash collisions. There is currently a subpage plugin that makes it possible to load in multi-page documents.

- - -

Linking without Ajax

- -

Links that point to other domains or that have rel="external", data-ajax="false" or target attributes will not be loaded with Ajax. Instead, these links will cause a full page refresh with no animated transition. Both attributes (rel="external" and data-ajax="false") have the same effect, but a different semantic meaning: rel="external" should be used when linking to another site or domain, while data-ajax="false" is useful for simply opting a page within your domain from being loaded via Ajax. Because of security restrictions, the framework always opts links to external domains out of the Ajax behavior.

-

In version 1.1, we've added support for using data-ajax="false" on a parent container which allows you to excluded a large number of links from the Ajax navigation system. This avoids the need to add this attribute to every link in a container.

-

Note: When building a jQuery Mobile application where the Ajax navigation system is disabled globally or frequently disabled on individual links, we recommend disabling the $.mobile.pushStateEnabled global configuration option to avoid inconsistent navigation behavior in some browsers.

- - - -

Linking within a multi-page document

- -

A single HTML document can contain one or many 'page' containers simply by stacking multiple divs with a data-role of "page". This allows you to build a small site or application within a single HTML document; jQuery Mobile will simply display the first 'page' it finds in the source order when the page loads.

- -

If a link in a multi-page document points to an anchor (#foo), the framework will look for a page wrapper with that ID (id="foo"). If it finds a page in the HTML document, it will transition the new page into view. You can seamlessly navigate between local, internal "pages" and external pages in jQuery Mobile. Both will look the same to the end user except that external pages will display the Ajax spinner while loading. In either situation, jQuery Mobile updates the page's URL hash to enable Back button support, deep-linking and bookmarking.

- -

It's important to note that if you are linking from a mobile page that was loaded via Ajax to a page that contains multiple internal pages, you need to add a rel="external" or data-ajax="false" to the link. This tells the framework to do a full page reload to clear out the Ajax hash in the URL. This is critical because Ajax pages use the hash (#) to track the Ajax history, while multiple internal pages use the hash to indicate internal pages so there will be conflicts in the hash between these two modes.

- -

For example, a link to a page containing multiple internal pages would look like this:

- - <a href="multipage.html" rel="external">Multi-page link</a> - - - -

"Back" button links

-

If you use the attribute data-rel="back" on an anchor, any clicks on that anchor will mimic the back button, going back one history entry and ignoring the anchor's default href. This is particularly useful when generating "back" buttons with JavaScript, such as a button to close a dialog. - When using this feature in your source markup, although browsers that support this feature will not use the specified href attribute, be sure to still provide a meaningful value that actually points to the URL of the referring page to allow the feature to work for users in C-Grade browsers. If users can reach this page from more than one referring pages, specify a sensible href so that the navigation remains logical for all users. - Also, please keep in mind that if you just want a reverse transition without actually going back in history, you should use the data-direction="reverse" attribute instead. - Note: data-direction="reverse" is meant to simply run the backwards version of the transition that will run on that page change, while data-rel="back" makes the link functionally equivalent to the browser's back button and all the standard back button logic applies. Adding data-direction="reverse" to a link with data-rel="back" will not reverse the reversed page transition and produce the "normal" version of the transition. -

- - -

Redirects and linking to directories

- -

When linking to directory indexes (such as href="typesofcats/" instead of href="typesofcats/index.html"), you must provide a trailing slash. This is because jQuery Mobile assumes the section after the last "/" character in a url is a filename, and it will remove that section when creating base urls from which future pages will be referenced.

- -

However, you can work around this issue by returning your page div with a data-url attribute already specified. When you do this, jQuery Mobile will use that attribute's value for updating the URL, instead of the url used to request that page. This also allows you to return urls that change as the result of a redirect, for example, you might post a form to "/login.html" but return a page from the url "/account" after a successful submission. This tool allows you to take control of the jQuery Mobile history stack in these situations. Here's an example:

- -

The following link points to "docs-links-urltest/index.html": Test Link which is a directory with an index page. The return page will update the hash as "/docs/pages/docs-links-urltest/" with a trailing slash. This is done via the data-url attribute in that page's source. Keep in mind that the value will replace the entire hash, and it is up to you to replace it with a URL that actually resolves to the correct page when requested via refresh or deep link.

- -

Learn more about the technical details of the navigation model and Ajax, hashes and history in jQuery mobile.

- - - -

Link examples

-

All standard HTML link types are supported in jQuery Mobile in addition to the types outlined above. Here is a sampler of many common link types:

- - - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-navmodel.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-navmodel.html deleted file mode 100644 index 731d988..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-navmodel.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - jQuery Mobile Docs - Ajax, hashes & history - - - - - - - - - - -
- -
-

Ajax, hashes & history

- Home - Search -
- -
-
-

jQuery Mobile's navigation model

- -

A "page" in jQuery Mobile consists of an element (usually a div) with a data-role attribute set to "page", which generally contains div elements with roles of "header", "content", and "footer", each containing common markup, forms, and custom jQuery Mobile widgets.

- -

The basic workflow with page loading is as follows: first, a page is requested with a normal HTTP request, and subsequent "pages" are then requested and injected into that page's DOM. Because of this, the DOM may have a number of "pages" in it at a time, each of which can be re-visited by linking to its data-url attribute.

- -

When a url is initially requested, there may be one or more "pages" in the response, and only the first one will be shown. The advantage of storing more than one "page" is that it allows you to pre-fetch static pages that are likely to be visited.

- -

Hash and Ajax driven page navigation

- -

By default all navigation within jQuery Mobile is based on changes and updates to location.hash. Whenever possible, page changes will use a smooth transition between the current "page" and the next, whether it is either already present in the DOM, or is automatically loaded via Ajax.

- -

Hash values created by jQuery Mobile are normalized as full paths relative to the URL of the first "real" page that was loaded. The hash is always maintained as a valid URL, so any "page" in jQuery mobile can be bookmarked or referenced in a link. To retrieve a non-hash-based URL, simply remove the # from the address and refresh the page.

- -

In general, hash changes are created whenever a link is clicked in jQuery mobile. When a link is clicked, jQuery mobile will make sure that the link is referencing a local URL, and if so, it'll prevent the link's default click behavior from occurring and request the referenced url via Ajax instead. When the page returns successfully, it will set the location.hash to the new page's relative url.

- -

Hash changes that occur independently of a click, such as when a user clicks the back button, are handled through the hashchange event, which is bound to the window object using Ben Alman's hashchange special event plugin (included in jQuery Mobile). When a hash change occurs (and also when the first page loads), the hashchange event handler will send the location.hash to the $.mobile.changePage() function, which in turn either loads or reveals the referenced page.

- - -

Once the referenced page is present in the DOM, the $.mobile.changePage() function applies a transition between the current active page and the new page. Page transitions happen through adding and removing classes that apply CSS animations. For example, in a slide-left transition, the exiting page is given the classes "slideleft" and "out", and the entering page is given the classes "slideleft" and "in", as well as a class of "ui-page-active" to mark it as the new "active" page being viewed. When the animation is complete, the "in" and "out" classes are removed, and the exited page loses its "ui-page-active" class.

- -

pushState plugin

- -

There is an optional feature that converts the longer, hash-based URLs mentioned in the previous section into the full document path which is cleaner and makes the Ajax tracking transparent in the URL structure. This is built as an enhancement on top of the hash-based URL system for Ajax links. Note that despite the name, this feature technically converts hash-based urls by using history.replaceState (not history.pushState) in the current release because this works more reliably across our target platforms. For browsers that do not support history.replaceState, or if this feature is disabled, hash-based URLs will be used instead.

- -

Since the plugin initializes when the DOM is fully loaded you can enable and disable it manually by setting $.mobile.pushStateEnabled global configuration option to false anytime before document ready.

- -
-

Important: rel="external" and $.mobile.ajaxEnabled=false

-

Slightly different implementations of the replaceState API in various browsers can cause odd behavior in specific scenarios. For example, some browser implementations (including desktop browsers) implement the popstate event differently when linking externally and moving back to a page onto which state has already been pushed/replaced. When building a jQuery Mobile application where the ajax navigation is being explicitly disabled, either through the frequent use of rel="external" on links or by disabling Ajax navigation completely via the $.mobile.ajaxEnabled=false, we recommend disabling the pushState feature to fall back to the hash based navigation for more consistent behavior.

-
- -

changePage

- -

Within the framework, page changes - both for pages already in the DOM and for pages that need to be loaded via Ajax - use the $.mobile.changePage() function. $.mobile.changePage() contains all of the logic for finding pages to transition to and from, and how to handle various response conditions such as a page not found. $.mobile.changePage() can be called externally and accepts the following arguments (to, transition, back, changeHash). The to argument can accept either a string (such as a file url or local element's ID), an array (in which the first array item is any local page you'd like to transition from, and the second array item is the to page), or an object (with expected properties: url, type ("get" or "post"), and data (for serialized parameters)), the latter of which is useful for loading pages that expect form data. The transition argument accepts a string representing a named transition, such as "slide". The back argument accepts a boolean representing whether the transition should go forward or in reverse. Lastly, the changeHash argument accepts a boolean for whether you'd like the url to be updated upon a successful page change.

- -

The $.mobile.changePage() function is used in a number of places in jQuery Mobile. For example, when a link is clicked, its href attribute is normalized and then $.mobile.changePage() handles the rest. When forms are submitted, jQuery Mobile simply gathers a few of the form's attributes, serializes its data, and once again, $.mobile.changePage() is used to handle the submission and response. Also, links that create dialogs use $.mobile.changePage()to open a referenced page without updating the hash, which is useful for keeping dialogs out of history tracking.

- -

Base element

- -

Another key ingredient to jQuery Mobile's page navigation model is the base element, which is injected into the head and modified on every page change to ensure that any assets (images, CSS, JS, etc.) referenced on that page will be requested from a proper path. In browsers that don't support dynamic updates to the base element (such as Firefox 3.6), jQuery Mobile loops through all of the referenced assets on the page and prefixes their href and src attributes with the base path.

- - -

Developer explanation of base url management:

- -

jQuery Mobile manages http requests using a combination of generated absolute URL paths and manipulating a generated <base> element's href attribute. The combination of these two approaches allows us to create URLs that contain full path information for loading pages, and a base element to properly direct asset requests made by those loaded pages (such as images and stylesheets).

- -

TODO: update description of internal base and urlHistory objects

- -

Data-url storage

- -

The navigation model maintains a data-url attribute on all data-role="page" elements. This data-url attribute is used to track the origin of the page element. Pages embedded within the main application document all have their data-url parameter set to the ID of their element with data-role="page". The only exception to this is the first-page in the document. The first-page is special because it can be addressed by its id if it has one, or by the document or base URL (with no hash fragment).

- -

Pages that are external to the application document get pulled in dynamically via ajax, and their data-url is set to the site relative path to the external page. If you are running in an environment where loading an external page from a different domain is allowed, then the data-url is set to the absolute URL.

- -

Auto-generated pages and sub-hash urls

- -

Some plugins may choose to dynamically break a page's content into separate navigable pages, which can then be reached via deep links. One example of this would be the Listview plugin, which will break a nested UL (or OL) into separate pages, which are each given a data-url attribute so they can be linked to like any normal "page" in jQuery Mobile. However, in order to link to these pages, the page that generates them must first be requested from the server. To make this work, pages that are auto-generated by plugins use the following special data-url structure: - <div data-url="page.html&subpageidentifier">

- -

So, for example, a page generated by the listview plugin may have a data-url attribute like this: data-url="artists.html&ui-page=listview-1"

- -

When a page is requested, jQuery Mobile knows to split the URL at "&ui-page" and make an HTTP request to the portion of the URL before that key. In the case of the listview example mentioned above, the URL would look like this: http://example.com/artists.html&ui-page=listview-1 - ...and jQuery Mobile would request artists.html, which would then generate its sub-pages, creating the div with data-url="artists.html&ui-page=listview-1", which it will then display as the active page.

- -

Note that the data-url attribute of the element contains the full URL path, not just the portion after &ui-page=. This allows jQuery Mobile to use a single consistent mechanism that matches URLs to page data-url attributes.

- -

Cases when Ajax navigation will not be used

- -

Under certain conditions, normal http requests will be used instead of Ajax requests. One case where this is true is when linking to pages on external websites. You can also specify that a normal http request be made through the following link attributes:

- -
    -
  • rel=external

  • -
  • target (with any value, such as "_blank")

  • - -

Form submissions

- -

Form submissions are handled automatically through the navigation model as well. Visit the forms section for more information.

- -

Using the Application Cache

- -

When using the application cache with jQuery Mobile there is at least one important issue to consider. Some browsers, when making requests to the cache will report an http status of 0 on success. This causes jQuery Core's $.ajax to trigger error handlers. The suggested workaround for users leveraging the application cache is to use a jQuery ajax pre-filter. Something like the following (credit to jammus for the snippet):

- -

-
-$.ajaxPrefilter( function(options, originalOptions, jqXHR) {
-	if ( applicationCache &&
-		 applicationCache.status != applicationCache.UNCACHED &&
-		 applicationCache.status != applicationCache.OBSOLETE ) {
-		 // the important bit
-		 options.isLocal = true;
-	}
-});
-
-			
- -

Setting isLocal to true for your ajax requests will alert jQuery Core that it should handle the 0 return values differently. Local requests exhibit similar behavior (ie 0 statuses), and Core will then fall back to determining success based on the presence of content in the xhr responseText attribute.

- -

One important issue to note with the above is that it will set isLocal to true for all requests made via ajax regardless of whether they are in the manifest or not so long as the cache is valid. This works for now because Core only consults the isLocal value when the status is in fact 0 which doesn't affect uncached results. There is no long term guarantee that isLocal will remain isolated in its purpose for handling 0 status values. If that changes it may break your application.

- -

Known limitations

- -

The non-standard environment created by jQuery Mobile's page navigation model introduces some conditions of which you should be aware when building pages:

- -
    -
  • When linking to directories, without a filename url, (such as href="typesofcats/" instead of href="typesofcats/index.html"), you must provide a trailing slash. This is because jQuery Mobile assumes the section after the last "/" character in a url is a filename, and it will remove that section when creating base urls from which future pages will be referenced.

  • -
  • Documents loaded via Ajax will select the first page in the DOM of that document to be loaded as a JQM page element. As a result the developer must make sure to manage the ID attributes of the loaded page and child elements to prevent confusion when manipulating the DOM.

  • -
  • If you link to multipage document, you must use a data-ajax="false" attribute on the link to cause a full page refresh due to the limitation above where we only load the first page node in an Ajax request due to potential hash collisions. There is currently a subpage plugin that makes it possible to load in multi-page documents.

  • -
  • Any unique assets referenced by pages in a jQuery Mobile-driven site should be placed inside the "page" element (the element with a data-role attribute of "page"). For example, links to styles and scripts that are specific to a particular page can be referenced inside that div. However, a better approach is to use jQuery Mobile's page events to trigger specific scripting when certain pages load. Note: you can return a page from the server with a data-url already specified in the markup, and jQuery Mobile will use that for the hash update. This allows you to ensure directory paths resolve with a trailing slash and will therefore be used in the base url path for future requests.

  • -
  • Conversely, any non-unique assets (those used site-wide) should be referenced in the <head> section of an HTML document, or at the very least, outside of the "page" element, to prevent running scripts more than once.

  • -
  • The "ui-page" key name used in sub-hash url references can be set to any value you'd like, so as to blend into your URL structure. This value is stored in jQuery.mobile.subPageUrlKey.

  • -
  • When traveling back to a previously loaded jQuery Mobile document from an external or internal document with the push state plugin enabled, some browsers load and trigger the popstate event on the wrong document or for the wrong reasons (two edge cases recorded so far). If you are regularly linking to external documents and find the application behaving erratically try disabling pushstate support.

  • -
  • jQuery Mobile does not support query parameter passing to internal/embedded pages but there are two plugins that you can add to your project to support this feature. There is a lightweight page params plugin and a more fully featured jQuery Mobile router plugin for use with backbone.js or spine.js.

  • -
  • Since we use the URL hash to preserve Back button behavior, using page anchors to jump down to a position on the page isn't supported by using the traditional anchor link (#foo). Use the silentScroll method to scroll to a particular Y position without triggering scroll event listeners. You can pass in a yPos arguments to scroll to that Y location.

  • -
- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-scripting.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-scripting.html deleted file mode 100644 index fc07598..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-scripting.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - jQuery Mobile Docs - Scripting pages - - - - - - - - - - -
- -
-

Scripting pages

- Home - Search -
- -
-
-

Scripting pages in jQuery Mobile

-

Since jQuery Mobile uses an Ajax-powered navigation system, there are a few helpful things to know when writing scripts that manipulate your content. You can explore the mobile API in more detail by reading up on global configuration options, events, and methods or dig into the technical details of the Ajax navigation model.

- -

Scripts & styles in the head

- -

When the user clicks a link in a jQuery Mobile-driven site, the default behavior of the navigation system is to use that link's href to formulate an Ajax request (instead of allowing the browser's default link behavior of requesting that href with full page load). When that Ajax request goes out, the framework will receive its entire text content, but it will only inject the contents of the response's body element (or more specifically the data-role="page" element, if it's provided), meaning nothing in the head of the page will be used (with the exception of the page title, which is fetched specifically). Please note that script's loaded dynamically in this fashion do not guarantee a load order in the same way they would if the page was loaded via a normal http request.

- -

This means that any scripts and styles referenced the head of a page won't have any effect when a page is loaded via Ajax, but they will execute if the page is requested normally via HTTP. When scripting jQuery Mobile sites, both scenarios need to be considered. The reason that the head of a page is ignored when requested via Ajax is that the potential of re-executing the same JavaScript is very high (it's common to reference the same scripts in every page of a site). Due to the complexity of attempting to work around that issue, we leave the task of executing page-specific scripts to the developer, and assume head scripts are only expected to execute once per browsing session.

- -

The simplest approach when building a jQuery Mobile site is to reference the same set of stylesheets and scripts in the head of every page. If you need to load in specific scripts or styles for a particular page, we recommend binding logic to the pageInit event (details below) to run necessary code when a specific page is created (which can be determined by its id attribute, or a number of other ways). Following this approach will ensure that the code executes if the page is loaded directly or is pulled in and shown via Ajax.

- -

Another approach for page-specific scripting would be to include scripts at the end of the body element when no data-role=page element is defined, or inside the first data-role=page element. If you include your custom scripting this way, be aware that these scripts will execute when that page is loaded via Ajax or regular HTTP, so if these scripts are the same on every page, you'll likely run into problems. If you're including scripts this way, we'd recommend enclosing your page content in a data-role="page" element, and placing scripts that are referenced on every page outside of that element. Scripts that are unique to that page can be placed in that element, to ensure that they execute when the page is fetched via Ajax.

- -

pageinit = DOM ready

- -

One of the first things people learn in jQuery is to use the $(document).ready() function for executing DOM-specific code as soon as the DOM is ready (which often occurs long before the onload event). However, in jQuery Mobile site and apps, pages are requested and injected into the same DOM as the user navigates, so the DOM ready event is not as useful, as it only executes for the first page. To execute code whenever a new page is loaded and created in jQuery Mobile, you can bind to the pageinit event.

- -

The pageinit event is triggered on a page when it is initialized, right after initialization occurs. Most of jQuery Mobile's official widgets auto-initialize themselves based on this event, and you can set up your code to do the same.

-

-$( document ).delegate("#aboutPage", "pageinit", function() {
-  alert('A page with an ID of "aboutPage" was just created by jQuery Mobile!');
-});
-
- -

If you'd like to manipulate a page's contents before the pageinit event fires and widgets are auto-initialized, you can instead bind to the pagebeforecreate event:

- -

-$( document ).delegate("#aboutPage", "pagebeforecreate", function() {
-  alert('A page with an ID of "aboutPage" is about to be created by jQuery Mobile!');
-});
-
- -

Important note: pageCreate() vs pageInit()

-

Prior to Beta 2 the recommendation to users wishing to manipulate jQuery Mobile enhanced page and child widget markup was to bind to the pagecreate event. In Beta 2 an internal change was made to decouple each of the widgets by binding to the pagecreate event in place of direct calls to the widget methods. As a result, users binding to the pagecreate in mobileinit would find their binding executing before the markup had been enhanced by each of the plugins. In keeping with the lifecycle of the jQuery UI Widget Factory, the initialization method is invoked after the create method, so the pageinit event provides the correct timing for post enhancement manipulation of the DOM and/or Javascript objects. - - In short, if you were previously using pagecreate to manipulate the enhanced markup before the page was shown, it's very likely you'll want to migrate to 'pageinit'. -

- - -

Changing pages

-

If you want to change the current active page with JavaScript, you can use the changePage method. There are a lot of methods and properties that you can set when changing pages, but here are two simple examples:

-

-//transition to the "about us" page with a slideup transition
-$.mobile.changePage( "about/us.html", { transition: "slideup"} );
-
-//transition to the "search results" page, using data from a form with an ID of "search"" 	
-$.mobile.changePage( "searchresults.php", {
-	type: "post",
-	data: $("form#search").serialize()
-});
-
- -

Loading pages

-

To load an external page, enhance its content, and insert it into the DOM, use the loadPage method. There are a lot of methods and properties that you can set when loading pages, but here is a simple example:

-

-//load the "about us" page into the DOM
-$.mobile.loadPage( "about/us.html" );
-
- -

Enhancing new markup

-

The page plugin dispatches a pageInit event, which most widgets use to auto-initialize themselves. As long as a widget plugin script is referenced, it will automatically enhance any instances of the widgets it finds on the page.

-

However, if you generate new markup client-side or load in content via Ajax and inject it into a page, you can trigger the create event to handle the auto-initialization for all the plugins contained within the new markup. This can be triggered on any element (even the page div itself), saving you the task of manually initializing each plugin (listview button, select, etc.).

-

For example, if a block of HTML markup (say a login form) was loaded in through Ajax, trigger the create event to automatically transform all the widgets it contains (inputs and buttons in this case) into the enhanced versions. The code for this scenario would be:

-
$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );
-
- -

Create vs. refresh: An important distinction

-

Note that there is an important difference between the create event and refresh method that some widgets have. The create event is suited for enhancing raw markup that contains one or more widgets. The refresh method should be used on existing (already enhanced) widgets that have been manipulated programmatically and need the UI be updated to match.

- -

For example, if you had a page where you dynamically appended a new unordered list with data-role=listview attribute after page creation, triggering create on a parent element of that list would transform it into a listview styled widget. If more list items were then programmatically added, calling the listview’s refresh method would update just those new list items to the enhanced state and leave the existing list items untouched.

- - -

Scrolling to a position within a page

-

Since we use the URL hash to preserve Back button behavior, using page anchors to jump down to a position on the page isn't supported by using the traditional anchor link (#foo). Use the silentScroll method to scroll to a particular Y position without triggering scroll event listeners. You can pass in a yPos arguments to scroll to that Y location. For example:

-

-//scroll to Y 300px
-$.mobile.silentScroll(300);
-
- -

Binding to mouse and touch events

-

One inportant consideration in mobile is handling mouse and touch events. These events differ significantly across mobile platforms, but the common denominator is that click events will work everywhere, but usually after a significant delay of 500-700ms. This delay is necessary for the browser to wait for double tap, scroll and extended hold tap events to potentially occur. To avoid this delay, it's possible to bind to touch events (ex. touchstart) but the issue with this approach is that some mobile platforms (WP7, Blackberry) don't support touch. To compound this issue, some platforms will emit both touch and mouse events so if you bind to both types, duplicate events will be fired for a single interaction.

-

Our solution is to create a set of virtual events that normalize mouse and touch events. This allows 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. This still retains the order of event firing in the traditional mouse environment, should multiple handlers be registered on the same element for different events. The virtual mouse system exposes the following virtual events to jQuery bind methods: vmouseover, vmousedown, vmousemove, vmouseup, vclick, and vmousecancel

- - -

Passing parameters between pages

-

jQuery Mobile does not support query parameter passing to internal/embedded pages. For example, if the framework sees a link to "#somePage?someId=1" it interpret that as "#somePage" and navigate to the internal page div with an ID of somePage and apply a data-url of #somePage?someId=1 to that page container. Subsequent calls to other params such as "#somePage?someId=2" will find the same div because jQuery Mobile refers to the data-url on the div which is only set once and will remain at #somePage?someId=1.

- -

There are two plugins that you can add to your project if query parameters are needed between pages. There is a lightweight page params plugin and a more fully featured jQuery Mobile router plugin for use with backbone.js or spine.js.

- - - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-template.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-template.html deleted file mode 100644 index 88e15ec..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-template.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - Single page template - - - - - - - -
- -
-

Single page

-
- -
-

This is a single page boilerplate template that you can copy to build your first jQuery Mobile page. Each link or form from here will pull a new page in via Ajax to support the animated page transitions.

-

Just view the source and copy the code to get started. All the CSS and JS is linked to the jQuery CDN versions so this is super easy to set up. Remember to include a meta viewport tag in the head to set the zoom level.

-

This template is standard HTML document with a single "page" container inside, unlike a multi-page template that has multiple pages within it. We strongly recommend building your site or app as a series of separate pages like this because it's cleaner, more lightweight and works better without JavaScript.

-
- -
-

Footer content

-
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-titles.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-titles.html deleted file mode 100644 index 55f80b0..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-titles.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - jQuery Mobile Docs - Page titles - - - - - - - - - - -
- -
-

Page titles

- Home - Search -
- -
-
- -

Titles in Ajax navigation

- -

When you load the first page of a jQuery Mobile based site, then click a link or submit a form, Ajax is used to pull in the content of the requested page. Having both pages in the DOM is essential to enable the animated page transitions, but one downside of this approach is that the page title is always that of the first page, not the subsequent page you’re viewing.

-

To remedy this, jQuery Mobile automatically parses the title of the page pulled via Ajax and changes the title attribute of the parent document to match.

- -

Titles in multi-page templates

- -

On multi-page documents, we follow a similiar convention, but since all the pages share a common title, we have a data-title attribute that can be added to each page container within a multi-page template to manually define a title. The title of the HTML document will be automatically updated to match the data-title of the page currently in view.

- -

-<div data-role="page" id="foo" data-title="Page Foo">
-
-</div><!-- /page -->
-
- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-dialog.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-dialog.html deleted file mode 100644 index 366ad1a..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-dialog.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog - - - - - - - - - - -
- -
-

Dialog

-
- -
-

That was an animated page transition effect to a dialog that we added with a data-transition attribute on the link.

-

Since it uses CSS animations, this should be hardware accelerated on many devices. To see transitions, 3D transform support is required so if you only saw a fade transition that's the reason.

- - Take me back -
-
- -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-page.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-page.html deleted file mode 100644 index 90f1447..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions-page.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - jQuery Mobile Framework - Page - - - - - - - - - - - - -
-
-

Page

-
- -
-

That was an animated page transition effect to a page that we added with a data-transition attribute on the link. This uses a different background theme swatch to see how that looks with the transitions.

-

Since it uses CSS animations, this should be hardware accelerated on many devices. To see transitions, 3D transform support is required so if you only saw a fade transition that's the reason.

- -
-

Here's a few form elements

- -

These are here to see if this slows down rendering.

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - Take me back -
- -
-
- - -
-
-
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions.html deleted file mode 100644 index 1dc9efb..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/page-transitions.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - jQuery Mobile Docs - Transitions - - - - - - - - - - -
- -
-

Transitions

- Home - Search -
- -
-
-

Page transitions

- -

The jQuery Mobile framework includes a set of CSS-based transition effects that can be applied to any page link or form submission with Ajax navigation:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

fade

dialogpage

pop

dialogpage

flip

dialogpage

turn

dialogpage

flow

dialogpage

slidefade

dialogpage

slide

dialogpage

slideup

dialogpage

slidedown

dialogpage

none

dialogpage
- - -

Only seeing fade transitions? To view all transition types, you must be on a browser that supports 3D transforms. By default, devices that lack 3D support (such as Android 2.x) will fallback to "fade" for all transition types. This behavior is configurable (see below).

- -

Transitions were originally inspired by jQtouch They've since been rebuilt, but props to David Kaneda and Jonathan Stark for the initial guidance.

- -

Setting a transition on a link or form submit

-

By default, the framework applies a fade transition. To set a custom transition effect, add the data-transition attribute to the link.

- - -<a href="index.html" data-transition="pop">I'll pop</a> - - -

When the Back button is pressed, the framework will automatically apply the reverse version of the transition that was used to show the page. To specify that the reverse version of a transition should be used, add the data-direction="reverse" attribute to a link.

- -

Global configuration of transitions

- -

Set the defaultPageTransition global option if you'd prefer a different default transition. Dialogs have a different option called defaultDialogTransition that can also set configured.

- - -

Browser support and performance

-

All transitions are built with CSS keyframe animations and include both -webkit vendor prefixed rules for iOS, Blackberry, Android, Safari and Chrome browsers and -moz rules for Firefox browsers. Support for keyframe animations and transition smoothness is determined by the browser version and hardware and will safely fall back to no transition if animations aren't supported. To proactively exclude transition in situations with poor performance, we exclude browsers that lack 3D transforms and provide a fallback transition and apply a max width for when transitions are applied.

- -

Defining fallback transitions for non-3D support

-

By default, all transitions except fade require 3D transform support. Devices that lack 3D support will fall back to a fade transition, regardless of the transition specified. We do this to proactively exclude poorly-performing platforms like Android 2.x from advanced transitions and ensure they still have a smooth experience. Note that there are platforms such as Android 3.0 that technically support 3D transforms, but still have poor animation performance so this won't guarantee that every browser will be 100% flicker-free but we try to target this responsibly.

- -

The fallback transition for browsers that don't support 3D transforms can be configured for each transition type, but by default we specify "fade" as the fallback. For example, this will set the fallback transition for the slideout transition to "none":

- $.mobile.transitionFallbacks.slideout = "none" - -

Setting a max width for transitions

-

By default, transitions can be disabled (set to "none") when the window width is greater than a certain pixel width. This feature is useful because transitions can be distracting or perform poorly on larger screens. This value is configurable via the global option $.mobile.maxTransitionWidth, which defaults to false. The option accepts any number representing a pixel width or false value. If it's not false, the handler will use a "none" transition when the window width is wider than the specified value.

- - - - - -

Creating custom transitions

- -

jQuery Mobile allows for the addition of custom transitions to the $.mobile.transitionHandlers dictionary so you can expand the selection of transitions on your site or app. - - - - - -

- - - -
- - - -
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes.html deleted file mode 100644 index 01a966e..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Page Theming

- -

jQuery Mobile has a rich theming system that gives you full control of how pages are styled. There is detailed theming documentation within each page widget, but let's look at a few high-level examples of how theming is applied.

- -

The data-theme attribute can be applied to the header and footer containers to apply any of the lettered theme color swatches. While the data-theme attribute could be added to the content container, we recommend adding it instead to div or container that has been assigned the data-role="page" attribute to ensure that the background color is applied to the full page. When this is done, all widgets on the page will also inherit the theme specified in the page container. However, headers and footers will default to theme "a". If you want to have a page with, for example, only theme "b" for all its elements, including its header and footer, you will need to specify data-theme="b" to the page div as well as the header and footer divs.

- -

The default Theme mixes styles from multiple swatches to create visual texture and present the various elements in optimal contrast to one another:

- -
-

Default Theme

-
- -
-

Default Theme Content Header

-

This is the default content color swatch and a preview of a link.

- - Button -
- -

And each of the five "swatches" applies its style consistently across all page elements, as shown below:

- -

Swatch A

-
-

Header A

-
- - -
-

Header

-

This is content color swatch "A" and a preview of a link.

- Button -
- - -

Swatch B

-
-

Header B

-
-
-

Header

-

This is content color swatch "B" and a preview of a link.

- Button -
- -

Swatch C

-
-

Header C

-
-
-

Header

-

This is content color swatch "C" and a preview of a link.

- Button -
- -

Swatch D

-
-

Header D

-
-
-

Header

-

This is content color swatch "D" and a preview of a link.

- Button -
- -

Swatch E

-
-

Header E

-
-
-

Header

-

This is content color swatch "E" and a preview of a link.

- Button -
- -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-a.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-a.html deleted file mode 100644 index a826f28..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-a.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Theme A Sample Page

- -

This is an example of data-theme="a" applied to the same element as data-role="page", showing how the theme is inherited by widgets throughout the page.

- -
- - -
- -
- - -
- -
- - -
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -

Collapsible Sets

-
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm visible by default because I have the data-collapsed="false" attribute; to collapse me, either click my header or expand another header in my set.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
- -

Inset List

- - -
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-b.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-b.html deleted file mode 100644 index 988710b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-b.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Theme B Sample Page

- -

This is an example of data-theme="b" applied to the same element as data-role="page", showing how the theme is inherited by widgets throughout the page.

- -
- - -
- -
- - -
- -
- - -
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -

Collapsible Sets

-
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm visible by default because I have the data-collapsed="false" attribute; to collapse me, either click my header or expand another header in my set.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
- -

Inset List

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-c.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-c.html deleted file mode 100644 index eee652b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-c.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Theme C Sample Page

- -

This is an example of data-theme="c" applied to the same element as data-role="page", showing how the theme is inherited by widgets throughout the page.

- -
- - -
- -
- - -
- -
- - -
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -

Collapsible Sets

-
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm visible by default because I have the data-collapsed="false" attribute; to collapse me, either click my header or expand another header in my set.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
- -

Inset List

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-d.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-d.html deleted file mode 100644 index cf46a18..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-d.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Theme D Sample Page

- -

This is an example of data-theme="d" applied to the same element as data-role="page", showing how the theme is inherited by widgets throughout the page.

- -
- - -
- -
- - -
- -
- - -
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -

Collapsible Sets

-
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm visible by default because I have the data-collapsed="false" attribute; to collapse me, either click my header or expand another header in my set.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
- -

Inset List

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-e.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-e.html deleted file mode 100644 index 2a427dc..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/pages-themes/theme-e.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - jQuery Mobile Docs - Theming Pages - - - - - - - - - - -
- -
-

Theming pages

- Home - Search -
- -
-
- - - -

Theme E Sample Page

- -

This is an example of data-theme="e" applied to the same element as data-role="page", showing how the theme is inherited by widgets throughout the page.

- -
- - -
- -
- - -
- -
- - -
- -
-
- Font styling: - - - - - - - - -
-
- -
-
- Choose a pet: - - - - - - - - - - - -
-
- -
- - -
- -

Collapsible Sets

-
-
-

Section 1

-

I'm the collapsible content in a set so this feels like an accordion. I'm visible by default because I have the data-collapsed="false" attribute; to collapse me, either click my header or expand another header in my set.

-
-
-

Section 2

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
-

Section 3

-

I'm the collapsible content in a set so this feels like an accordion. I'm hidden by default because I have the "collapsed" state; you need to expand the header to see me.

- -
-
- -

Inset List

- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/phonegap.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/phonegap.html deleted file mode 100644 index 733340f..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/phonegap.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - jQuery Mobile Docs - Phonegap - - - - - - - - - - -
- -
-

PhoneGap apps

- Home - Search -
- -
-
- - -

Building PhoneGap apps with jQuery Mobile

- -

PhoneGap is an HTML5 app platform that allows developers to author native applications with web technologies and get access to APIs and app stores. Applications are built as normal HTML pages and packaged up to run as a native application within a UIWebView or WebView (a chromeless browser, referred to hereafter as a webview). Since PhoneGap is frequently used in conjunction with jQuery Mobile, we wanted to offer a few tips and recommendations to help you get staretd.

- -

The initial application document is loaded by the PhoneGap application by a local file:// URL. This means that if you want to pull in pages from your company's remote server (phone home) you will have to refer to them with absolute URLs to your server. Because your document originates from a file:// URL, loading pages or assets from your remote server is considered a cross-domain request that can be blocked in certain scenarios.

- -

Your ability to access cross-domain pages from within a Phone Gap jQuery Mobile application is controlled by two key things: $.support.cors and $.mobile.allowCrossDomainPages, and can also be influenced by the white list feature in later builds of PhoneGap.

- -

$.support.cors

- -

In jQuery core, there is a $.support.cors boolean that indicates whether or not jQuery thinks the browser supports the W3C "Cross-Origin Resource Sharing" feature to support cross-domain requests.

- -

Since jQuery Mobile relies on jQuery core's $.ajax() functionality, $.support.cors must be set to true to tell $.ajax to load cross-domain pages. We've heard reports that webviews on some platforms, like BlackBerry, support cross-domain loading, but that jQuery core incorrectly sets $.support.cors value to false which disables cross-domain $.ajax() requests and will cause the page or assets to fail to load.

- -

$.mobile.buttonMarkup.hoverDelay

- -

If you find that the button down/hover state (lists, buttons, links etc) feels sluggish the $.mobile.buttonMarkup.hoverDelay setting might be of use. It will decrease the time between the touch event and the application of the relevant class but will also result in a higher chance that the same class will be applied even when the user is scrolling (eg, over a long list of links).

- -

$.mobile.allowCrossDomainPages

- -

When jQuery Mobile attempts to load an external page, the request runs through $.mobile.loadPage(). This will only allow cross-domain requests if the $.mobile.allowCrossDomainPages configuration option is set to true. Because the jQuery Mobile framework tracks what page is being viewed within the browser's location hash, it is possible for a cross-site scripting (XSS) attack to occur if the XSS code in question can manipulate the hash and set it to a cross-domain URL of its choice. This is the main reason that the default setting for $.mobile.allowCrossDomainPages is set to false.

- -

So in PhoneGap apps that must "phone home" by loading assets off a remote server, both the $.support.cors AND $.mobile.allowCrossDomainPages must be set to true. The $.mobile.allowCrossDomainPages option must be set before any cross-domain request is made so we recommend wrapping this in a mobileinit handler:

- -
$( document ).bind( "mobileinit", function() {
-    // Make your jQuery Mobile framework configuration changes here!
-
-    $.mobile.allowCrossDomainPages = true;
-});
- -

PhoneGap White Listing

- -

PhoneGap 1.0 introduced the idea of white-listing servers that its internal webview is allowed to make cross-domain requests to. You can find info about it here on the PhoneGap wiki:

- -

However, not all platforms support this white-listing feature so check the PhoneGap documentation for details. Older versions of PhoneGap prior to 1.0 defaulted to allowing cross-domain requests to any server.

- -

Still having issues?

- -

Here are a few more tips that aren't specifically related to PhoneGap but are good to know:

- -

We recommend disabling the pushState feature for installed apps because there are edge cases where this feature can cause unexpected navigation behavior and since URLs aren't visible in a webview, it's not worth keeping this active in these situations.

- -

Android enforces a timeout when loading URLs in a webview which may be too short for your needs. You can change this timeout by editing a Java class generated by the Eclipse plugin for Android:

- - super.setIntegerProperty("loadUrlTimeoutValue", 60000); - - - -
- - - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/touchoverflow.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/touchoverflow.html deleted file mode 100644 index bcb09ad..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/touchoverflow.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - jQuery Mobile Docs - touchOverflow - - - - - - - - - - -
- -
-

touchOverflow

- Home - Search -
- -
-
- -
-

touchOverflowEnabled: Deprecated in 1.1.0

- -

Prior to jQuery Mobile 1.1, true fixed toolbar support was contingent on native browser support for the CSS property overflow-scrolling: touch, which is currently only supported in iOS5. As of version 1.1, jQuery Mobile no longer uses this CSS property at all. We've removed all internal usage of this property in the framework, but we've left it defined globally on the $.mobile object to reduce the risk that its removal will cause trouble with existing applications. This property is flagged for removal, so please update your code to no longer use it. The support test for this property, however, remains defined under $.support and we have no plans to remove that test at this time.

-
- -

touchOverflow: Improved page transitions and true fixed toolbars

- -

Currently, both the page you're viewing and the one you're navigating to are sitting next to each other in the viewport, which lets us leverage native scrolling for the broadest possible device support. The downside to this approach is that since both pages share the same viewport, when a page transition starts, we must first scroll to the top of the document, then start animating to ensure that the pages are lined up vertically. If you hit the Back button, we need to scroll up, transition, then restore the previous scroll position. Since mobile browsers are pretty slow, these scroll movements can detract from the flow of the experience.

- -

The way to really improve this situation is to have both pages in separate containers, each with its own internal scroll bar. The means no more scrolling the document or needing to restore scroll positions for a smoother experience. It also has the benefit of making fixed toolbars very easy to implement by simply placing them outside the containers with internal scrolling.

- -

How it works

- -

To leverage iOS5′s support for a touch-targeted version of overflow:auto which allows for internal scrolling regions with the native momentum scrolling, we've added a feature called touchOverflow that leverages these new CSS capabilities to enable us to bring both true “fixed” toolbars and super smooth transitions to iOS5, all by using web standards and very little additional code.

- -

A feature called touchOverflowEnabled is designed to leverage the upcoming wave of browsers that support overflow scrolling in CSS. Note that this feature is off by default to give us more time to test and debug this for best performance but we hope to turn it on by default at a later point. Here's how to enable this global option:

- -
<script>
-$(document).bind("mobileinit", function(){
-  $.mobile.touchOverflowEnabled = true;
-});
-</script>
- -

When this feature is activated, the framework looks for browser support for both the overflow: and -webkit-overflow-scrolling:touch CSS properties. In browsers that support both, it switches to a dual page container model with native overflow: scrolling within each, which brings true fixed toolbars smooth transitions. Coupled with iOS’s already excellent hardware-accelerated transitions, it's now possible to build interfaces that are very close to native performance.

- -

To demo this feature, check out this page in iOS5.

- -

A few downsides

- -

Nothing is perfect, especially a new feature, so there are a few downsides to keep in mind. When activating this feature:

- -
    -
  • Sometimes child elements like lists and forms wouldn't render when embedded in a page with overflow: in iOS5. This was a pretty random phenomenon but is not acceptable so we've added a translate-z CSS property which forces iOS to render the contents. The downside with this fix is that when a transform is applied, all elements are set to position:relative which can cause issues in your layout.
  • -
  • The -webkit-overflow-scrolling:touch property seems to disable the events to scroll you to the top of the page when the time is tapped in the status bar. We hope Apple fixes this because it's a very useful feature.
  • -
  • When overflow: and -webkit-overflow-scrolling:touch properties are set, iOS appears to ignore any overflow:hidden properties on the parent, which is the page in our case. So if you have an image or code block that is wider than the viewport, horizontal scrolling will be seen.
  • -
  • When this feature is active, we are disabling user zoom by manipulating the meta viewport tag because both the toolbars and page content can easily be zoomed to an odd size and it's very difficult to zoom back out. Even though we believe in allowing users to zoom the page, alleviating the usability concerns we have with fixed toolbars and overflow containers is more important.
  • -
  • Scroll position can be lost when going back to a page that has been re-loaded. If DOM caching is on, this shouldn't be as much of an issue.
  • -
  • This is still an experimental feature, so not all the kinks have been worked out yet. Use with caution and test thoroughly.
  • -
- - - -

Don’t other mobile platforms already support overflow?

-

Yes, but there’s a catch. Both Android Honeycomb and the Blackberry PlayBook support overflow: properties, but we found in testing that their implementation of overflow wasn't smooth enough, so pages would stutter and hang during scrolling, leading to an unusable experience. We're working with device makers to ensure that they are included when performance improves.

-

More importantly, targeting overflow correctly is a major issue. If we simply placed an overflow: auto CSS rule on the pages, other popular mobile platforms like older versions of Android and iOS would essentially just clip off the content and make it effectively inaccessible (yes, you can do a two-finger scroll gesture in iOS but nobody knows that). The smart thing about Apple’s implementation for iOS5 is that they added an additional CSS property -webkit-overflow-scrolling:touch that allows us to test for this touch scrolling property and, if supported, add in the overflow rules for just those browsers. This is the only safe way to target overflow without resorting to complex and unmaintainable user agent detection.

-

We will be working with device and browser makers to encourage support for both these CSS-based properties because we strongly believe that this a critical piece needed to build rich mobile web apps. The project will add any vendor-prefixed additions to touch scrolling property if, for example, Opera, Firefox or Microsoft added this support. Once people see how much better page transitions and fixed toolbars are on iOS5, we’re hoping this will be supported quickly by other browsers. JS-based scroller scripts may still have a place in this new world as a polyfill for browsers that don’t yet support these new CSS capabilities but we see this as a brief, interim tool in the evolution of the mobile web.

- - - -

Debugging touchOverflow

-

Generally touchOverflow is only enabled on devices that support touch-scrolling of overflow areas, not desktop browsers. This can make it difficult to debug problems with the touchOverflow feature. To enable touchOverflow on all browsers, use the following code: - -

<script>
-$(document).bind("mobileinit", function() {
-  $.support.touchOverflow = true;
-  $.mobile.touchOverflowEnabled = true;
-});
-</script>
- - -
- - - -
- - - -
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/transition-success.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/transition-success.html deleted file mode 100644 index bd24485..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/pages/transition-success.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - jQuery Mobile Framework - Dialog Example - - - - - - - - - - -
- -
-

Ta-da!

-
- -
-

That was an animated page transition effect that we added with a data-transition attribute on the link.

-

Since it uses CSS transforms, this should be hardware accelerated on many mobile devices.

-

What do you think?

- I like it -
-
- - - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-events.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-events.html deleted file mode 100644 index ee7a937..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-events.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
- -

Fixed toolbars

- Home - Search -
- -
-
-

Fixed toolbars

- - - -

The fixedtoolbar plugin has the following custom events:

- -
- -
create triggered when a fixed toolbar is created
-
- -

-$( ".selector" ).fixedtoolbar({
-   create: function(event, ui) { ... }
-});		
-						
-
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-a.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-a.html deleted file mode 100644 index 4d24c7b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-a.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
- -
-
-
-

2,146 Songs

-
-
- -
-
- -
-
-
- - -
-
- -
-
-
- -
- -
-
- - -
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-b.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-b.html deleted file mode 100644 index 5abfb9b..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-b.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
- - -
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-c.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-c.html deleted file mode 100644 index c99f666..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-c.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
- - -
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-d.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-d.html deleted file mode 100644 index 955f7a8..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-d.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
-
- Choose a pet: - - - - - - - - - - - -
-
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-e.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-e.html deleted file mode 100644 index 9608226..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-e.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
-
- Choose as many snacks as you'd like: - - - - - - - - - - - -
-
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-f.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-f.html deleted file mode 100644 index 433c967..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-f.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
- - -
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-g.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-g.html deleted file mode 100644 index ee8403e..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-g.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
- - -
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-h.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-h.html deleted file mode 100644 index 8a6e313..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms-h.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-
- Link - - - - -
-
- -
-
-

Forms in fixed toolbar demos

-

These pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons. -

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

-
- - - -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms.html deleted file mode 100644 index b6c3ddc..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-forms.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - - - -
- -
- - - - - - -

Fixed + Forms

-
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-methods.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-methods.html deleted file mode 100644 index 24fe5ec..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-methods.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
- -

Fixed toolbars

- Home - Search -
- -
-
-

Fixed toolbars

- - - - - - - - -

The fixedtoolbar plugin has the following methods:

- -
- -
show show the toolbar
-
-

-		    $("[data-position='fixed']").fixedtoolbar('show');
-		   				
- -
-

Note:Prior to version 1.1, the following syntax was used to show the toolbars, but it is no longer supported:

-

-$.mobile.fixedToolbars
-   .show(true);
-
- - -
- -
- -
hide hide the toolbar (if it's not a fullscreen toolbar, it'll toggle back to static positioning, which may or may not be hidden from view depending on scroll)
-
-

-$("[data-position='fixed']").fixedtoolbar('hide');
-		   				
-
- -
toggle calls either the show or the hide method, depending on whether the toolbar is visible.
-
-

-$("[data-position='fixed']").fixedtoolbar('toggle');
-		   				
-
- -
updatePagePadding update the padding (either top or bottom, depending on if the toolbar is a header or a footer) of the page element parent of the toolbar to match the height of the toolbar.
-
-

-$("[data-position='fixed']").fixedtoolbar('updatePagePadding');
-		   				
- -

There is also an updatelayout event that can be used to trigger the toolbars to re-position. Developers who are building dynamic applications that inject content into the current page can also manually trigger this updatelayout event to ensure components on the page update in response to the new content that was just added. This event is used internally in the collapsible and listview filter plugins and is powerful because it's not toolbar-specific -- any widget can be built to listen for the updatelayout event to update the widget in response.

-
- -
destroy destroy at fixedtoolbar (restore the element to its initial state)
-
-

-$("[data-position='fixed']").fixedtoolbar('destroy');
-		   				
-
- - -
- - - - - - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-options.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-options.html deleted file mode 100644 index c4a43da..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed-options.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
- -

Fixed toolbars

- Home - Search -
- -
-
-

Fixed toolbars

- - - -

The fixedtoolbar plugin has the following options:

- - -
- -
visibleOnPageShow boolean
-
-

default: true

-

This determines whether the toolbar is visible or not when its parent page is shown. This option is also exposed as a data attribute: data-visible-on-page-show="false"

-
$("[data-role=header]").fixedtoolbar({ visibleOnPageShow: false });
-
- -
disablePageZoom boolean
-
-

default: true

-

This determines whether user-scaling should be disabled on pages that contain fixed toolbars. This option is also exposed as a data attribute: data-disable-page-zoom="false"

-
$("[data-role=header]").fixedtoolbar({ disablePageZoom: false });
-
- -
transition string
-
-

default: "slide" (which ends up using slideup and slidedown)

-

The transition that should be used for showing and hiding a fixed toolbar. Possible values are "none", "fade", and "slide" (or you can write a CSS transition of your own and use that too). This option is also exposed as a data attribute: data-transition="fade"

-
$("[data-role=header]").fixedtoolbar({ transition: "fade" });
-
- -
fullscreen boolean
-
-

default: false

-

Fullscreen fixed toolbars sit on top of the content at all times when they are visible, and unlike regular fixed toolbars, fullscreen toolbars do not fall back to static positioning when toggled, instead they disappear from the screen entirely. Fullscreen toolbars are ideal for more immersive interfaces, like a photo viewer that is meant to fill the entire screen with the photo itself and no distractions. This page demonstrates toolbars that use the fullscreen option. This option is also exposed as a data attribute: data-fullscreen="true"

-
$("[data-role=header]").fixedtoolbar({ fullscreen: true });
- -

Note:While the data-attribute syntax for this option has not changed, it is now only supported on the toolbar element itself, and not the page element.

- -
- -
tapToggle boolean
-
-

default: true

-

Enable or disable the user's ability to toggle toolbar visibility with a tap on the screen (or a click, for mouse users). This option is also exposed as a data attribute: data-tap-toggle="true"

-
$("[data-role=header]").fixedtoolbar({ tapToggle: true });
- -
-

Note: This behavior was formerly configurable as follows, but as of version 1.1 this syntax is no longer supported: -

	
-$.mobile.fixedToolbars
-   .setTouchToggleEnabled(false);
-
- -
- -
- - - -
tapToggleBlacklist string
-
-

default: "a, .ui-header-fixed, .ui-footer-fixed"

-

A list of jQuery selectors that, when tapped, will not cause the toolbars to be toggled.

-
$("[data-role=header]").fixedtoolbar({ tapToggleBlacklist: "a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed" });
-
- -
hideDuringFocus string
-
-

default: "input, select, textarea"

-

A list of jQuery selectors that should cause the toolbars to hide while focused, except if they are in a fixed toolbar.

-
$("[data-role=header]").fixedtoolbar({ hideDuringFocus: "input, select, textarea" });
-
- - -
updatePagePadding boolean
-
-

default: true

-

Since toolbars can vary in height depending on the content they contain, this option automatically updates the padding on the page element to ensure that fixed toolbars have adequate space in the document when they are statically positioned, and when scrolled to the top or bottom of the page. When enabled, the padding updates during many operations, such as pageshow, during page transitions, and on resize and orientationchange. As an optimization, we would recommend that you consider disabling this option and adding a rule to your CSS to set the padding of the page div to match the EM height of your toolbars, such as .ui-page-header-fixed { padding-top: 4.5em; }. This option is also exposed as a data attribute: data-update-page-paddinge="false"

-
$("[data-role=header]").fixedtoolbar({ updatePagePadding: false });
-
- - -
supportBlacklist function
-
-

default: function that returns a boolean value

-

CSS position: fixed support is very difficult to test; in fact, at the time of version 1.1 release, there was no known way to reasonably test for fixed support without turning up false positives or negatives in certain popular browsers. This option is a function that attempts to opt-out some popular platforms that are known to be troublesome with position: fixed . Often, these platforms support position: fixed partially, which can be worse than not supporting it at all. If overriding this option with your own blacklist logic, you simply need to provide a function that returns a true or false result when called upon initialization. You must set it on mobileinit, so that it applies when the plugin is initially created.

-

-$( document ).bind("mobileinit", function(){
-  $.mobile.fixedtoolbar.prototype.options.supportBlacklist = function(){
-    var result;
-    // logic to determine whether result should be true or false
-    return result;
-  };
-})
-
- - -
initSelector CSS selector string
-
-

default: ":jqmData(position='fixed')"

-

This is used to define the selectors (element types, data roles, etc.) that will automatically be initialized as fixed toolbars. To change which elements are initialized, bind this option to the mobileinit event:

-
$( document ).bind( "mobileinit", function(){
-	$.mobile.fixedtoolbar.prototype.options.initSelector = ".myselector";
-});
-
-
- - - -
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed.html deleted file mode 100644 index a0e9390..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fixed.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - jQuery Mobile Framework - Fixed Toolbars - - - - - - - - - - -
- -
-

Fixed toolbars

- Home - Search -
- -
-
-

Fixed toolbars

- - - - -

In browsers that support CSS position: fixed (most desktop browsers, iOS5+, Android 2.2+, BlackBerry 6, and others), toolbars that use the "fixedtoolbar" plugin will be fixed to the top or bottom of the viewport, while the page content scrolls freely in between. In browsers that don't support fixed positioning, the toolbars will remain positioned in flow, at the top or bottom of the page.

- -

To enable this behavior on a header or footer, add the data-position="fixed" attribute to a jQuery Mobile header or footer element.

- -

Fixed header markup example:

-
	
-<div data-role="header" data-position="fixed">
-	<h1>Fixed Header!</h1>
-</div>
-		
- -

Fixed footer markup example:

-
	
-<div data-role="footer" data-position="fixed">
-	<h1>Fixed Footer!</h1>
-</div>
-		
- -

Fullscreen Toolbars

-

Fullscreen fixed toolbars sit on top of the content at all times when they are visible, and unlike regular fixed toolbars, fullscreen toolbars do not fall back to static positioning when toggled. Instead they disappear from the screen entirely. Fullscreen toolbars are ideal for more immersive interfaces, like a photo viewer that is meant to fill the entire screen with the photo itself and no distractions.

- -

To enable this option on a fixed header or footer, add the data-fullscreen attribute to the element.

- -
	
-<div data-role="header" data-position="fixed" data-fullscreen="true">
-	<h1>Fixed Header!</h1>
-</div>
-				
- - -

Forms in toolbars

- -

While all form elements are now tested to work correctly within static toolbars as of jQuery Mobile 1.1, we recommend extensive testing when using form elements within fixed toolbars or within any position: fixed elements. This can potentially trigger a number of unpredictable issues in various mobile browsers, Android 2.2/2.3 in particular (detailed in Known issues in Android 2.2/2.3, below).

- -

Changes in jQuery Mobile 1.1

- -

Prior to version 1.1, jQuery Mobile used dynamically re-positioned toolbars for the fixed header effect because very few mobile browsers supported the position:fixed CSS property, and simulating fixed support through the use of "fake" JavaScript overflow-scrolling behavior would have reduced our browser support reach, in addition to feeling unnatural on certain platforms. This behavior was not ideal, and jQuery Mobile 1.1 took a new approach to fixed toolbars that allows much broader support. The framework now offers true fixed toolbars on many popular platforms, while gracefully degrading non-supporting platforms to static positioning.

- -

Polyfilling older platforms

-

The fixed toolbar plugin degrades gracefully in platforms that do not support CSS position:fixed properly, such as iOS4.3. If you still need to support fixed toolbars on that platform (with the show/hide behavior) included in previous releases, Filament Group has developed a polyfill that you can use.

- - - -

Just include the CSS and JS files after your references to jQuery Mobile and Fixed toolbars will work similar to jQuery Mobile 1.0 in iOS4.3, with the inclusion of the new API for the 1.1 fixedtoolbar plugin.

- -

If you have any improvements to suggest, fork the gist on github and let us know!

- -

Known issue with form controls inside fixed toolbars, and programatic scroll

-

An obscure issue exists in iOS5 and some Android platforms where form controls placed inside fixed-positioned containers can lose their hit area when the window is programatically scrolled (using window.scrollTo for example). This is not an issue specific to jQuery Mobile, but because of it, we recommend not programatically scrolling a document when using form controls inside jQuery Mobile fixed toolbars. This ticket from the Device Bugs project tracker explains this problem in more detail.

- - -

Known issues in Android 2.2/2.3

-

Android 2.2/2.3’s implementation of position: fixed; can, in conjunction with seemingly unrelated styles and markup patterns, cause a number of strange issues, particularly in the case of position: absolute elements inside of position: fixed elements. While we’ve done our best to work around a number of these unique bugs within the scope of the library, custom styles may cause a number of issues.

-
    -
  • Form elements elsewhere on the page—select menus in particular—can fail to respond to user interaction when an empty absolute positioned element is placed within a fixed position element. In rare cases—and specific to Android 2.2—this can cause entire pages to fail to respond to user interaction. This can seemingly be solved by adding any character to the absolute positioned element, including a non-breaking space, and in some cases even whitespace.
  • -
  • The above-described issue can also be triggered by an absolute positioned image inside of a fixed position element, but only when that image is using something other than its inherent dimensions. If a height or width is specified on the image using CSS, or the image src is invalid (thus having no inherent height and width), this issue can occur. If an image that is inherently, say, 50x50 pixels is placed in a fixed element and left at its inherent dimensions, this issue does not seem to occur.
  • -
  • When a position: fixed element appears anywhere on a page, most 2D CSS transforms will fail. Oddly, only translate transforms seem unaffected by this. Even more oddly, this issue is solved by setting a CSS opacity of .9 or below on the parent of the fixed element.
  • -
  • Combinations of position: fixed and overflow properties are best avoided, as both have been known to cause unpredictable issues in older versions of Android OS.
  • -
  • Any element that triggers the on-screen keyboard, when placed inside a position: fixed element, will fail to respond to user input when using anything other than the default keyboard. This includes Swype, XT9 or, it seems, any input method apart from the standard non-predictive keyboard.
  • -
- -

While we will continue to try to find ways to mitigate these bugs as best we can, we currently advise against implementing fixed toolbars containing complicated user styles and form elements without extensive testing in all versions of Android’s native browser.

- -

The following pages are designed to test fixed toolbars and form elements: - demo app, - text inputs, - search inputs, - radio toggles, - checkbox toggles, - slider, - select, and - buttons.

- - -
-

No longer supported: touchOverflowEnabled

- -

Prior to jQuery Mobile 1.1, true fixed toolbar support was contingent on native browser support for the CSS property overflow-scrolling: touch, which is currently only supported in iOS5. As of version 1.1, jQuery Mobile no longer uses this CSS property at all. We've removed all internal usage of this property in the framework, but we've left it defined globally on the $.mobile object to reduce the risk that its removal will cause trouble with existing applications. This property is flagged for removal, so please update your code to no longer use it. The support test for this property, however, remains defined under $.support and we have no plans to remove that test at this time.

-
-
- - -

The rest of the page is just sample content to make the page very long

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

And an inset list

- - - -
-

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - -

Embedded form

- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
- - -
- - -
-
-
-
-
-
-
- -

A bit more text

- -

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.Donec non enim in turpis pulvinar facilisis. Ut felis.

- - - - -
- -
- -
- -

More in this section

- - -
-
- -
- -
-

Fixed Footer

-
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fullscreen.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fullscreen.html deleted file mode 100644 index 9d26c70..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-fullscreen.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - jQuery Mobile Framework - Fullscreen Fixed toolbars - - - - - - - - - - -
- -
-

Fullscreen fixed header

- Home - Search -
- -
-
- Photo Run - -

This page demonstrates the "fullscreen" toolbar mode. This toolbar treatment is used in special cases where you want the content to fill the whole screen, and you want the header and footer toolbars to appear and disappear when the page is clicked responsively — a common scenario for photo, image or video viewers.

- -

To enable this toolbar feature type, you apply the data-fullscreen="true" attribute and the data-position="fixed" attribute to both the header and footer div elements, or whichever you want to be full-screen.

- -

Keep in mind that the toolbars in this mode will sit over page content, so not all content will be accessible with the toolbars open, just as shown in this demo.

- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-themes.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-themes.html deleted file mode 100644 index 4935ab1..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/bars-themes.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - jQuery Mobile Framework - Theming Toolbars - - - - - - - - - - -
- -
-

Bar theming

- Home - Search -
- - -
-
-

Both the header and footer bars will be styled by default with the theme's "a" color swatch (black in the default theme) because these bars are typically primary in the visual hierarchy of a page.

- - -

Theming headers and footers

-

To set the header or footer bars to a different color in your theme, add the data-theme attribute and specify the letter of the theme swatch (a, b, c, etc.). For example, this will set the bar to swatch "b" (blue in the default theme):

- -
-
-<div data-role="header" data-theme="b"> 
-	<h1>Page Title</h1> 
-</div> 
-
-
- - -

Theming buttons in toolbars

- -

Any link added inside the header block will be automatically styled as a button that matches the color of the bar's theme swatch. To make a button stand out as a primary call to action, the data-theme attribute can be used to specify a contrasting button color from a different theme swatch. For example, if we set the header to theme "c" (light gray), both buttons would be styled as the "c" button by default. If we wanted the Save button to visually pop, we can override the color by setting the data-theme attribute to "b" (blue in our default theme) on the Save button's anchor.

- -
-
-<a href="add-user.php" data-theme="b">Save</a> 
-
-
- - - -

Theme variations

-

This is a demo of the variation that can be achieved by tweaking the theme swatches and buttons inside the headers and footers.

-

Headers

- - -
-

Bar theme "a"

- New -
- -
- Cancel -

Bar theme "a"

- Save -
- -
-

Bar theme "b"

- New -
- -
- Cancel -

Bar theme "b"

- Save -
- -
-

Bar theme "c"

- New -
- -
- Cancel -

Bar theme "c"

- Save -
- -
-

Bar theme "d"

- New -
- -
- Cancel -

Bar theme "d"

- Save -
- -

Footers

-

These are examples of a footer with link buttons inside. Note that footers do not have the same prescriptive markup conventions as headers with button slots so use layout grids or custom styles to achieve the design you want.

- - - -
- left - right - up - down -
- -
- left - right - up - down -
- -
- left - right - up - down -
- -
- left - right - up - down -
- -
- left - right - up - down -
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-bars.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-bars.html deleted file mode 100644 index ed1cb07..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-bars.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - jQuery Mobile Docs - Toolbar Basics - - - - - - - - - - -
- -
-

Toolbar basics

- Home - Search -
- -
-
-

Toolbar types

- -

In jQuery Mobile, there are two standard types of toolbars: Headers and Footers.

- -
  • The Header bar serves as the page title, is usually the first element inside each mobile page, and typically contains a page title and up to two buttons.
  • - -
  • The Footer bar is usually the last element inside each mobile page, and tends to be more freeform than the header in terms of content and functionality, but typically contains a combination of text and buttons.
  • -
- -

It's very common to have a horizontal navigation or tab bar inside the header or footer; jQuery Mobile includes a navbar widget that turns an unordered list of links into a horizontal button bar, which works well in these instances.

- -

View the data- attribute reference to see all the possible attributes you can add to toolbars.

- - -

Toolbar positioning options

- -

Header and footers can be positioned on the page in a few different ways. By default, the toolbars use the "inline" positioning mode. In this mode, the headers and footer sit in the natural document flow (the default HTML behavior), which ensures that they are visible on all devices, regardless of JavaScript and CSS positioning support.

- -

A "fixed" positioning mode fixes the toolbars to either the top or bottom of the viewport on browsers that support CSS fixed positioning (which includes most desktop browsers, iOS5+, Android 2.2+, BlackBerry 6, and others). In browsers that don't support fixed positioning, the toolbars will fall back to static, inline position in the page.

-

When tap-toggling is enabled, tapping the screen will toggle the visibility of the fixed toolbars. Tapping the page when the toolbars aren't visible brings them into view. Tapping again hides them until you tap again. This gives users the option to hide the toolbars until needed to maximize screen real estate. One caveat is that fixed toolbars never truly hide, but toggle between fixed and static positioning. This means that if you're at the top of a page, you can't tap-toggle a header toolbar out of view, as it instead toggles into its spot in the document flow at the top of the page. The same goes for fixed footers when scrolled to the very bottom of a document.

-

To set this behavior on a header or footer, add the data-position="fixed" attribute to the header or footer element.

- -

A "fullscreen" position mode works just like the fixed mode except that the toolbars overlay the page content, rather than reserving a place in the document when not in fixed mode. This is useful for immersive apps like photo or video viewers where you want the content to fill the whole screen and toolbars can be hidden or summoned to appear by tapping the screen. Keep in mind that the toolbars in this mode will sit over page content so this is best used for specific situations.

- - - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-footers.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-footers.html deleted file mode 100644 index 4cf221e..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-footers.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - jQuery Mobile Docs - Footer Configuration - - - - - - - - - - -
- -
-

Footers

- Home - Search -
- -
-
-

Footer bar structure

- -

The footer bar has the same basic structure as the header except it uses the data-role attribute value of footer.

- -
-
-<div data-role="footer"> 
-	<h4>Footer content</h4> 
-</div> 
-
-
- - -

The footer toolbar will be be themed with the "a" swatch by default (black in the default theme) but you can easily set the theme swatch color.

- -
-

Footer content

-
- -

The page footer is very similar to the header in terms of options and configuration. The primary difference is that the footer is designed to be less structured than the header to allow for more flexibility, so the framework doesn't automatically place buttons to the left or right based on source order as it does in the header.

-

Since footers do not have the same prescriptive markup conventions as headers, we recommend using layout grids or writing custom styles to achieve the design you want.

- - - -

Adding buttons

- -

Any link or valid button markup added to the footer will automatically be turned into a button. To save space, buttons in toolbars are automatically set to inline styling so the button is only as wide as the text and icons it contains.

- -

By default, toolbars don't have any padding to accommodate nav bars and other widgets. To include padding on the bar, add a class="ui-bar" to the footer.

- - -

-<div data-role="footer" class="ui-bar">
-	<a href="index.html" data-role="button" data-icon="plus">Add</a>
-	<a href="index.html" data-role="button" data-icon="arrow-u">Up</a>
-	<a href="index.html" data-role="button" data-icon="arrow-d">Down</a>
-</div>
-
- -

This creates this toolbar with buttons sitting in a row

- -
- Add - Up - Down -
- -

Note that .ui-bar should not be added to header or footer bars that span the full width of the page, as the additional padding will cause a full-width element to break out of its parent container. To add padding inside of a full-width toolbar, wrap the toolbar's contents in an element and apply the padding to that element.

- -

To group buttons together into a button set, wrap the links in a wrapper with data-role="controlgroup" and data-type="horizontal" attributes.

- -<div data-role="controlgroup" data-type="horizontal"> - -

This creates a grouped set of buttons:

- -
-
- Add - Up - Down -
-
- - - -

Adding form elements

- -

Forms elements and other content can also be added to toolbars. Here is an example of a select menu inside a footer bar. We recommend using mini-sized form elements in toolbars by adding the data-mini="true" attribute:

- - -
- - -
- - - - - - -

Fixed & Persistent footers

-

In situations where the footer is a global navigation element, you may want it to appear fixed so it doesn't scroll out of view. It's also possible to make a fixed toolbar persistent so it appears to not move between page transitions. This can be accomplished by using the persistent footer feature included in jQuery Mobile.

- -

To make a footer persistent between transitions, add the data-id attribute to the footer of all relevant pages and use the same id value for each. For example, by adding data-id="myfooter" to the current page and the target page, the framework will keep the footer anchors in the same spot during the page animation. This effect will only work correctly if the header and footer toolbars are set to data-position="fixed" so they are in view during the transition.

- - - - - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-headers.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-headers.html deleted file mode 100644 index 9462256..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-headers.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - jQuery Mobile Docs - Header Bars - - - - - - - - - - -
- -
-

Headers

- Home - Search -
- -
-
-

Header structure

-

The header is a toolbar at the top of the page that usually contains the page title text and optional buttons positioned to the the left and/or right of the title for navigation or actions. Headers can optionally be positioned as fixed so they remain at the top of the screen at all times instead of scrolling with the page.

- -

The title text is normally an H1 heading element but it's possible to use any heading level (H1-H6) to allow for semantic flexibility. For example, a page containing multiple mobile 'pages' may use a H1 element on the home 'page' and a H2 element on the secondary pages. All heading levels are styled identically by default to maintain visual consistency.

- -
-
-<div data-role="header"> 
-	<h1>Page Title</h1> 
-</div> 
-
-
- -

Default header features

-

The header toolbar is themed with the "a" swatch by default (black in the default theme) but you can easily set the theme swatch color.

- - - -
-

Page title

-
- - -

Adding buttons

- - - - - -

In the standard header configuration, there are slots for buttons on either side of the text heading. Each button is typically an anchor element, but any valid button markup will work. To save space, buttons in toolbars are set to inline styling so the button is only as wide as the text and icons it contains.

- - - - -

Default button positioning

- -

The header plugin looks for immediate children of the header container, and automatically sets the first link in the left button slot and the second link in the right. In this example, the 'Cancel' button will appear in the left slot and 'Save' will appear in the right slot based on their sequence in the source order.

- - -
			
-<div data-role="header" data-position="inline">
-	<a href="index.html" data-icon="delete">Cancel</a>
-	<h1>Edit Contact</h1>
-	<a href="index.html" data-icon="check">Save</a>
-</div>
-
- - -
- Cancel -

Edit Contact

- Save -
- -

Making buttons visually stand out

- -

Buttons automatically adopt the swatch color of the bar they sit in, so a link in a header bar with the "a" color will also be styled as "a" colored buttons. It's simple to make a button visually stand out. Here, we add the data-theme attribute and set the color swatch for the button to "b" to make the "Save" button pop.

- -
			
-<div data-role="header" data-position="inline">
-	<a href="index.html" data-icon="delete">Cancel</a>
-	<h1>Edit Contact</h1>
-	<a href="index.html" data-icon="check" data-theme="b">Save</a>
-</div>
-
- - -
- Cancel -

Edit Contact

- Save -
- -

Controlling button position with classes

- -

The button position can also be controlled by adding classes to the button anchors, rather than relying on source order. This is especially useful if you only want a button in the right slot. To specify the button position, add the class of ui-btn-left or ui-btn-right to the anchor.

- - - - -
-

-<div data-role="header" data-position="inline"> 
-	<h1>Page Title</h1>
-	<a href="index.html" data-icon="gear" class="ui-btn-right">Options</a>
-</div>
-
-
- -
-

Page Title

- Options -
- - -

Adding buttons to toolbars without heading

- -

The heading in the header bar has some margin that will give the bar its height. If you choose not to use a heading, you will need to add an element with class="ui-title" so that the bar can get the height and display correctly.

- - -
-

-<div data-role="header" data-position="inline"> 
-	<a href="index.html" data-icon="gear" class="ui-btn-right">Options</a>
-	<span class="ui-title" />
-</div>
-	
-
-
- -
- Options - -
- - - -

Adding Back buttons

- -

jQuery Mobile has a feature to automatically create and append "back" buttons to any header, though it is disabled by default. This is primarily useful in chromeless installed applications, such as those running in a native app webview. The framework automatically generates a "back" button on a header when the page plugin's addBackBtn option is true. This can also be set via markup if the page div has a data-add-back-btn="true" attribute.

- - -

If you use the attribute data-rel="back" on an anchor, any clicks on that anchor will mimic the back button, going back one history entry and ignoring the anchor's default href. This is particularly useful when linking back to a named page, such as a link that says "home", or when generating "back" buttons with JavaScript, such as a button to close a dialog. When using this feature in your source markup, be sure to provide a meaningful href that actually points to the URL of the referring page. This will allow the feature to work for users in C-Grade browsers.

-

If you just want a reverse transition without actually going back in history, you should use the data-direction="reverse" attribute.

- -

Customizing the back button text

- -

If you'd like to configure the back button text, you can either use the data-back-btn-text="previous" attribute on your page element, or set it programmatically via the page plugin's options:
$.mobile.page.prototype.options.backBtnText = "previous";

- -

Default back button style

-

If you'd like to configure the back button role-theme, you can use:
$.mobile.page.prototype.options.backBtnTheme = "a";
- If you're doing this programmatically, set this option inside the mobileinit event handler.

- -

Custom header configurations

-

If you need to to create a header that doesn't follow the default configuration, simply wrap your custom styled markup in any container, such as div. The plugin won't apply the automatic button logic to the wrapped content inside the header container so you can write custom styles for laying out the content in your header.

- -

It's also possible to create custom bars without using the header data-role at all. For example, start with any container and add the ui-bar class to apply standard bar padding and add the ui-bar-b class to assign the bar swatch styles from your theme. (The "b" can be any swatch letter.)

- -

-<div class="ui-bar ui-bar-b">
-	<h3>I'm just a div with bar classes and a <a href="#" data-role="button">Button</a></h3>
-</div>
-			
- -

This will produce this bar:

-
-

I'm just a div with bar classes and a mini inline Button

-
- -

Note that .ui-bar should not be added to header or footer bars that span the full width of the page, as the additional padding will cause a full-width element to break out of its parent container. To add padding inside of a full-width toolbar, wrap the toolbar's contents in an element and apply the padding to that element instead.

- -

By writing some simple styles, it's easy to build message bars like this:

- -
- -

This is an alert message.

And here's some additional text in a paragraph.

-
-
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-navbar.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-navbar.html deleted file mode 100644 index 689a557..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/docs-navbar.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - jQuery Mobile Docs - Navbar - - - - - - - - - - -
- -
-

Navbar

- Home - Search -
- -
-
-

Simple navbar

- -

jQuery Mobile has a very basic navbar widget that is useful for providing up to 5 buttons with optional icons in a bar, typically within a header or footer. There is also a persistent navbar variation that works more like a tab bar that stays fixed as you navigate across pages.

-

A navbar is coded as an unordered list of links wrapped in a container element that has the data-role="navbar" attribute. To set one of the links to the active (selected) state, add class="ui-btn-active" to the anchor. In this example, we have a two-button navbar in the footer with the "One" item set to active:

- -

-<div data-role="navbar">
-	<ul>
-		<li><a href="a.html" class="ui-btn-active">One</a></li>
-		<li><a href="b.html">Two</a></li>
-	</ul>
-</div><!-- /navbar -->
-
- -

The navbar items are set to divide the space evenly so in this case, each button is 1/2 the width of the browser window:

- - -
- -
- - -

Adding a third item will automatically make each button 1/3 the width of the browser window:

- - -
- -
- - -

Adding a fourth more item will automatically make each button 1/4 the width of the browser window:

- - -
- -
- - -

The navbar maxes out with 5 items, each 1/5 the width of the browser window:

- - -
- -
- - -

If more than 5 items are added, the navbar will simply wrap to multiple lines:

- -
- -
- -

Navbars with 1 item will simply render as 100%.

- -
- -
- -

Navbars in headers

- -

If you want to add a navbar to the top of the page, you can still have a page title and buttons. Just add the navbar container inside the header block, right after the title and buttons in the source order.

- -
-

I'm a header

- Options - -
- -
-
- -

Navbars in footers

- -

If you want to add a navbar to the bottom of the page so it acts more like a tab bar, simply wrap the navbar in a container with a data-role="footer"

-

-<div data-role="footer">		
-	<div data-role="navbar">
-		<ul>
-			<li><a href="#">One</a></li>
-			<li><a href="#">Two</a></li>
-			<li><a href="#">Three</a></li>
-		</ul>
-	</div><!-- /navbar -->
-</div><!-- /footer -->
-
-
-
- -
-
- -

Icons in navbars

- -

Icons can be added to navbar items by adding the data-icon attribute specifying a standard mobile icon to each anchor. By default, icons are added above the text (data-iconpos="top"). The following examples add icons to a navbar in a footer.

- -
-
- -
-
- -

The icon position is set on the navbar container instead of for individual links within for visual consistency. For example, to place the icons below the labels, add the data-iconpos="bottom" attribute to the navbar container.

-

-<div data-role="navbar" data-iconpos="bottom">
-
-

This will result in a bottom icon alignment:

-
-
- -
-
- -

The icon position can be set to data-iconpos="left":

- -
-
- -
-
- -

Or the icon position can be set to data-iconpos="right":

- -
-
- -
-
- -

Using 3rd party icon sets

- -

You can add any of the popular icon libraries like Glyphish to achieve the iOS style tab that has large icons stacked on top of text labels. All that is required is a bit of custom styles to link to the icons and position them in the navbar. Here is an example using Glyphish icons and custom styles (view page source for styles) in our navbar:

- - - - - - -

Icons by Joseph Wain / glyphish.com. Licensed under the Creative Commons Attribution 3.0 United States License.

- - -

Theming navbars

- -

Navbars inherit the theme swatch from their parent container, just like buttons. If a navbar is placed in the header or footer toolbar, it will inherit the default toolbar swatch (A) for bars unless you set this in the markup.

-

Here are a few examples of navbars in various container swatches that automatically inherit their parent's swatch letter. Note that in these examples, instead of using a data-theme attribute, we're manually adding the swatch classes to apply the body swatch (ui-body-a) and the class to add the standard body padding (ui-body), but the inheritance works the same way:

- -
-

Swatch A

-
- -
-
- -
-

Swatch B

-
- -
-
- -

To set the theme color for a navbar item, add the data-theme attribute to the individual links and specify a theme swatch. Note that applying a theme swatch to the navbar container is not supported.

-
-
- -
-
- - -
- -
- -
- -

More in this section

- - -
-
- -
- - - -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-a.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-a.html deleted file mode 100644 index 5bfddc6..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-a.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - jQuery Mobile Framework - Persistent footer A - - - - - - - - - - -
- -
-

Friends

- Home - Search -
- - - -
-
- -
-
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-b.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-b.html deleted file mode 100644 index 681a0fe..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-b.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - jQuery Mobile Framework - Persistent footer B - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-c.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-c.html deleted file mode 100644 index 5dacf50..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-c.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - jQuery Mobile Framework - Persistent footer C - - - - - - - - - - -
- -
-

Inbox

- Home - Search -
- -
- - -
- -
- -

More in this section

- - -
-
- -
- -
-
- -
-
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-d.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-d.html deleted file mode 100644 index eb5d247..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/footer-persist-d.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - jQuery Mobile Framework - Persistent footer C - - - - - - - - - -
- -
-

Info

- Home - Search -
- -
-
-

About persistent toolbars

-

These pages are a demo of persistent toolbars. Click on any of the links in the footer, and you'll see the page content transition, but both the persistent header and footer on these pages remains in place durning the animation to a new HTML page.

-

To tell the framework to apply the persistent behavior, add a data-id attribute to the footer of all HTML pages in the navigation set to the same ID. It's that simple: if the page you're navigating to has a header or footer with the same data-id, the toolbars will appear fixed outside of the transition. Each of these pages has a different transition to test out how this works.

- -

Typically, the persistent toolbar technique will be combined with fixed positioning. In this example, the footer also has a navbar, like this:

- -
	
-<div data-role="footer" data-id="foo1" data-position="fixed">
-	<div data-role="navbar">
-		<ul>
-			<li><a href="a.html">Friends</a></li>
-			<li><a href="b.html">Albums</a></li>
-			<li><a href="c.html">Emails</a></li>
-			<li><a href="d.html" >Info</a></li>
-		</ul>
-	</div><!-- /navbar -->
-</div><!-- /footer -->
-
-

To set the active state of an item in a persistent toolbar, add a class of ui-state-persist in addition to ui-btn-active to the corresponding anchor.

- -
	
-<li><a href="d.html" class="ui-btn-active ui-state-persist">Info</a></li>
-
- -

A note about transitions

-

The slide, slideup, slidedown, fade or none page transitions all work great with persistent fixed toolbars. However, intensive 3D transitions like flip, turn, and flow can cause positioning and animation performance issues with this technique so we don't recommend using them.

- -
- -
- -
- -

More in this section

- - -
-
- -
- -
-
- -
-
- -
- - - \ No newline at end of file diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/09-chat2.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/09-chat2.png deleted file mode 100644 index 1ccc85f210922a42529edae9786714613d30b511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3022 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 QIsgCw07*qoM6N<$f;@$xmH+?% diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/100-coffee.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/100-coffee.png deleted file mode 100644 index 355cede1f8f9839d60c057ed3ad6340a61173ec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2967 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 N002ovPDHLkV1h1$fy@8^ diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/18-envelope.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/18-envelope.png deleted file mode 100644 index 11a8d1cfa0a0fbce2ccffb5f035cc75c6541d968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2946 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 Xr14j0Vj`QR00000NkvXXu0mjf#D~od diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/21-skull.png b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/glyphish-icons/21-skull.png deleted file mode 100644 index aeee6935d05694329516a8e280b0601850982e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3105 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 c!KOCAN>K-@zuiEu`^jYRx6Kp%7@D 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 diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/index.html deleted file mode 100644 index 343d264..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/docs/toolbars/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - jQuery Mobile Docs - Toolbars - - - - - - - - - - -
- -
-

Toolbars

- Home - Search -
- -
- -

Toolbars are used for headers, footers, and utility bars throughout mobile sites and applications. jQuery Mobile provides a standard set of bars and navigation tools to cover most standard scenarios.

- - - - -
-
- - - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/index.html b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/index.html deleted file mode 100644 index 0e89e6c..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - jQuery Mobile: Demos and Documentation - - - - - - - - -
-
-

1.1.0 Final Release

- - -
- -
-

jQuery Mobile Framework

-

A Touch-Optimized UI Framework built with jQuery and HTML5.

-
- - -

Welcome. jQuery Mobile is the easiest way to build sites and apps that are accessible on all popular smartphone, tablet and desktop devices. For jQuery 1.6.4 and 1.7.1.

- - - -
- - - - - -
- - - -
- - diff --git a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.js b/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.js deleted file mode 100644 index a22d563..0000000 --- a/dashboard/assets/www/js/jquery.mobile-1.1.0/demos/js/jquery.js +++ /dev/null @@ -1,9272 +0,0 @@ -//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude); -//>>description: jQuery 1.7.1 core library -//>>label: jQuery Core -//>>excludeEnd("jqmBuildExclude"); - - -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Matches dashed string for camelizing - rdashAlpha = /-([a-z]|[0-9])/ig, - rmsPrefix = /^-ms-/, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return ( letter + "" ).toUpperCase(); - }, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = ( context ? context.ownerDocument || context : document ); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.7.1", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.add( fn ); - - return this; - }, - - eq: function( i ) { - i = +i; - return i === -1 ? - this.slice( i ) : - this.slice( i, i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.fireWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).off( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery.Callbacks( "once memory" ); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return ( new Function( "return " + data ) )(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array, i ) { - var len; - - if ( array ) { - if ( indexOf ) { - return indexOf.call( array, elem, i ); - } - - len = array.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in array && array[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can optionally be executed if it's a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return ( new Date() ).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -return jQuery; - -})(); - - -// String to Object flags format cache -var flagsCache = {}; - -// Convert String-formatted flags into Object-formatted ones and store in cache -function createFlags( flags ) { - var object = flagsCache[ flags ] = {}, - i, length; - flags = flags.split( /\s+/ ); - for ( i = 0, length = flags.length; i < length; i++ ) { - object[ flags[i] ] = true; - } - return object; -} - -/* - * Create a callback list using the following parameters: - * - * flags: an optional list of space-separated flags that will change how - * the callback list behaves - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible flags: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( flags ) { - - // Convert flags from String-formatted to Object-formatted - // (we check in cache first) - flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; - - var // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = [], - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Add one or several callbacks to the list - add = function( args ) { - var i, - length, - elem, - type, - actual; - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - // Inspect recursively - add( elem ); - } else if ( type === "function" ) { - // Add if not in unique mode and callback is not in - if ( !flags.unique || !self.has( elem ) ) { - list.push( elem ); - } - } - } - }, - // Fire callbacks - fire = function( context, args ) { - args = args || []; - memory = !flags.memory || [ context, args ]; - firing = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { - memory = true; // Mark as halted - break; - } - } - firing = false; - if ( list ) { - if ( !flags.once ) { - if ( stack && stack.length ) { - memory = stack.shift(); - self.fireWith( memory[ 0 ], memory[ 1 ] ); - } - } else if ( memory === true ) { - self.disable(); - } else { - list = []; - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - var length = list.length; - add( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away, unless previous - // firing was halted (stopOnFalse) - } else if ( memory && memory !== true ) { - firingStart = length; - fire( memory[ 0 ], memory[ 1 ] ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - var args = arguments, - argIndex = 0, - argLength = args.length; - for ( ; argIndex < argLength ; argIndex++ ) { - for ( var i = 0; i < list.length; i++ ) { - if ( args[ argIndex ] === list[ i ] ) { - // Handle firingIndex and firingLength - if ( firing ) { - if ( i <= firingLength ) { - firingLength--; - if ( i <= firingIndex ) { - firingIndex--; - } - } - } - // Remove the element - list.splice( i--, 1 ); - // If we have some unicity property then - // we only need to do this once - if ( flags.unique ) { - break; - } - } - } - } - } - return this; - }, - // Control if a given callback is in the list - has: function( fn ) { - if ( list ) { - var i = 0, - length = list.length; - for ( ; i < length; i++ ) { - if ( fn === list[ i ] ) { - return true; - } - } - } - return false; - }, - // Remove all callbacks from the list - empty: function() { - list = []; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory || memory === true ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( stack ) { - if ( firing ) { - if ( !flags.once ) { - stack.push( [ context, args ] ); - } - } else if ( !( flags.once && memory ) ) { - fire( context, args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!memory; - } - }; - - return self; -}; - - - - -var // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - - Deferred: function( func ) { - var doneList = jQuery.Callbacks( "once memory" ), - failList = jQuery.Callbacks( "once memory" ), - progressList = jQuery.Callbacks( "memory" ), - state = "pending", - lists = { - resolve: doneList, - reject: failList, - notify: progressList - }, - promise = { - done: doneList.add, - fail: failList.add, - progress: progressList.add, - - state: function() { - return state; - }, - - // Deprecated - isResolved: doneList.fired, - isRejected: failList.fired, - - then: function( doneCallbacks, failCallbacks, progressCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); - return this; - }, - always: function() { - deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); - return this; - }, - pipe: function( fnDone, fnFail, fnProgress ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ], - progress: [ fnProgress, "notify" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - obj = promise; - } else { - for ( var key in promise ) { - obj[ key ] = promise[ key ]; - } - } - return obj; - } - }, - deferred = promise.promise({}), - key; - - for ( key in lists ) { - deferred[ key ] = lists[ key ].fire; - deferred[ key + "With" ] = lists[ key ].fireWith; - } - - // Handle state - deferred.done( function() { - state = "resolved"; - }, failList.disable, progressList.lock ).fail( function() { - state = "rejected"; - }, doneList.disable, progressList.lock ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = sliceDeferred.call( arguments, 0 ), - i = 0, - length = args.length, - pValues = new Array( length ), - count = length, - pCount = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(), - promise = deferred.promise(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - deferred.resolveWith( deferred, args ); - } - }; - } - function progressFunc( i ) { - return function( value ) { - pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - deferred.notifyWith( promise, pValues ); - }; - } - if ( length > 1 ) { - for ( ; i < length; i++ ) { - if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return promise; - } -}); - - - - -jQuery.support = (function() { - - var support, - all, - a, - select, - opt, - input, - marginDiv, - fragment, - tds, - events, - eventName, - i, - isSupported, - div = document.createElement( "div" ), - documentElement = document.documentElement; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
a"; - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute("href") === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Tests for enctype support on a form(#6743) - enctype: !!document.createElement("form").enctype, - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains its value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.lastChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - fragment.removeChild( input ); - fragment.appendChild( div ); - - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( window.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.style.width = "2px"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Technique from Juriy Zaytsev - // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - }) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - fragment.removeChild( div ); - - // Null elements to avoid leaks in IE - fragment = select = opt = marginDiv = div = input = null; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, outer, inner, table, td, offsetSupport, - conMarginTop, ptlm, vb, style, html, - body = document.getElementsByTagName("body")[0]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - conMarginTop = 1; - ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; - vb = "visibility:hidden;border:0;"; - style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; - html = "
" + - "" + - "
"; - - container = document.createElement("div"); - container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; - body.insertBefore( container, body.firstChild ); - - // Construct the test element - div = document.createElement("div"); - container.appendChild( div ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - div.innerHTML = "
t
"; - tds = div.getElementsByTagName( "td" ); - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE <= 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - - // Figure out if the W3C box model works as expected - div.innerHTML = ""; - div.style.width = div.style.paddingLeft = "1px"; - jQuery.boxModel = support.boxModel = div.offsetWidth === 2; - - if ( typeof div.style.zoom !== "undefined" ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.style.cssText = ptlm + vb; - div.innerHTML = html; - - outer = div.firstChild; - inner = outer.firstChild; - td = outer.nextSibling.firstChild.firstChild; - - offsetSupport = { - doesNotAddBorder: ( inner.offsetTop !== 5 ), - doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) - }; - - inner.style.position = "fixed"; - inner.style.top = "20px"; - - // safari subtracts parent border width here which is 5px - offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); - inner.style.position = inner.style.top = ""; - - outer.style.overflow = "hidden"; - outer.style.position = "relative"; - - offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); - offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); - - body.removeChild( container ); - div = container = null; - - jQuery.extend( support, offsetSupport ); - }); - - return support; -})(); - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var privateCache, thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, - isEvents = name === "events"; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ internalKey ] = id = ++jQuery.uuid; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // Avoids exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - privateCache = thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Users should not attempt to inspect the internal events object using jQuery.data, - // it is undocumented and subject to change. But does anyone listen? No. - if ( isEvents && !thisCache[ name ] ) { - return privateCache.events; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, l, - - // Reference to internal data cache key - internalKey = jQuery.expando, - - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ internalKey ] : internalKey; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } - - for ( i = 0, l = name.length; i < l; i++ ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - // Ensure that `cache` is not a window object #10080 - if ( jQuery.support.deleteExpando || !cache.setInterval ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the cache and need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ internalKey ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( internalKey ); - } else { - elem[ internalKey ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var parts, attr, name, - data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { - attr = this[0].attributes; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - jQuery._data( this[0], "parsedAttrs", true ); - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var self = jQuery( this ), - args = [ parts[0], value ]; - - self.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - self.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - jQuery.isNumeric( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery._data( elem, deferDataKey ); - if ( defer && - ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && - ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery._data( elem, queueDataKey ) && - !jQuery._data( elem, markDataKey ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.fire(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = ( type || "fx" ) + "mark"; - jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); - if ( count ) { - jQuery._data( elem, key, count ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - var q; - if ( elem ) { - type = ( type || "fx" ) + "queue"; - q = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - hooks = {}; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - jQuery._data( elem, type + ".run", hooks ); - fn.call( elem, function() { - jQuery.dequeue( elem, type ); - }, hooks ); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue " + type + ".run", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { - count++; - tmp.add( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - getSetAttribute = jQuery.support.getSetAttribute, - nodeHook, boolHook, fixSpecified; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = ( value || "" ).split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, i, max, option, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - i = one ? index : 0; - max = one ? index + 1 : options.length; - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attr: function( elem, name, value, pass ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( notxml ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var propName, attrNames, name, l, - i = 0; - - if ( value && elem.nodeType === 1 ) { - attrNames = value.toLowerCase().split( rspace ); - l = attrNames.length; - - for ( ; i < l; i++ ) { - name = attrNames[ i ]; - - if ( name ) { - propName = jQuery.propFix[ name ] || name; - - // See #9699 for explanation of this approach (setting first, then removal) - jQuery.attr( elem, name, "" ); - elem.removeAttribute( getSetAttribute ? name : propName ); - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && propName in elem ) { - elem[ propName ] = false; - } - } - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - // Use the value property for back compat - // Use the nodeHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return ( elem[ name ] = value ); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) -jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - // Fall back to attribute presence where some booleans are not supported - var attrNode, - property = jQuery.prop( elem, name ); - return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - fixSpecified = { - name: true, - id: true - }; - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - ret = document.createAttribute( name ); - elem.setAttributeNode( ret ); - } - return ( ret.nodeValue = value + "" ); - } - }; - - // Apply the nodeHook to tabindex - jQuery.attrHooks.tabindex.set = nodeHook.set; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - get: nodeHook.get, - set: function( elem, value, name ) { - if ( value === "" ) { - value = "false"; - } - nodeHook.set( elem, value, name ); - } - }; -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = "" + value ); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }); -}); - - - - -var rformElems = /^(?:textarea|input|select)$/i, - rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, - rhoverHack = /\bhover(\.\S+)?\b/, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, - quickParse = function( selector ) { - var quick = rquickIs.exec( selector ); - if ( quick ) { - // 0 1 2 3 - // [ _, tag, id, class ] - quick[1] = ( quick[1] || "" ).toLowerCase(); - quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); - } - return quick; - }, - quickIs = function( elem, m ) { - var attrs = elem.attributes || {}; - return ( - (!m[1] || elem.nodeName.toLowerCase() === m[1]) && - (!m[2] || (attrs.id || {}).value === m[2]) && - (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) - ); - }, - hoverHack = function( events ) { - return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); - }; - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - add: function( elem, types, handler, data, selector ) { - - var elemData, eventHandle, events, - t, tns, type, namespaces, handleObj, - handleObjIn, quick, handlers, special; - - // Don't attach events to noData or text/comment nodes (allow plain objects tho) - if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - events = elemData.events; - if ( !events ) { - elemData.events = events = {}; - } - eventHandle = elemData.handle; - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = jQuery.trim( hoverHack(types) ).split( " " ); - for ( t = 0; t < types.length; t++ ) { - - tns = rtypenamespace.exec( types[t] ) || []; - type = tns[1]; - namespaces = ( tns[2] || "" ).split( "." ).sort(); - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: tns[1], - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - quick: quickParse( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - handlers = events[ type ]; - if ( !handlers ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - t, tns, type, origType, namespaces, origCount, - j, events, special, handle, eventType, handleObj; - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = jQuery.trim( hoverHack( types || "" ) ).split(" "); - for ( t = 0; t < types.length; t++ ) { - tns = rtypenamespace.exec( types[t] ) || []; - type = origType = tns[1]; - namespaces = tns[2]; - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector? special.delegateType : special.bindType ) || type; - eventType = events[ type ] || []; - origCount = eventType.length; - namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; - - // Remove matching events - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !namespaces || namespaces.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - eventType.splice( j--, 1 ); - - if ( handleObj.selector ) { - eventType.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( eventType.length === 0 && origCount !== eventType.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery.removeData( elem, [ "events", "handle" ], true ); - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Don't do events on text and comment nodes - if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { - return; - } - - // Event object or event type - var type = event.type || event, - namespaces = [], - cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "!" ) >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf( "." ) >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.isTrigger = true; - event.exclusive = exclusive; - event.namespace = namespaces.join( "." ); - event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; - ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; - - // Handle a global trigger - if ( !elem ) { - - // TODO: Stop taunting the data cache; remove global events and always attach to document - cache = jQuery.cache; - for ( i in cache ) { - if ( cache[ i ].events && cache[ i ].events[ type ] ) { - jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); - } - } - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - eventPath = [[ elem, special.bindType || type ]]; - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; - old = null; - for ( ; cur; cur = cur.parentNode ) { - eventPath.push([ cur, bubbleType ]); - old = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( old && old === elem.ownerDocument ) { - eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); - } - } - - // Fire handlers on the event path - for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { - - cur = eventPath[i][0]; - event.type = eventPath[i][1]; - - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - // Note that this is a bare JS function and not a jQuery handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - // IE<9 dies on focus/blur to hidden element (#1486) - if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( old ) { - elem[ ontype ] = old; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event || window.event ); - - var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), - delegateCount = handlers.delegateCount, - args = [].slice.call( arguments, 0 ), - run_all = !event.exclusive && !event.namespace, - handlerQueue = [], - i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Determine handlers that should run if there are delegated events - // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) - if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { - - // Pregenerate a single jQuery object for reuse with .is() - jqcur = jQuery(this); - jqcur.context = this.ownerDocument || this; - - for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { - selMatch = {}; - matches = []; - jqcur[0] = cur; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - sel = handleObj.selector; - - if ( selMatch[ sel ] === undefined ) { - selMatch[ sel ] = ( - handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) - ); - } - if ( selMatch[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, matches: matches }); - } - } - } - - // Add the remaining (directly-bound) handlers - if ( handlers.length > delegateCount ) { - handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); - } - - // Run delegates first; they may want to stop propagation beneath us - for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { - matched = handlerQueue[ i ]; - event.currentTarget = matched.elem; - - for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { - handleObj = matched.matches[ j ]; - - // Triggered event must either 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { - - event.data = handleObj.data; - event.handleObj = handleObj; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - return event.result; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** - props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, - originalEvent = event, - fixHook = jQuery.event.fixHooks[ event.type ] || {}, - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = jQuery.Event( originalEvent ); - - for ( i = copy.length; i; ) { - prop = copy[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Target should not be a text node (#504, Safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) - if ( event.metaKey === undefined ) { - event.metaKey = event.ctrlKey; - } - - return fixHook.filter? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady - }, - - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - - focus: { - delegateType: "focusin" - }, - blur: { - delegateType: "focusout" - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -// Some plugins are using, but it's undocumented/deprecated and will be removed. -// The 1.7 special event interface should provide all the hooks needed now. -jQuery.event.handle = jQuery.event.dispatch; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var target = this, - related = event.relatedTarget, - handleObj = event.handleObj, - selector = handleObj.selector, - ret; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !form._submit_attached ) { - jQuery.event.add( form, "submit._submit", function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - }); - form._submit_attached = true; - } - }); - // return undefined since we don't need an event listener - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - jQuery.event.simulate( "change", this, event, true ); - } - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - elem._change_attached = true; - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on.call( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - var handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( var type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - live: function( types, data, fn ) { - jQuery( this.context ).on( types, this.selector, data, fn ); - return this; - }, - die: function( types, fn ) { - jQuery( this.context ).off( types, this.selector || "**", fn ); - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } - - if ( rkeyEvent.test( name ) ) { - jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; - } - - if ( rmouseEvent.test( name ) ) { - jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - expando = "sizcache" + (Math.random() + '').replace('.', ''), - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rReturn = /\r\n/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context, seed ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set, seed ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set, i, len, match, type, left; - - if ( !expr ) { - return []; - } - - for ( i = 0, len = Expr.order.length; i < len; i++ ) { - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - type, found, item, filter, left, - i, pass, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - filter = Expr.filter[ type ]; - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - pass = not ^ found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Utility function for retreiving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -var getText = Sizzle.getText = function( elem ) { - var i, node, - nodeType = elem.nodeType, - ret = ""; - - if ( nodeType ) { - if ( nodeType === 1 || nodeType === 9 ) { - // Use textContent || innerText for elements - if ( typeof elem.textContent === 'string' ) { - return elem.textContent; - } else if ( typeof elem.innerText === 'string' ) { - // Replace IE's carriage returns - return elem.innerText.replace( rReturn, '' ); - } else { - // Traverse it's children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - } else { - - // If no nodeType, this is expected to be an array - for ( i = 0; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - if ( node.nodeType !== 8 ) { - ret += getText( node ); - } - } - } - return ret; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var first, last, - doneName, parent, cache, - count, diff, - type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - first = match[2]; - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - doneName = match[0]; - parent = elem.parentNode; - - if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { - count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent[ expando ] = doneName; - } - - diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Sizzle.attr ? - Sizzle.attr( elem, name ) : - Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - !type && Sizzle.attr ? - result != null : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem[ expando ] === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem[ expando ] = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem[ expando ] === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem[ expando ] = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context, seed ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet, seed ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -Sizzle.selectors.attrMap = {}; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( - typeof selector === "string" ? - // If this is a positional selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - POS.test( selector ) ? - jQuery( selector, this.context ).index( this[0] ) >= 0 : - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array (deprecated as of jQuery 1.7) - if ( jQuery.isArray( selectors ) ) { - var level = 1; - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( i = 0; i < selectors.length; i++ ) { - - if ( jQuery( cur ).is( selectors[ i ] ) ) { - ret.push({ selector: selectors[ i ], elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, slice.call( arguments ).join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return ( elem === qualifier ) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; - }); -} - - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
", "
" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - col: [ 2, "", "
" ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }, - safeFragment = createSafeFragment( document ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and ' ); - - 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); - -/*! - * jQuery UI Widget @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ - -(function( $, undefined ) { - -// jQuery 1.4+ -if ( $.cleanData ) { - var _cleanData = $.cleanData; - $.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - $( elem ).triggerHandler( "remove" ); - } - _cleanData( elems ); - }; -} else { - var _remove = $.fn.remove; - $.fn.remove = function( selector, keepData ) { - return this.each(function() { - if ( !keepData ) { - if ( !selector || $.filter( selector, [ this ] ).length ) { - $( "*", this ).add( [ this ] ).each(function() { - $( this ).triggerHandler( "remove" ); - }); - } - } - return _remove.call( $(this), selector, keepData ); - }); - }; -} - -$.widget = function( name, base, prototype ) { - var namespace = name.split( "." )[ 0 ], - fullName; - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName ] = function( elem ) { - return !!$.data( elem, name ); - }; - - $[ namespace ] = $[ namespace ] || {}; - $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without initializing for simple inheritance - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - var 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 -// $.each( basePrototype, function( key, val ) { -// if ( $.isPlainObject(val) ) { -// basePrototype[ key ] = $.extend( {}, val ); -// } -// }); - basePrototype.options = $.extend( true, {}, basePrototype.options ); - $[ namespace ][ name ].prototype = $.extend( true, basePrototype, { - namespace: namespace, - widgetName: name, - widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name, - widgetBaseClass: fullName - }, prototype ); - - $.widget.bridge( name, $[ namespace ][ name ] ); -}; - -$.widget.bridge = function( name, object ) { - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = Array.prototype.slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.extend.apply( null, [ true, options ].concat(args) ) : - options; - - // prevent calls to internal methods - if ( isMethodCall && options.charAt( 0 ) === "_" ) { - return returnValue; - } - - if ( isMethodCall ) { - this.each(function() { - var instance = $.data( this, name ); - if ( !instance ) { - throw "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'"; - } - if ( !$.isFunction( instance[options] ) ) { - throw "no such method '" + options + "' for " + name + " widget instance"; - } - var methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, name ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, name, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( options, element ) { - // allow instantiation without initializing for simple inheritance - if ( arguments.length ) { - this._createWidget( options, element ); - } -}; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - options: { - disabled: false - }, - _createWidget: function( options, element ) { - // $.widget.bridge stores the plugin instance, but we do it anyway - // so that it's stored even before the _create function runs - $.data( element, this.widgetName, this ); - this.element = $( element ); - this.options = $.extend( true, {}, - this.options, - this._getCreateOptions(), - options ); - - var self = this; - this.element.bind( "remove." + this.widgetName, function() { - self.destroy(); - }); - - this._create(); - this._trigger( "create" ); - this._init(); - }, - _getCreateOptions: function() { - var options = {}; - if ( $.metadata ) { - options = $.metadata.get( element )[ this.widgetName ]; - } - return options; - }, - _create: function() {}, - _init: function() {}, - - destroy: function() { - this.element - .unbind( "." + this.widgetName ) - .removeData( this.widgetName ); - this.widget() - .unbind( "." + this.widgetName ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetBaseClass + "-disabled " + - "ui-state-disabled" ); - }, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.extend( {}, this.options ); - } - - if (typeof key === "string" ) { - if ( value === undefined ) { - return this.options[ key ]; - } - options = {}; - options[ key ] = value; - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var self = this; - $.each( options, function( key, value ) { - self._setOption( key, value ); - }); - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - [ value ? "addClass" : "removeClass"]( - this.widgetBaseClass + "-disabled" + " " + - "ui-state-disabled" ) - .attr( "aria-disabled", value ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _trigger: function( type, event, data ) { - var callback = this.options[ type ]; - - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - data = data || {}; - - // 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 ( event.originalEvent ) { - for ( var i = $.event.props.length, prop; i; ) { - prop = $.event.props[ --i ]; - event[ prop ] = event.originalEvent[ prop ]; - } - } - - this.element.trigger( event, data ); - - return !( $.isFunction(callback) && - callback.call( this.element[0], event, data ) === false || - event.isDefaultPrevented() ); - } -}; - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.widget", { - // decorate the parent _createWidget to trigger `widgetinit` for users - // who wish to do post post `widgetcreate` alterations/additions - // - // TODO create a pull request for jquery ui to trigger this event - // in the original _createWidget - _createWidget: function() { - $.Widget.prototype._createWidget.apply( this, arguments ); - this._trigger( 'init' ); - }, - - _getCreateOptions: function() { - - var elem = this.element, - options = {}; - - $.each( this.options, function( option ) { - - var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { - return "-" + c.toLowerCase(); - }) - ); - - if ( value !== undefined ) { - options[ option ] = value; - } - }); - - return options; - }, - - enhanceWithin: function( target, useKeepNative ) { - this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); - }, - - enhance: function( targets, useKeepNative ) { - var page, keepNative, $widgetElements = $( targets ), self = this; - - // if ignoreContentEnabled is set to true the framework should - // only enhance the selected elements when they do NOT have a - // parent with the data-namespace-ignore attribute - $widgetElements = $.mobile.enhanceable( $widgetElements ); - - if ( useKeepNative && $widgetElements.length ) { - // TODO remove dependency on the page widget for the keepNative. - // Currently the keepNative value is defined on the page prototype so - // the method is as well - page = $.mobile.closestPageData( $widgetElements ); - keepNative = (page && page.keepNativeSelector()) || ""; - - $widgetElements = $widgetElements.not( keepNative ); - } - - $widgetElements[ this.widgetName ](); - }, - - raise: function( msg ) { - throw "Widget [" + this.widgetName + "]: " + msg; - } -}); - -})( jQuery ); - -(function( $, window, undefined ) { - - var nsNormalizeDict = {}; - - // jQuery.mobile configurable options - $.mobile = $.extend( {}, { - - // Version of the jQuery Mobile Framework - version: "1.1.0", - - // Namespace used framework-wide for data-attrs. Default is no namespace - ns: "", - - // Define the url parameter used for referencing widget-generated sub-pages. - // Translates to to example.html&ui-page=subpageIdentifier - // hash segment before &ui-page= is used to make Ajax request - subPageUrlKey: "ui-page", - - // Class assigned to page currently in view, and during transitions - activePageClass: "ui-page-active", - - // Class used for "active" button state, from CSS framework - activeBtnClass: "ui-btn-active", - - // 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 - minScrollBack: 250, - - // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts - touchOverflowEnabled: false, - - // Set default dialog transition - 'none' for no transitions - defaultDialogTransition: "pop", - - // Show loading message during Ajax requests - // if false, message will not appear, but loading classes will still be toggled on html el - loadingMessage: "loading", - - // Error response message - appears when an Ajax page request fails - pageLoadErrorMessage: "Error Loading Page", - - // Should the text be visble in the loading message? - loadingMessageTextVisible: false, - - // When the text is visible, what theme does the loading box use? - loadingMessageTheme: "a", - - // For error messages, which theme does the box uses? - pageLoadErrorMessageTheme: "e", - - //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, - - // turn of binding to the native orientationchange due to android orientation behavior - orientationChangeEnabled: true, - - buttonMarkup: { - hoverDelay: 200 - }, - - // TODO might be useful upstream in jquery itself ? - keyCode: { - ALT: 18, - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - COMMAND: 91, - COMMAND_LEFT: 91, // COMMAND - COMMAND_RIGHT: 93, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - MENU: 93, // COMMAND_RIGHT - NUMPAD_ADD: 107, - NUMPAD_DECIMAL: 110, - NUMPAD_DIVIDE: 111, - NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, - NUMPAD_SUBTRACT: 109, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SHIFT: 16, - SPACE: 32, - TAB: 9, - UP: 38, - WINDOWS: 91 // COMMAND - }, - - // 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 ); - $( document ).trigger( "silentscroll", { x: 0, y: ypos }); - }, 20 ); - - setTimeout(function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - - // 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 ) { - if ( !prop ) { - return; - } - - return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); - }, - - getInheritedTheme: function( el, defaultTheme ) { - - // 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. - - var e = el[ 0 ], - ltr = "", - re = /ui-(bar|body|overlay)-([a-z])\b/, - c, m; - - while ( e ) { - var c = e.className || ""; - if ( ( 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"; - }, - - // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers - // - // 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("page"); - }, - - enhanceable: function( $set ) { - return this.haveParents( $set, "enhance" ); - }, - - hijackable: function( $set ) { - return this.haveParents( $set, "ajax" ); - }, - - haveParents: function( $set, attr ) { - if( !$.mobile.ignoreContentEnabled ){ - return $set; - } - - var count = $set.length, - $newSet = $(), - e, $element, excluded; - - for ( var i = 0; i < count; i++ ) { - $element = $set.eq( i ); - excluded = false; - e = $set[ i ]; - - while ( e ) { - var 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; - } - }, $.mobile ); - - // 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 ); - } - result = this.data.apply( this, arguments.length < 2 ? [ prop ] : [ 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 ) ); - }; - - $.fn.removeWithDependents = function() { - $.removeWithDependents( this ); - }; - - $.removeWithDependents = function( elem ) { - var $elem = $( elem ); - - ( $elem.jqmData('dependents') || $() ).remove(); - $elem.remove(); - }; - - $.fn.addDependents = function( newDependents ) { - $.addDependents( $(this), newDependents ); - }; - - $.addDependents = function( elem, newDependents ) { - var dependents = $(elem).jqmData( 'dependents' ) || $(); - - $(elem).jqmData( 'dependents', $.merge(dependents, newDependents) ); - }; - - // note that this helper doesn't attempt to handle the callback - // or setting of an html elements text, its only purpose is - // to return the html encoded version of the text in all cases. (thus the name) - $.fn.getEncodedText = function() { - return $( "
" ).text( $(this).text() ).html(); - }; - - // fluent helper function for the mobile namespaced equivalent - $.fn.jqmEnhanceable = function() { - return $.mobile.enhanceable( this ); - }; - - $.fn.jqmHijackable = function() { - return $.mobile.hijackable( this ); - }; - - // Monkey-patching Sizzle to filter the :jqmData selector - var oldFind = $.find, - jqmDataRE = /:jqmData\(([^)]*)\)/g; - - $.find = function( selector, context, ret, extra ) { - selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); - - return oldFind.call( this, selector, context, ret, extra ); - }; - - $.extend( $.find, oldFind ); - - $.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( $, undefined ) { - -var $window = $( window ), - $html = $( "html" ); - -/* $.mobile.media method: pass a CSS media type or query and get a bool return - note: this feature relies on actual media query support for media queries, though types will work most anywhere - examples: - $.mobile.media('screen') // tests for screen media type - $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px - $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) -*/ -$.mobile.media = (function() { - // TODO: use window.matchMedia once at least one UA implements it - var cache = {}, - testDiv = $( "
" ), - fakeBody = $( "" ).append( testDiv ); - - return function( query ) { - if ( !( query in cache ) ) { - var styleBlock = document.createElement( "style" ), - cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; - - //must set type for IE! - styleBlock.type = "text/css"; - - if ( styleBlock.styleSheet ){ - styleBlock.styleSheet.cssText = cssrule; - } else { - styleBlock.appendChild( document.createTextNode(cssrule) ); - } - - $html.prepend( fakeBody ).prepend( styleBlock ); - cache[ query ] = testDiv.css( "position" ) === "absolute"; - fakeBody.add( styleBlock ).remove(); - } - return cache[ query ]; - }; -})(); - -})(jQuery); - -(function( $, undefined ) { - -var fakeBody = $( "" ).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; //only used to rule out box shadow, as it's filled opaque on BB - -// thx Modernizr -function propExists( prop ) { - var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), - props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); - - for ( var v in props ){ - if ( fbCSS[ props[ v ] ] !== undefined ) { - return true; - } - } -} - -function validStyle( prop, value, check_vend ) { - var div = document.createElement('div'), - uc = function( txt ) { - return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ) - }, - vend_pref = function( vend ) { - return "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; - }, - check_style = function( vend ) { - var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", - uc_vend = uc( vend ), - propStyle = uc_vend + uc( prop ); - - div.setAttribute( "style", vend_prop ); - - if( !!div.style[ propStyle ] ) { - ret = true; - } - }, - check_vends = check_vend ? [ check_vend ] : vendors, - ret; - - for( i = 0; i < check_vends.length; i++ ) { - check_style( check_vends[i] ); - } - return !!ret; -} - -// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. -function transform3dTest() { - var prop = "transform-3d"; - return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); -} - -// 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 = $( "", { "href": fauxBase }).appendTo( "head" ); - } else { - href = base.attr( "href" ); - } - - link = $( "" ).prependTo( fakeBody ); - rebase = link[ 0 ].href; - base[ 0 ].href = href || location.pathname; - - if ( fauxEle ) { - fauxEle.remove(); - } - return rebase.indexOf( fauxBase ) === 0; -} - - -// 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.ie = (function() { - var v = 3, - div = document.createElement( "div" ), - a = div.all || []; - - // added {} to silence closure compiler warnings. registering my dislike of all things - // overly clever here for future reference - while ( div.innerHTML = "", a[ 0 ] ){}; - - return v > 4 ? v : !v; -})(); - - -$.extend( $.support, { - orientation: "orientation" in window && "onorientationchange" in window, - touch: "ontouchend" in document, - cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ), - pushState: "pushState" in history && "replaceState" in history, - mediaquery: $.mobile.media( "only all" ), - cssPseudoElement: !!propExists( "content" ), - touchOverflow: !!propExists( "overflowScrolling" ), - cssTransform3d: transform3dTest(), - boxShadow: !!propExists( "boxShadow" ) && !bb, - scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, - dynamicBaseTag: baseTagTest() -}); - -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 -var 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 || $.mobile.browser.ie && $.mobile.browser.ie >= 7; -}; - -$.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-mobile-nosupport-boxshadow" ); -} - -})( jQuery ); - -(function( $, window, undefined ) { - -// add new event shortcuts -$.each( ( "touchstart touchmove touchend orientationchange throttledresize " + - "tap taphold swipe swipeleft swiperight scrollstart scrollstop" ).split( " " ), function( i, name ) { - - $.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - $.attrFn[ name ] = true; -}); - -var supportTouch = $.support.touch, - scrollEvent = "touchmove scroll", - touchStartEvent = supportTouch ? "touchstart" : "mousedown", - touchStopEvent = supportTouch ? "touchend" : "mouseup", - touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; - -function triggerCustomEvent( obj, eventType, event ) { - var originalType = event.type; - event.type = eventType; - $.event.handle.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 ); - }); - } -}; - -// also handles taphold -$.event.special.tap = { - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( "vmousedown", function( event ) { - - if ( event.which && event.which !== 1 ) { - return false; - } - - var origTarget = event.target, - origEvent = event.originalEvent, - 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 ( origTarget == event.target ) { - triggerCustomEvent( thisObject, "tap", event ); - } - } - - $this.bind( "vmouseup", clearTapTimer ) - .bind( "vclick", clickHandler ); - $( document ).bind( "vmousecancel", clearTapHandlers ); - - timer = setTimeout(function() { - triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); - }, 750 ); - }); - } -}; - -// also handles swipeleft, swiperight -$.event.special.swipe = { - scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling. - - durationThreshold: 1000, // More time than this, and it isn't a swipe. - - horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. - - verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. - - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( touchStartEvent, function( event ) { - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event, - start = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ], - origin: $( event.target ) - }, - stop; - - function moveHandler( event ) { - - if ( !start ) { - return; - } - - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event; - - stop = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ] - }; - - // prevent scrolling - if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { - event.preventDefault(); - } - } - - $this.bind( touchMoveEvent, moveHandler ) - .one( touchStopEvent, function( event ) { - $this.unbind( touchMoveEvent, moveHandler ); - - if ( start && stop ) { - 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 ) { - - start.origin.trigger( "swipe" ) - .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); - } - } - start = stop = undefined; - }); - }); - } -}; - -(function( $, window ) { - // "Cowboy" Ben Alman - - var win = $( window ), - special_event, - get_orientation, - last_orientation, - initial_orientation_is_landscape, - initial_orientation_is_default, - portrait_map = { "0": true, "180": true }; - - // 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. - - var ww = window.innerWidth || $( window ).width(), - wh = window.innerHeight || $( window ).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 = special_event = { - setup: function() { - // If the event is supported natively, return false so that jQuery - // will bind to the event using DOM methods. - if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { - 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 && $.mobile.orientationChangeEnabled ) { - 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( "orientationchange" ); - } - } - - // 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"; - }; - -})( jQuery, window ); - - -// 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; -})(); - - -$.each({ - scrollstop: "scrollstart", - taphold: "tap", - swipeleft: "swipe", - swiperight: "swipe" -}, function( event, sourceEvent ) { - - $.event.special[ event ] = { - setup: function() { - $( this ).bind( sourceEvent, $.noop ); - } - }; -}); - -})( jQuery, this ); - -(function( $, undefined ) { - -$.widget( "mobile.page", $.mobile.widget, { - options: { - theme: "c", - domCache: false, - keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" - }, - - _create: function() { - - var self = this; - - // if false is returned by the callbacks do not create the page - if( self._trigger( "beforecreate" ) === false ){ - return false; - } - - self.element - .attr( "tabindex", "0" ) - .addClass( "ui-page ui-body-" + self.options.theme ) - .bind( "pagebeforehide", function(){ - self.removeContainerBackground(); - } ) - .bind( "pagebeforeshow", function(){ - self.setContainerBackground(); - } ); - - }, - - removeContainerBackground: function(){ - $.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); - }, - - // set the page container background to the page theme - setContainerBackground: function( theme ){ - if( this.options.theme ){ - $.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); - } - }, - - keepNativeSelector: function() { - var options = this.options, - keepNativeDefined = options.keepNative && $.trim(options.keepNative); - - if( keepNativeDefined && options.keepNative !== options.keepNativeDefault ){ - return [options.keepNative, options.keepNativeDefault].join(", "); - } - - return options.keepNativeDefault; - } -}); -})( jQuery ); - - -(function( $, window, undefined ) { - -var createHandler = function( sequential ){ - - // Default to sequential - if( sequential === undefined ){ - sequential = true; - } - - return function( name, reverse, $to, $from ) { - - var deferred = new $.Deferred(), - reverseClass = reverse ? " reverse" : "", - active = $.mobile.urlHistory.getActive(), - toScroll = active.lastScroll || $.mobile.defaultHomeScroll, - screenHeight = $.mobile.getScreenHeight(), - maxTransitionOverride = $.mobile.maxTransitionWidth !== false && $( window ).width() > $.mobile.maxTransitionWidth, - none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none", - toggleViewportClass = function(){ - $.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + name ); - }, - 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; - - window.scrollTo( 0, toScroll ); - - // reenable scrollstart listening like silentScroll would - setTimeout(function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - cleanFrom = function(){ - $from - .removeClass( $.mobile.activePageClass + " out in reverse " + name ) - .height( "" ); - }, - startOut = function(){ - // if it's not sequential, call the doneOut transition to start the TO page animating in simultaneously - if( !sequential ){ - doneOut(); - } - else { - $from.animationComplete( doneOut ); - } - - // Set the from page's height and start it transitioning out - // Note: setting an explicit height helps eliminate tiling in the transitions - $from - .height( screenHeight + $(window ).scrollTop() ) - .addClass( name + " out" + reverseClass ); - }, - - doneOut = function() { - - if ( $from && sequential ) { - cleanFrom(); - } - - startIn(); - }, - - startIn = function(){ - - $to.addClass( $.mobile.activePageClass ); - - // Send focus to page as it is now display: block - $.mobile.focusPage( $to ); - - // Set to page height - $to.height( screenHeight + toScroll ); - - scrollPage(); - - if( !none ){ - $to.animationComplete( doneIn ); - } - - $to.addClass( name + " in" + reverseClass ); - - if( none ){ - doneIn(); - } - - }, - - doneIn = function() { - - if ( !sequential ) { - - if( $from ){ - cleanFrom(); - } - } - - $to - .removeClass( "out in reverse " + name ) - .height( "" ); - - 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( $( window ).scrollTop() !== toScroll ){ - scrollPage(); - } - - deferred.resolve( name, reverse, $to, $from, true ); - }; - - toggleViewportClass(); - - if ( $from && !none ) { - startOut(); - } - else { - doneOut(); - } - - return deferred.promise(); - }; -} - -// generate the handlers from the above -var sequentialHandler = createHandler(), - simultaneousHandler = createHandler( false ); - -// Make our transition handler the public default. -$.mobile.defaultTransitionHandler = sequentialHandler; - -//transition handler dictionary for 3rd party transitions -$.mobile.transitionHandlers = { - "default": $.mobile.defaultTransitionHandler, - "sequential": sequentialHandler, - "simultaneous": simultaneousHandler -}; - -$.mobile.transitionFallbacks = {}; - -})( jQuery, this ); - -( function( $, undefined ) { - - //define vars for interal use - var $window = $( window ), - $html = $( 'html' ), - $head = $( 'head' ), - - //url path helpers for use in relative url management - path = { - - // 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: /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/, - - //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 ) { - if ( relPath && relPath.charAt( 0 ) === "/" ) { - return relPath; - } - - relPath = relPath || ""; - absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : ""; - - var absStack = absPath ? absPath.split( "/" ) : [], - relStack = relPath.split( "/" ); - for ( var i = 0; i < relStack.length; i++ ) { - var 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 === path.parseUrl( absUrl2 ).domain; - }, - - //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; - } - - 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 u = path.parseUrl( absUrl ); - if ( path.isEmbeddedPage( u ) ) { - // For embedded pages, remove the dialog hash key as in getFilePath(), - // otherwise the Data Url won't match the id of the embedded Page. - return u.hash.split( dialogHashKey )[0].replace( /^#/, "" ); - } else if ( path.isSameDomain( u, documentBase ) ) { - return u.hrefNoHash.replace( documentBase.domain, "" ); - } - return absUrl; - }, - - //get path from current hash, or from a file path - get: function( newPath ) { - if( newPath === undefined ) { - newPath = location.hash; - } - return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' ); - }, - - //return the substring of a filepath before the sub-page key, for making a server request - getFilePath: function( path ) { - var splitkey = '&' + $.mobile.subPageUrlKey; - return path && path.split( splitkey )[0].split( dialogHashKey )[0]; - }, - - //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( documentBase.domain, "" ); - }, - - //just return the url without an initial # - stripHash: 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, "" ) ); - }, - - //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 !== documentUrl.domain ? true : false; - }, - - hasProtocol: function( url ) { - return ( /^(:?\w+:)/ ).test( url ); - }, - - //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, documentBase ) ), - - // Does the url have the same path as the document? - samePath = u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === 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 ) ); - }, - - isEmbeddedPage: function( url ) { - var u = path.parseUrl( url ); - - //if the path is absolute, then we need to compare the url against - //both the 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 ( u.hash && ( u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ) ) ); - } - return (/^#/).test( u.href ); - } - }, - - //will be defined when a link is clicked and given an active class - $activeClickedLink = null, - - //urlHistory is purely here to make guesses at whether the back or forward button was clicked - //and provide an appropriate transition - urlHistory = { - // Array of pages that are visited during a single page load. - // Each has a url and optional transition, title, and pageUrl (which represents the file path, in cases where URL is obscured, such as dialogs) - stack: [], - - //maintain an index number for the active page in the stack - activeIndex: 0, - - //get active - getActive: function() { - return urlHistory.stack[ urlHistory.activeIndex ]; - }, - - getPrev: function() { - return urlHistory.stack[ urlHistory.activeIndex - 1 ]; - }, - - getNext: function() { - return urlHistory.stack[ urlHistory.activeIndex + 1 ]; - }, - - // addNew is used whenever a new page is added - addNew: function( url, transition, title, pageUrl, role ) { - //if there's forward history, wipe it - if( urlHistory.getNext() ) { - urlHistory.clearForward(); - } - - urlHistory.stack.push( {url : url, transition: transition, title: title, pageUrl: pageUrl, role: role } ); - - urlHistory.activeIndex = urlHistory.stack.length - 1; - }, - - //wipe urls ahead of active index - clearForward: function() { - urlHistory.stack = urlHistory.stack.slice( 0, urlHistory.activeIndex + 1 ); - }, - - directHashChange: function( opts ) { - var back , forward, newActiveIndex, prev = this.getActive(); - - // check if url isp in history and if it's ahead or behind current page - $.each( urlHistory.stack, function( i, historyEntry ) { - - //if the url is in the stack, it's a forward or a back - if( opts.currentUrl === historyEntry.url ) { - //define back and forward by whether url is older or newer than current page - back = i < urlHistory.activeIndex; - forward = !back; - newActiveIndex = i; - } - }); - - // save new page index, null check to prevent falsey 0 result - this.activeIndex = newActiveIndex !== undefined ? newActiveIndex : this.activeIndex; - - if( back ) { - ( opts.either || opts.isBack )( true ); - } else if( forward ) { - ( opts.either || opts.isForward )( false ); - } - }, - - //disable hashchange event listener internally to ignore one change - //toggled internally when location.hash is updated to match the url of a successful page load - ignoreNextHashChange: false - }, - - //define first selector to receive focus when a page is shown - focusable = "[tabindex],a,button:visible,select:visible,input", - - //queue to hold simultanious page transitions - pageTransitionQueue = [], - - //indicates whether or not page is in process of transitioning - isPageTransitioning = false, - - //nonsense hash change key for dialogs, so they create a history entry - dialogHashKey = "&ui-state=dialog", - - //existing base tag? - $base = $head.children( "base" ), - - //tuck away the original document URL minus any fragment. - documentUrl = path.parseUrl( location.href ), - - //if the document has an embedded base tag, documentBase is set to its - //initial value. If a base tag does not exist, then we default to the documentUrl. - documentBase = $base.length ? path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), documentUrl.href ) ) : documentUrl, - - //cache the comparison once. - documentBaseDiffers = ( documentUrl.hrefNoHash !== documentBase.hrefNoHash ); - - //base element management, defined depending on dynamic base tag support - var base = $.support.dynamicBaseTag ? { - - //define base element, for use in routing asset urls that are referenced in Ajax-requested markup - element: ( $base.length ? $base : $( "", { href: documentBase.hrefNoHash } ).prependTo( $head ) ), - - //set the generated BASE element's href attribute to a new page's base path - set: function( href ) { - base.element.attr( "href", path.makeUrlAbsolute( href, documentBase ) ); - }, - - //set the generated BASE element's href attribute to a new page's base path - reset: function() { - base.element.attr( "href", documentBase.hrefNoHash ); - } - - } : undefined; - -/* - internal utility functions ---------------------------------------*/ - - - //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(); - } - } - - //remove active classes after page transition or error - function removeActiveLinkClass( forceRemoval ) { - if( !!$activeClickedLink && ( !$activeClickedLink.closest( '.ui-page-active' ).length || forceRemoval ) ) { - $activeClickedLink.removeClass( $.mobile.activeBtnClass ); - } - $activeClickedLink = null; - } - - function releasePageTransitionLock() { - isPageTransitioning = false; - if( pageTransitionQueue.length > 0 ) { - $.mobile.changePage.apply( null, pageTransitionQueue.pop() ); - } - } - - // Save the last scroll distance per page, before it is hidden - var setLastScrollEnabled = true, - setLastScroll, delayedSetLastScroll; - - setLastScroll = function() { - // this barrier prevents setting the scroll value based on the browser - // scrolling the window based on a hashchange - if( !setLastScrollEnabled ) { - return; - } - - var active = $.mobile.urlHistory.getActive(); - - if( active ) { - var lastScroll = $window.scrollTop(); - - // Set active page's lastScroll prop. - // If the location we're scrolling to is less than minScrollBack, let it go. - active.lastScroll = lastScroll < $.mobile.minScrollBack ? $.mobile.defaultHomeScroll : lastScroll; - } - }; - - // bind to scrollstop to gather scroll position. The delay allows for the hashchange - // event to fire and disable scroll recording in the case where the browser scrolls - // to the hash targets location (sometimes the top of the page). once pagechange fires - // getLastScroll is again permitted to operate - delayedSetLastScroll = function() { - setTimeout( setLastScroll, 100 ); - }; - - // 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 - $window.bind( $.support.pushState ? "popstate" : "hashchange", function() { - setLastScrollEnabled = false; - }); - - // handle initial hashchange from chrome :( - $window.one( $.support.pushState ? "popstate" : "hashchange", function() { - setLastScrollEnabled = true; - }); - - // wait until the mobile page container has been determined to bind to pagechange - $window.one( "pagecontainercreate", function(){ - // once the page has changed, re-enable the scroll recording - $.mobile.pageContainer.bind( "pagechange", function() { - - 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 - $window.unbind( "scrollstop", delayedSetLastScroll ); - - // determine and bind to the current scoll element which may be the window - // or in the case of touch overflow the element with touch overflow - $window.bind( "scrollstop", delayedSetLastScroll ); - }); - }); - - // bind to scrollstop for the first page as "pagechange" won't be fired in that case - $window.bind( "scrollstop", delayedSetLastScroll ); - - //function for transitioning between two existing pages - function transitionPages( toPage, fromPage, transition, reverse ) { - - if( fromPage ) { - //trigger before show/hide events - fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } ); - } - - toPage.data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); - - //clear page loader - $.mobile.hidePageLoadingMsg(); - - // If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified - if( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ){ - transition = $.mobile.transitionFallbacks[ 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. - var th = $.mobile.transitionHandlers[ transition || "default" ] || $.mobile.defaultTransitionHandler, - promise = th( transition, reverse, toPage, fromPage ); - - promise.done(function() { - - //trigger show/hide events - if( fromPage ) { - fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } ); - } - - //trigger pageshow, define prevPage as either fromPage or empty jQuery obj - toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); - }); - - return promise; - } - - //simply set the active page's minimum height to screen height, depending on orientation - function getScreenHeight(){ - // 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 || $( window ).height(); - } - - $.mobile.getScreenHeight = getScreenHeight; - - //simply set the active page's minimum height to screen height, depending on orientation - function resetActivePageHeight(){ - var aPage = $( "." + $.mobile.activePageClass ), - aPagePadT = parseFloat( aPage.css( "padding-top" ) ), - aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ); - - aPage.css( "min-height", getScreenHeight() - aPagePadT - aPagePadB ); - } - - //shared page enhancements - function enhancePage( $page, role ) { - // If a role was specified, make sure the data-role attribute - // on the page element is in sync. - if( role ) { - $page.attr( "data-" + $.mobile.ns + "role", role ); - } - - //run page plugin - $page.page(); - } - -/* exposed $.mobile methods */ - - //animation complete callback - $.fn.animationComplete = function( callback ) { - if( $.support.cssTransitions ) { - return $( this ).one( 'webkitAnimationEnd animationend', callback ); - } - else{ - // defer execution for consistency between webkit/non webkit - setTimeout( callback, 0 ); - return $( this ); - } - }; - - //expose path object on $.mobile - $.mobile.path = path; - - //expose base object on $.mobile - $.mobile.base = base; - - //history stack - $.mobile.urlHistory = urlHistory; - - $.mobile.dialogHashKey = dialogHashKey; - - - - //enable cross-domain page support - $.mobile.allowCrossDomainPages = false; - - //return the original document url - $.mobile.getDocumentUrl = function(asParsedObject) { - return asParsedObject ? $.extend( {}, documentUrl ) : documentUrl.href; - }; - - //return the original document base url - $.mobile.getDocumentBase = function(asParsedObject) { - return asParsedObject ? $.extend( {}, documentBase ) : documentBase.href; - }; - - $.mobile._bindPageRemove = function() { - var page = $(this); - - // when dom caching is not enabled or the page is embedded bind to remove the page on hide - if( !page.data("page").options.domCache - && page.is(":jqmData(external-page='true')") ) { - - page.bind( 'pagehide.remove', function() { - var $this = $( this ), - prEvent = new $.Event( "pageremove" ); - - $this.trigger( prEvent ); - - if( !prEvent.isDefaultPrevented() ){ - $this.removeWithDependents(); - } - }); - } - }; - - // Load a page into the DOM. - $.mobile.loadPage = function( url, options ) { - // This function uses deferred notifications to let callers - // know when the page is done loading, or if an error has occurred. - var deferred = $.Deferred(), - - // The default loadPage options with overrides specified by - // the caller. - settings = $.extend( {}, $.mobile.loadPage.defaults, options ), - - // The DOM element for the page after it has been loaded. - page = null, - - // If the reloadPage option is true, and the page is already - // in the DOM, dupCachedPage will be set to the page element - // so that it can be removed after the new version of the - // page is loaded off the network. - dupCachedPage = null, - - // determine the current base url - findBaseWithDefault = function(){ - var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) ); - return closestBase || documentBase.hrefNoHash; - }, - - // The absolute version of the URL passed into the function. This - // version of the URL may contain dialog/subpage params in it. - absUrl = path.makeUrlAbsolute( url, findBaseWithDefault() ); - - - // If the caller provided data, and we're using "get" request, - // append the data to the URL. - if ( settings.data && settings.type === "get" ) { - absUrl = path.addSearchParams( absUrl, settings.data ); - settings.data = undefined; - } - - // If the caller is using a "post" request, reloadPage must be true - if( settings.data && settings.type === "post" ){ - settings.reloadPage = true; - } - - // The absolute version of the URL minus any dialog/subpage params. - // In otherwords the real URL of the page to be loaded. - var fileUrl = path.getFilePath( absUrl ), - - // The version of the Url actually stored in the data-url attribute of - // the page. For embedded pages, it is just the id of the page. For pages - // within the same domain as the document base, it is the site relative - // path. For cross-domain pages (Phone Gap only) the entire absolute Url - // used to load the page. - dataUrl = path.convertUrlToDataUrl( absUrl ); - - // Make sure we have a pageContainer to work with. - settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; - - // Check to see if the page already exists in the DOM. - page = settings.pageContainer.children( ":jqmData(url='" + 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 && !path.isPath( dataUrl ) ) { - page = settings.pageContainer.children( "#" + dataUrl ) - .attr( "data-" + $.mobile.ns + "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. If it isn't a reference - // to the first page and refers to non-existent embedded page, error out. - if ( page.length === 0 ) { - if ( $.mobile.firstPage && path.isFirstPageUrl( fileUrl ) ) { - // 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 the first-page is not in the DOM, then we let - // things fall through to the ajax loading code below so - // that it gets reloaded. - if ( $.mobile.firstPage.parent().length ) { - page = $( $.mobile.firstPage ); - } - } else if ( path.isEmbeddedPage( fileUrl ) ) { - deferred.reject( absUrl, options ); - return deferred.promise(); - } - } - - // Reset base to the default document base. - if ( base ) { - base.reset(); - } - - // If the page 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. Otherwise, track the - // existing page as a duplicated. - if ( page.length ) { - if ( !settings.reloadPage ) { - enhancePage( page, settings.role ); - deferred.resolve( absUrl, options, page ); - return deferred.promise(); - } - dupCachedPage = page; - } - - var mpc = settings.pageContainer, - pblEvent = new $.Event( "pagebeforeload" ), - triggerData = { url: url, absUrl: absUrl, dataUrl: dataUrl, deferred: deferred, options: settings }; - - // Let listeners know we're about to load a page. - mpc.trigger( pblEvent, triggerData ); - - // If the default behavior is prevented, stop here! - if( pblEvent.isDefaultPrevented() ){ - return deferred.promise(); - } - - if ( settings.showLoadMsg ) { - - // This configurable timeout allows cached pages a brief delay to load without showing a message - var loadMsgDelay = setTimeout(function(){ - $.mobile.showPageLoadingMsg(); - }, settings.loadMsgDelay ), - - // Shared logic for clearing timeout and removing message. - hideMsg = function(){ - - // Stop message show timer - clearTimeout( loadMsgDelay ); - - // Hide loading message - $.mobile.hidePageLoadingMsg(); - }; - } - - if ( !( $.mobile.allowCrossDomainPages || path.isSameDomain( documentUrl, absUrl ) ) ) { - deferred.reject( absUrl, options ); - } else { - // Load the new page. - $.ajax({ - url: fileUrl, - type: settings.type, - data: settings.data, - dataType: "html", - success: function( html, textStatus, xhr ) { - //pre-parse html to check for a data-url, - //use it as the new fileUrl, base path, etc - var all = $( "
" ), - - //page title regexp - newPageTitle = html.match( /]*>([^<]*)/ ) && RegExp.$1, - - // TODO handle dialogs again - pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + $.mobile.ns + "role=[\"']?page[\"']?[^>]*>)" ), - dataUrlRegex = new RegExp( "\\bdata-" + $.mobile.ns + "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 ) { - url = fileUrl = path.getFilePath( RegExp.$1 ); - } - - if ( base ) { - base.set( fileUrl ); - } - - //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 = $( "
" + html.split( /<\/?body[^>]*>/gmi )[1] + "
" ); - } - - if ( newPageTitle && !page.jqmData( "title" ) ) { - if ( ~newPageTitle.indexOf( "&" ) ) { - newPageTitle = $( "
" + newPageTitle + "
" ).text(); - } - page.jqmData( "title", newPageTitle ); - } - - //rewrite src and href attrs to use a base url - if( !$.support.dynamicBaseTag ) { - var newPath = path.get( fileUrl ); - page.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each(function() { - var thisAttr = $( this ).is( '[href]' ) ? 'href' : - $(this).is('[src]') ? 'src' : 'action', - thisUrl = $( this ).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( location.protocol + '//' + location.host + location.pathname, '' ); - - if( !/^(\w+:|#|\/)/.test( thisUrl ) ) { - $( this ).attr( thisAttr, newPath + thisUrl ); - } - }); - } - - //append to page and enhance - // TODO taging 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-" + $.mobile.ns + "url", path.convertUrlToDataUrl( fileUrl ) ) - .attr( "data-" + $.mobile.ns + "external-page", true ) - .appendTo( settings.pageContainer ); - - // wait for page creation to leverage options defined on widget - page.one( 'pagecreate', $.mobile._bindPageRemove ); - - enhancePage( page, settings.role ); - - // Enhancing the page may result in new dialogs/sub pages being inserted - // into the DOM. If the original absUrl refers to a sub-page, that is the - // real page we are interested in. - if ( absUrl.indexOf( "&" + $.mobile.subPageUrlKey ) > -1 ) { - page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); - } - - //bind pageHide to removePage after it's hidden, if the page options specify to do so - - // Remove loading message. - if ( settings.showLoadMsg ) { - hideMsg(); - } - - // Add the page reference and xhr to our triggerData. - triggerData.xhr = xhr; - triggerData.textStatus = textStatus; - triggerData.page = page; - - // Let listeners know the page loaded successfully. - settings.pageContainer.trigger( "pageload", triggerData ); - - deferred.resolve( absUrl, options, page, dupCachedPage ); - }, - error: function( xhr, textStatus, errorThrown ) { - //set base back to current path - if( base ) { - base.set( path.get() ); - } - - // Add error info to our triggerData. - triggerData.xhr = xhr; - triggerData.textStatus = textStatus; - triggerData.errorThrown = errorThrown; - - var plfEvent = new $.Event( "pageloadfailed" ); - - // Let listeners know the page load failed. - settings.pageContainer.trigger( plfEvent, 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.isDefaultPrevented() ){ - return; - } - - // Remove loading message. - if ( settings.showLoadMsg ) { - - // Remove loading message. - hideMsg(); - - // show error message - $.mobile.showPageLoadingMsg( $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true ); - - // hide after delay - setTimeout( $.mobile.hidePageLoadingMsg, 1500 ); - } - - deferred.reject( absUrl, options ); - } - }); - } - - return deferred.promise(); - }; - - $.mobile.loadPage.defaults = { - type: "get", - data: undefined, - reloadPage: false, - role: undefined, // By default we rely on the role defined by the @data-role attribute. - showLoadMsg: false, - pageContainer: undefined, - loadMsgDelay: 50 // This delay allows loads that pull from browser cache to occur without showing the loading message. - }; - - // Show a specific page in the page container. - $.mobile.changePage = function( toPage, 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 ); - - // Make sure we have a pageContainer to work with. - settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; - - // Make sure we have a fromPage. - settings.fromPage = settings.fromPage || $.mobile.activePage; - - var mpc = settings.pageContainer, - pbcEvent = new $.Event( "pagebeforechange" ), - triggerData = { toPage: toPage, options: settings }; - - // Let listeners know we're about to change the current page. - mpc.trigger( pbcEvent, triggerData ); - - // If the default behavior is prevented, stop here! - if( pbcEvent.isDefaultPrevented() ){ - return; - } - - // We allow "pagebeforechange" observers to modify the toPage in the trigger - // data to allow for redirects. Make sure our toPage is updated. - - toPage = triggerData.toPage; - - // 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 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 ( typeof toPage == "string" ) { - $.mobile.loadPage( toPage, settings ) - .done(function( url, options, newPage, dupCachedPage ) { - isPageTransitioning = false; - options.duplicateCachedPage = dupCachedPage; - $.mobile.changePage( newPage, options ); - }) - .fail(function( url, options ) { - isPageTransitioning = false; - - //clear out the active button state - removeActiveLinkClass( true ); - - //release transition lock so navigation is free again - releasePageTransitionLock(); - settings.pageContainer.trigger( "pagechangefailed", triggerData ); - }); - return; - } - - // 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 = documentUrl.hrefNoHash; - } - - // The caller passed us a real page DOM element. Update our - // internal state and then trigger a transition to the page. - var fromPage = settings.fromPage, - url = ( settings.dataUrl && 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 = path.getFilePath( url ), - active = urlHistory.getActive(), - activeIsInitialPage = urlHistory.activeIndex === 0, - historyDir = 0, - pageTitle = document.title, - isDialog = settings.role === "dialog" || toPage.jqmData( "role" ) === "dialog"; - - // 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; - mpc.trigger( "pagechange", triggerData ); - return; - } - - // We need to make sure the page we are given has already been enhanced. - enhancePage( toPage, 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 ) { - urlHistory.directHashChange({ - currentUrl: url, - isBack: function() { historyDir = -1; }, - isForward: function() { historyDir = 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) {} - - // 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 - url = ( active.url || "" ) + dialogHashKey; - } - - // Set the location hash. - if( settings.changeHash !== false && url ) { - //disable hash listening temporarily - urlHistory.ignoreNextHashChange = true; - //update hash and history - path.set( url ); - } - - // 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 - var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children(":jqmData(role='header')").find(".ui-title" ).getEncodedText(); - 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 ) { - urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role ); - } - - //set page title - document.title = urlHistory.getActive().title; - - //set "toPage" as activePage - $.mobile.activePage = toPage; - - // If we're navigating back in the URL history, set reverse accordingly. - settings.reverse = settings.reverse || historyDir < 0; - - transitionPages( toPage, fromPage, settings.transition, settings.reverse ) - .done(function( name, reverse, $to, $from, alreadyFocused ) { - removeActiveLinkClass(); - - //if there's a duplicateCachedPage, remove it from the DOM now that it's hidden - if ( settings.duplicateCachedPage ) { - settings.duplicateCachedPage.remove(); - } - - // Send focus to the newly shown page. Moved from promise .done binding in transitionPages - // itself to avoid ie bug that reports offsetWidth as > 0 (core check for visibility) - // despite visibility: hidden addresses issue #2965 - // https://github.com/jquery/jquery-mobile/issues/2965 - if( !alreadyFocused ){ - $.mobile.focusPage( toPage ); - } - - releasePageTransitionLock(); - - // Let listeners know we're all done changing the current page. - mpc.trigger( "pagechange", triggerData ); - }); - }; - - $.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 - }; - -/* 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; - } - - // The base URL for any given element depends on the page it resides in. - function getClosestBaseUrl( ele ) - { - // Find the closest page and extract out its url. - var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ), - base = documentBase.hrefNoHash; - - if ( !url || !path.isPath( url ) ) { - url = base; - } - - return path.makeUrlAbsolute( url, base); - } - - - //The following event bindings should be bound after mobileinit has been triggered - //the following function is called in the init file - $.mobile._registerInternalEvents = function(){ - - //bind to form submit events, handle with Ajax - $( document ).delegate( "form", "submit", function( event ) { - var $this = $( this ); - - if( !$.mobile.ajaxEnabled || - // test that the form is, itself, ajax false - $this.is(":jqmData(ajax='false')") || - // test that $.mobile.ignoreContentEnabled is set and - // the form or one of it's parents is ajax=false - !$this.jqmHijackable().length ) { - return; - } - - var type = $this.attr( "method" ), - target = $this.attr( "target" ), - url = $this.attr( "action" ); - - // 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 = getClosestBaseUrl( $this ); - if ( url === 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 = path.makeUrlAbsolute( url, getClosestBaseUrl($this) ); - - //external submits use regular HTTP - if( path.isExternal( url ) || target ) { - return; - } - - $.mobile.changePage( - url, - { - type: type && type.length && type.toLowerCase() || "get", - data: $this.serialize(), - transition: $this.jqmData( "transition" ), - direction: $this.jqmData( "direction" ), - reloadPage: true - } - ); - event.preventDefault(); - }); - - //add active state on vclick - $( document ).bind( "vclick", function( event ) { - // 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; - } - - var link = findClosestLink( event.target ); - - // split from the previous return logic to avoid find closest where possible - // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping - // can be avoided - if ( !$(link).jqmHijackable().length ) { - return; - } - - if ( link ) { - if ( path.parseUrl( link.getAttribute( "href" ) || "#" ).hash !== "#" ) { - removeActiveLinkClass( true ); - $activeClickedLink = $( link ).closest( ".ui-btn" ).not( ".ui-disabled" ); - $activeClickedLink.addClass( $.mobile.activeBtnClass ); - $( "." + $.mobile.activePageClass + " .ui-btn" ).not( link ).blur(); - - // By caching the href value to data and switching the href to a #, we can avoid address bar showing in iOS. The click handler resets the href during its initial steps if this data is present - $( link ) - .jqmData( "href", $( link ).attr( "href" ) ) - .attr( "href", "#" ); - } - } - }); - - // click routing - direct to HTTP or Ajax, accordingly - $( document ).bind( "click", function( event ) { - if( !$.mobile.linkBindingEnabled ){ - return; - } - - var link = findClosestLink( event.target ), $link = $( link ), 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; - } - - //remove active link class if external (then it won't be there if you come back) - httpCleanup = function(){ - window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 ); - }; - - // If there's data cached for the real href value, set the link's href back to it again. This pairs with an address bar workaround from the vclick handler - if( $link.jqmData( "href" ) ){ - $link.attr( "href", $link.jqmData( "href" ) ); - } - - //if there's a data-rel=back attr, go back in history - if( $link.is( ":jqmData(rel='back')" ) ) { - window.history.back(); - return false; - } - - var baseUrl = getClosestBaseUrl( $link ), - - //get href, if defined, otherwise default to empty hash - href = path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl ); - - //if ajax is disabled, exit early - if( !$.mobile.ajaxEnabled && !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. For now we are just assuming that any url with a - // hash in it is an application page reference. - if ( href.search( "#" ) != -1 ) { - href = href.replace( /[^#]*#/, "" ); - if ( !href ) { - //link was an empty hash meant purely - //for interaction, so we ignore it. - event.preventDefault(); - return; - } else if ( path.isPath( href ) ) { - //we have apath so make it the href we want to load. - href = path.makeUrlAbsolute( href, baseUrl ); - } else { - //we have a simple id so use the documentUrl as its base. - href = path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash ); - } - } - - // Should we handle this link, or let the browser deal with it? - var 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. - isCrossDomainPageLoad = ( $.mobile.allowCrossDomainPages && documentUrl.protocol === "file:" && href.search( /^https?:/ ) != -1 ), - - //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 || ( path.isExternal( href ) && !isCrossDomainPageLoad ); - - if( isExternal ) { - httpCleanup(); - //use default click handling - return; - } - - //use ajax - var transition = $link.jqmData( "transition" ), - direction = $link.jqmData( "direction" ), - reverse = ( direction && 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 } ); - event.preventDefault(); - }); - - //prefetch pages when anchors with data-prefetch are encountered - $( 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")} ); - } - }); - }); - - $.mobile._handleHashChange = function( hash ) { - //find first page via hash - var to = path.stripHash( hash ), - //transition is false if it's the first page, undefined otherwise (and may be overridden by default) - transition = $.mobile.urlHistory.stack.length === 0 ? "none" : undefined, - - // default options for the changPage calls made after examining the current state - // of the page and the hash - changePageOptions = { - transition: transition, - changeHash: false, - fromHashChange: true - }; - - //if listening is disabled (either globally or temporarily), or it's a dialog hash - if( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) { - urlHistory.ignoreNextHashChange = false; - return; - } - - // special case for dialogs - if( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 ) { - - // If current active page is not a dialog skip the dialog and continue - // in the same direction - if(!$.mobile.activePage.is( ".ui-dialog" )) { - //determine if we're heading forward or backward and continue accordingly past - //the current dialog - urlHistory.directHashChange({ - currentUrl: to, - isBack: function() { window.history.back(); }, - isForward: function() { window.history.forward(); } - }); - - // prevent changePage() - return; - } else { - // if the current active page is a dialog and we're navigating - // to a dialog use the dialog objected saved in the stack - urlHistory.directHashChange({ - currentUrl: to, - - // regardless of the direction of the history change - // do the following - either: function( isBack ) { - var active = $.mobile.urlHistory.getActive(); - - to = active.pageUrl; - - // 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: active.transition, - reverse: isBack - }); - } - }); - } - } - - //if to is defined, load it - if ( to ) { - // 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. - to = ( typeof to === "string" && !path.isPath( to ) ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to; - $.mobile.changePage( to, changePageOptions ); - } else { - //there's no hash, go to the first page in the dom - $.mobile.changePage( $.mobile.firstPage, changePageOptions ); - } - }; - - //hashchange event handler - $window.bind( "hashchange", function( e, triggered ) { - $.mobile._handleHashChange( location.hash ); - }); - - //set page min-heights to be device specific - $( document ).bind( "pageshow", resetActivePageHeight ); - $( window ).bind( "throttledresize", resetActivePageHeight ); - - };//_registerInternalEvents callback - -})( jQuery ); - -( function( $, window ) { - // For now, let's Monkeypatch this onto the end of $.mobile._registerInternalEvents - // Scope self to pushStateHandler so we can reference it sanely within the - // methods handed off as event handlers - var pushStateHandler = {}, - self = pushStateHandler, - $win = $( window ), - url = $.mobile.path.parseUrl( location.href ); - - $.extend( pushStateHandler, { - // TODO move to a path helper, this is rather common functionality - initialFilePath: (function() { - return url.pathname + url.search; - })(), - - initialHref: url.hrefNoHash, - - state: function() { - return { - hash: location.hash || "#" + self.initialFilePath, - title: document.title, - - // persist across refresh - initialHref: self.initialHref - }; - }, - - resetUIKeys: function( url ) { - var dialog = $.mobile.dialogHashKey, - subkey = "&" + $.mobile.subPageUrlKey, - dialogIndex = url.indexOf( dialog ); - - if( dialogIndex > -1 ) { - url = url.slice( 0, dialogIndex ) + "#" + url.slice( dialogIndex ); - } else if( url.indexOf( subkey ) > -1 ) { - url = url.split( subkey ).join( "#" + subkey ); - } - - return url; - }, - - hashValueAfterReset: function( url ) { - var resetUrl = self.resetUIKeys( url ); - return $.mobile.path.parseUrl( resetUrl ).hash; - }, - - // TODO sort out a single barrier to hashchange functionality - nextHashChangePrevented: function( value ) { - $.mobile.urlHistory.ignoreNextHashChange = value; - self.onHashChangeDisabled = value; - }, - - // on hash change we want to clean up the url - // NOTE this takes place *after* the vanilla navigation hash change - // handling has taken place and set the state of the DOM - onHashChange: function( e ) { - // disable this hash change - if( self.onHashChangeDisabled ){ - return; - } - - var href, state, - hash = location.hash, - isPath = $.mobile.path.isPath( hash ), - resolutionUrl = isPath ? location.href : $.mobile.getDocumentUrl(); - - hash = isPath ? hash.replace( "#", "" ) : hash; - - - // propulate the hash when its not available - state = self.state(); - - // make the hash abolute with the current href - href = $.mobile.path.makeUrlAbsolute( hash, resolutionUrl ); - - if ( isPath ) { - href = self.resetUIKeys( href ); - } - - // 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 window.history.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. - history.replaceState( state, document.title, href ); - }, - - // on popstate (ie back or forward) we need to replace the hash that was there previously - // cleaned up by the additional hash handling - onPopState: function( e ) { - var poppedState = e.originalEvent.state, - timeout, fromHash, toHash, hashChanged; - - // if there's no state its not a popstate we care about, eg chrome's initial popstate - if( poppedState ) { - // the active url in the history stack will still be from the previous state - // so we can use it to verify if a hashchange will be fired from the popstate - fromHash = self.hashValueAfterReset( $.mobile.urlHistory.getActive().url ); - - // the hash stored in the state popped off the stack will be our currenturl or - // the url to which we wish to navigate - toHash = self.hashValueAfterReset( poppedState.hash.replace("#", "") ); - - // if the hashes of the urls are different we must assume that the browser - // will fire a hashchange - hashChanged = fromHash !== toHash; - - // unlock hash handling once the hashchange caused be the popstate has fired - if( hashChanged ) { - $win.one( "hashchange.pushstate", function() { - self.nextHashChangePrevented( false ); - }); - } - - // enable hash handling for the the _handleHashChange call - self.nextHashChangePrevented( false ); - - // change the page based on the hash - $.mobile._handleHashChange( poppedState.hash ); - - // only prevent another hash change handling if a hash change will be fired - // by the browser - if( hashChanged ) { - // disable hash handling until one of the above timers fires - self.nextHashChangePrevented( true ); - } - } - }, - - init: function() { - $win.bind( "hashchange", self.onHashChange ); - - // Handle popstate events the occur through history changes - $win.bind( "popstate", self.onPopState ); - - // if there's no hash, we need to replacestate for returning to home - if ( location.hash === "" ) { - history.replaceState( self.state(), document.title, location.href ); - } - } - }); - - $( function() { - if( $.mobile.pushStateEnabled && $.support.pushState ){ - pushStateHandler.init(); - } - }); -})( 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 transition handler for slide transitions -$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; - -// Set the slide transition'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 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 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 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.page.prototype.options.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 -}; - - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - - var page = $.mobile.closestPageData($(e.target)), options; - - if( !page ) { - return; - } - - options = page.options; - - // degrade inputs to avoid poorly implemented native functionality - $( e.target ).find( "input" ).not( page.keepNativeSelector() ).each(function() { - var $this = $( this ), - type = this.getAttribute( "type" ), - optType = options.degradeInputs[ type ] || "text"; - - if ( options.degradeInputs[ type ] ) { - var html = $( "
" ).html( $this.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 ? "" : ">" ); - - $this.replaceWith( html.replace( findstr, repstr ) ); - } - }); - -}); - -})( jQuery ); - -(function( $, window, undefined ) { - -$.widget( "mobile.dialog", $.mobile.widget, { - options: { - closeBtnText : "Close", - overlayTheme : "a", - initSelector : ":jqmData(role='dialog')" - }, - _create: function() { - var self = this, - $el = this.element, - headerCloseButton = $( ""+ this.options.closeBtnText + "" ), - dialogWrap = $("
", { - "role" : "dialog", - "class" : "ui-dialog-contain ui-corner-all ui-overlay-shadow" - }); - - $el.addClass( "ui-dialog ui-overlay-" + this.options.overlayTheme ); - - // Class the markup for dialog styling - // Set aria role - $el - .wrapInner( dialogWrap ) - .children() - .find( ":jqmData(role='header')" ) - .prepend( headerCloseButton ) - .end() - .children( ':first-child') - .addClass( "ui-corner-top" ) - .end() - .children( ":last-child" ) - .addClass( "ui-corner-bottom" ); - - // this must be an anonymous function so that select menu dialogs can replace - // the close method. This is a change from previously just defining data-rel=back - // on the button and letting nav handle it - // - // Use click rather than vclick in order to prevent the possibility of unintentionally - // reopening the dialog if the dialog opening item was directly under the close button. - headerCloseButton.bind( "click", function() { - self.close(); - }); - - /* bind 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 - */ - $el.bind( "vclick submit", function( event ) { - var $target = $( event.target ).closest( event.type === "vclick" ? "a" : "form" ), - active; - - if ( $target.length && !$target.jqmData( "transition" ) ) { - - active = $.mobile.urlHistory.getActive() || {}; - - $target.attr( "data-" + $.mobile.ns + "transition", ( active.transition || $.mobile.defaultDialogTransition ) ) - .attr( "data-" + $.mobile.ns + "direction", "reverse" ); - } - }) - .bind( "pagehide", function( e, ui ) { - $( this ).find( "." + $.mobile.activeBtnClass ).removeClass( $.mobile.activeBtnClass ); - }) - // Override the theme set by the page plugin on pageshow - .bind( "pagebeforeshow", function(){ - if( self.options.overlayTheme ){ - self.element - .page( "removeContainerBackground" ) - .page( "setContainerBackground", self.options.overlayTheme ); - } - }); - }, - - // Close method goes back in history - close: function() { - window.history.back(); - } -}); - -//auto self-init widgets -$( document ).delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function(){ - $.mobile.dialog.prototype.enhance( this ); -}); - -})( jQuery, this ); - -(function( $, undefined ) { - -$.fn.fieldcontain = function( options ) { - return this.addClass( "ui-field-contain ui-body ui-br" ); -}; - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $( ":jqmData(role='fieldcontain')", e.target ).jqmEnhanceable().fieldcontain(); -}); - -})( 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; - - if ( !grid ) { - if ( $kids.length <= 5 ) { - for ( var letter in gridCols ) { - if ( gridCols[ letter ] === $kids.length ) { - grid = letter; - } - } - } else { - grid = "a"; - } - } - 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(3n+3)" ).addClass( "ui-block-c" ); - } - if ( iterator > 3 ) { - $kids.filter( ":nth-child(4n+4)" ).addClass( "ui-block-d" ); - } - if ( iterator > 4 ) { - $kids.filter( ":nth-child(5n+5)" ).addClass( "ui-block-e" ); - } - }); -}; -})( jQuery ); - -(function( $, undefined ) { - -$( document ).bind( "pagecreate create", function( e ){ - $( ":jqmData(role='nojs')", e.target ).addClass( "ui-nojs" ); - -}); - -})( jQuery ); - -( function( $, undefined ) { - -$.fn.buttonMarkup = function( options ) { - var $workingSet = this; - - // Enforce options to be of type string - options = ( options && ( $.type( options ) == "object" ) )? options : {}; - for ( var i = 0; i < $workingSet.length; i++ ) { - var el = $workingSet.eq( i ), - e = el[ 0 ], - o = $.extend( {}, $.fn.buttonMarkup.defaults, { - icon: options.icon !== undefined ? options.icon : el.jqmData( "icon" ), - iconpos: options.iconpos !== undefined ? options.iconpos : el.jqmData( "iconpos" ), - theme: options.theme !== undefined ? options.theme : el.jqmData( "theme" ) || $.mobile.getInheritedTheme( el, "c" ), - inline: options.inline !== undefined ? options.inline : el.jqmData( "inline" ), - shadow: options.shadow !== undefined ? options.shadow : el.jqmData( "shadow" ), - corners: options.corners !== undefined ? options.corners : el.jqmData( "corners" ), - iconshadow: options.iconshadow !== undefined ? options.iconshadow : el.jqmData( "iconshadow" ), - mini: options.mini !== undefined ? options.mini : el.jqmData( "mini" ) - }, options ), - - // Classes Defined - innerClass = "ui-btn-inner", - textClass = "ui-btn-text", - buttonClass, iconClass, - // Button inner markup - buttonInner, - buttonText, - buttonIcon, - buttonElements; - - $.each(o, function(key, value) { - e.setAttribute( "data-" + $.mobile.ns + key, value ); - el.jqmData(key, value); - }); - - // Check if this element is already enhanced - buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements"); - - if (buttonElements) { - e = buttonElements.outer; - el = $(e); - buttonInner = buttonElements.inner; - buttonText = buttonElements.text; - // We will recreate this icon below - $(buttonElements.icon).remove(); - buttonElements.icon = null; - } - else { - buttonInner = document.createElement( o.wrapperEls ); - buttonText = document.createElement( o.wrapperEls ); - } - buttonIcon = o.icon ? document.createElement( "span" ) : null; - - if ( attachEvents && !buttonElements) { - attachEvents(); - } - - // if not, try to find closest theme container - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( el, "c" ); - } - - buttonClass = "ui-btn ui-btn-up-" + o.theme; - buttonClass += o.inline ? " ui-btn-inline" : ""; - buttonClass += o.shadow ? " ui-shadow" : ""; - buttonClass += o.corners ? " ui-btn-corner-all" : ""; - - if ( o.mini !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `mini` style. - buttonClass += o.mini ? " ui-mini" : " ui-fullsize"; - } - - if ( o.inline !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `mini` style. - buttonClass += o.inline === false ? " ui-btn-block" : " ui-btn-inline"; - } - - - if ( o.icon ) { - o.icon = "ui-icon-" + o.icon; - o.iconpos = o.iconpos || "left"; - - iconClass = "ui-icon " + o.icon; - - if ( o.iconshadow ) { - iconClass += " ui-icon-shadow"; - } - } - - if ( o.iconpos ) { - buttonClass += " ui-btn-icon-" + o.iconpos; - - if ( o.iconpos == "notext" && !el.attr( "title" ) ) { - el.attr( "title", el.getEncodedText() ); - } - } - - innerClass += o.corners ? " ui-btn-corner-all" : ""; - - if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) { - el.attr( "title", el.getEncodedText() ); - } - - if ( buttonElements ) { - el.removeClass( buttonElements.bcls || "" ); - } - el.removeClass( "ui-link" ).addClass( buttonClass ); - - buttonInner.className = innerClass; - - buttonText.className = textClass; - if ( !buttonElements ) { - buttonInner.appendChild( buttonText ); - } - if ( buttonIcon ) { - buttonIcon.className = iconClass; - if ( !(buttonElements && buttonElements.icon) ) { - buttonIcon.appendChild( document.createTextNode("\u00a0") ); - buttonInner.appendChild( buttonIcon ); - } - } - - while ( e.firstChild && !buttonElements) { - buttonText.appendChild( e.firstChild ); - } - - if ( !buttonElements ) { - e.appendChild( buttonInner ); - } - - // Assign a structure containing the elements of this button to the elements of this button. This - // will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup(). - buttonElements = { - bcls : buttonClass, - outer : e, - inner : buttonInner, - text : buttonText, - icon : buttonIcon - }; - - $.data(e, 'buttonElements', buttonElements); - $.data(buttonInner, 'buttonElements', buttonElements); - $.data(buttonText, 'buttonElements', buttonElements); - if (buttonIcon) { - $.data(buttonIcon, 'buttonElements', buttonElements); - } - } - - return this; -}; - -$.fn.buttonMarkup.defaults = { - corners: true, - shadow: true, - iconshadow: true, - wrapperEls: "span" -}; - -function closestEnabledButton( element ) { - var cname; - - while ( element ) { - // Note that we check for typeof className below because the element we - // handed could be in an SVG DOM where className on SVG elements is defined to - // be of a different type (SVGAnimatedString). We only operate on HTML DOM - // elements, so we look for plain "string". - cname = ( typeof element.className === 'string' ) && (element.className + ' '); - if ( cname && cname.indexOf("ui-btn ") > -1 && cname.indexOf("ui-disabled ") < 0 ) { - break; - } - - element = element.parentNode; - } - - return element; -} - -var attachEvents = function() { - var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc; - - $( document ).bind( { - "vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) { - var theme, - $btn = $( closestEnabledButton( event.target ) ), - evt = event.type; - - if ( $btn.length ) { - theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - - if ( evt === "vmousedown" ) { - if ( $.support.touch ) { - hov = setTimeout(function() { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); - }, hoverDelay ); - } else { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); - } - } else if ( evt === "vmousecancel" || evt === "vmouseup" ) { - $btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); - } else if ( evt === "vmouseover" || evt === "focus" ) { - if ( $.support.touch ) { - foc = setTimeout(function() { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); - }, hoverDelay ); - } else { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); - } - } else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) { - $btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); - if ( hov ) { - clearTimeout( hov ); - } - if ( foc ) { - clearTimeout( foc ); - } - } - } - }, - "focusin focus": function( event ){ - $( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass ); - }, - "focusout blur": function( event ){ - $( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass ); - } - }); - - attachEvents = null; -}; - -//links in bars, or those with data-role become buttons -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - - $( ":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a", e.target ) - .not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) - .buttonMarkup(); -}); - -})( jQuery ); - - -(function( $, undefined ) { - -$.mobile.page.prototype.options.backBtnText = "Back"; -$.mobile.page.prototype.options.addBackBtn = false; -$.mobile.page.prototype.options.backBtnTheme = null; -$.mobile.page.prototype.options.headerTheme = "a"; -$.mobile.page.prototype.options.footerTheme = "a"; -$.mobile.page.prototype.options.contentTheme = null; - -$( document ).delegate( ":jqmData(role='page'), :jqmData(role='dialog')", "pagecreate", function( e ) { - - var $page = $( this ), - o = $page.data( "page" ).options, - pageRole = $page.jqmData( "role" ), - pageTheme = o.theme; - - $( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", this ) - .jqmEnhanceable() - .each(function() { - - var $this = $( this ), - role = $this.jqmData( "role" ), - theme = $this.jqmData( "theme" ), - contentTheme = theme || o.contentTheme || ( pageRole === "dialog" && pageTheme ), - $headeranchors, - leftbtn, - rightbtn, - backBtn; - - $this.addClass( "ui-" + role ); - - //apply theming and markup modifications to page,header,content,footer - if ( role === "header" || role === "footer" ) { - - var thisTheme = theme || ( role === "header" ? o.headerTheme : o.footerTheme ) || pageTheme; - - $this - //add theme class - .addClass( "ui-bar-" + thisTheme ) - // Add ARIA role - .attr( "role", role === "header" ? "banner" : "contentinfo" ); - - if( role === "header") { - // Right,left buttons - $headeranchors = $this.children( "a" ); - leftbtn = $headeranchors.hasClass( "ui-btn-left" ); - rightbtn = $headeranchors.hasClass( "ui-btn-right" ); - - leftbtn = leftbtn || $headeranchors.eq( 0 ).not( ".ui-btn-right" ).addClass( "ui-btn-left" ).length; - - rightbtn = rightbtn || $headeranchors.eq( 1 ).addClass( "ui-btn-right" ).length; - } - - // Auto-add back btn on pages beyond first view - if ( o.addBackBtn && - role === "header" && - $( ".ui-page" ).length > 1 && - $page.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) && - !leftbtn ) { - - backBtn = $( ""+ o.backBtnText +"" ) - // If theme is provided, override default inheritance - .attr( "data-"+ $.mobile.ns +"theme", o.backBtnTheme || thisTheme ) - .prependTo( $this ); - } - - // Page title - $this.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" - }); - - } else if ( role === "content" ) { - if ( contentTheme ) { - $this.addClass( "ui-body-" + ( contentTheme ) ); - } - - // Add ARIA role - $this.attr( "role", "main" ); - } - }); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.collapsible", $.mobile.widget, { - options: { - expandCueText: " click to expand contents", - collapseCueText: " click to collapse contents", - collapsed: true, - heading: "h1,h2,h3,h4,h5,h6,legend", - theme: null, - contentTheme: null, - iconTheme: "d", - mini: false, - initSelector: ":jqmData(role='collapsible')" - }, - _create: function() { - - var $el = this.element, - o = this.options, - collapsible = $el.addClass( "ui-collapsible" ), - collapsibleHeading = $el.children( o.heading ).first(), - collapsibleContent = collapsible.wrapInner( "
" ).find( ".ui-collapsible-content" ), - collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ); - - // Replace collapsibleHeading if it's a legend - if ( collapsibleHeading.is( "legend" ) ) { - collapsibleHeading = $( "
"+ collapsibleHeading.html() +"
" ).insertBefore( collapsibleHeading ); - collapsibleHeading.next().remove(); - } - - // If we are in a collapsible set - if ( collapsibleSet.length ) { - // Inherit the theme from collapsible-set - if ( !o.theme ) { - o.theme = collapsibleSet.jqmData("theme") || $.mobile.getInheritedTheme( collapsibleSet, "c" ); - } - // Inherit the content-theme from collapsible-set - if ( !o.contentTheme ) { - o.contentTheme = collapsibleSet.jqmData( "content-theme" ); - } - - // Gets the preference icon position in the set - if ( !o.iconPos ) { - o.iconPos = collapsibleSet.jqmData( "iconpos" ); - } - - if( !o.mini ) { - o.mini = collapsibleSet.jqmData( "mini" ); - } - } - collapsibleContent.addClass( ( o.contentTheme ) ? ( "ui-body-" + o.contentTheme ) : ""); - - collapsibleHeading - //drop heading in before content - .insertBefore( collapsibleContent ) - //modify markup & attributes - .addClass( "ui-collapsible-heading" ) - .append( "" ) - .wrapInner( "" ) - .find( "a" ) - .first() - .buttonMarkup({ - shadow: false, - corners: false, - iconpos: $el.jqmData( "iconpos" ) || o.iconPos || "left", - icon: "plus", - mini: o.mini, - theme: o.theme - }) - .add( ".ui-btn-inner", $el ) - .addClass( "ui-corner-top ui-corner-bottom" ); - - //events - collapsible - .bind( "expand collapse", function( event ) { - if ( !event.isDefaultPrevented() ) { - - event.preventDefault(); - - var $this = $( this ), - isCollapse = ( event.type === "collapse" ), - contentTheme = o.contentTheme; - - collapsibleHeading - .toggleClass( "ui-collapsible-heading-collapsed", isCollapse) - .find( ".ui-collapsible-heading-status" ) - .text( isCollapse ? o.expandCueText : o.collapseCueText ) - .end() - .find( ".ui-icon" ) - .toggleClass( "ui-icon-minus", !isCollapse ) - .toggleClass( "ui-icon-plus", isCollapse ); - - $this.toggleClass( "ui-collapsible-collapsed", isCollapse ); - collapsibleContent.toggleClass( "ui-collapsible-content-collapsed", isCollapse ).attr( "aria-hidden", isCollapse ); - - if ( contentTheme && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) { - collapsibleHeading - .find( "a" ).first().add( collapsibleHeading.find( ".ui-btn-inner" ) ) - .toggleClass( "ui-corner-bottom", isCollapse ); - collapsibleContent.toggleClass( "ui-corner-bottom", !isCollapse ); - } - collapsibleContent.trigger( "updatelayout" ); - } - }) - .trigger( o.collapsed ? "collapse" : "expand" ); - - collapsibleHeading - .bind( "click", function( event ) { - - var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? - "expand" : "collapse"; - - collapsible.trigger( type ); - - event.preventDefault(); - }); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.collapsible.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.collapsibleset", $.mobile.widget, { - options: { - initSelector: ":jqmData(role='collapsible-set')" - }, - _create: function() { - var $el = this.element.addClass( "ui-collapsible-set" ), - o = this.options; - - // Inherit the theme from collapsible-set - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( $el, "c" ); - } - // Inherit the content-theme from collapsible-set - if ( !o.contentTheme ) { - o.contentTheme = $el.jqmData( "content-theme" ); - } - - if ( !o.corners ) { - o.corners = $el.jqmData( "corners" ) === undefined ? true : false; - } - - // Initialize the collapsible set if it's not already initialized - if ( !$el.jqmData( "collapsiblebound" ) ) { - $el - .jqmData( "collapsiblebound", true ) - .bind( "expand collapse", function( event ) { - var isCollapse = ( event.type === "collapse" ), - collapsible = $( event.target ).closest( ".ui-collapsible" ), - widget = collapsible.data( "collapsible" ), - contentTheme = widget.options.contentTheme; - if ( contentTheme && collapsible.jqmData( "collapsible-last" ) ) { - collapsible.find( widget.options.heading ).first() - .find( "a" ).first() - .add( ".ui-btn-inner" ) - .toggleClass( "ui-corner-bottom", isCollapse ); - collapsible.find( ".ui-collapsible-content" ).toggleClass( "ui-corner-bottom", !isCollapse ); - } - }) - .bind( "expand", function( event ) { - $( event.target ) - .closest( ".ui-collapsible" ) - .siblings( ".ui-collapsible" ) - .trigger( "collapse" ); - }); - } - }, - - _init: function() { - this.refresh(); - }, - - refresh: function() { - var $el = this.element, - o = this.options, - collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" ); - - $.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) ); - - // clean up borders - collapsiblesInSet.each( function() { - $( this ).find( $.mobile.collapsible.prototype.options.heading ) - .find( "a" ).first() - .add( ".ui-btn-inner" ) - .removeClass( "ui-corner-top ui-corner-bottom" ); - }); - - collapsiblesInSet.first() - .find( "a" ) - .first() - .addClass( o.corners ? "ui-corner-top" : "" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-top" ); - - collapsiblesInSet.last() - .jqmData( "collapsible-last", true ) - .find( "a" ) - .first() - .addClass( o.corners ? "ui-corner-bottom" : "" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-bottom" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.collapsibleset.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.navbar", $.mobile.widget, { - options: { - iconpos: "top", - grid: null, - initSelector: ":jqmData(role='navbar')" - }, - - _create: function(){ - - var $navbar = this.element, - $navbtns = $navbar.find( "a" ), - 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 }); - - if ( !iconpos ) { - $navbar.addClass( "ui-navbar-noicons" ); - } - - $navbtns.buttonMarkup({ - corners: false, - shadow: false, - inline: true, - iconpos: iconpos - }); - - $navbar.delegate( "a", "vclick", function( event ) { - if( !$(event.target).hasClass("ui-disabled") ) { - $navbtns.removeClass( $.mobile.activeBtnClass ); - $( this ).addClass( $.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 ); - }); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.navbar.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -//Keeps track of the number of lists per page UID -//This allows support for multiple nested list in the same page -//https://github.com/jquery/jquery-mobile/issues/1617 -var listCountPerPage = {}; - -$.widget( "mobile.listview", $.mobile.widget, { - - options: { - theme: null, - countTheme: "c", - headerTheme: "b", - dividerTheme: "b", - splitIcon: "arrow-r", - splitTheme: "b", - mini: false, - inset: false, - initSelector: ":jqmData(role='listview')" - }, - - _create: function() { - var t = this, - listviewClasses = ""; - - listviewClasses += t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : ""; - listviewClasses += t.element.jqmData( "mini" ) || t.options.mini === true ? " ui-mini" : ""; - - // create listview markup - t.element.addClass(function( i, orig ) { - return orig + " ui-listview " + listviewClasses; - }); - - t.refresh( true ); - }, - - _removeCorners: function( li, which ) { - var top = "ui-corner-top ui-corner-tr ui-corner-tl", - bot = "ui-corner-bottom ui-corner-br ui-corner-bl"; - - li = li.add( li.find( ".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb" ) ); - - if ( which === "top" ) { - li.removeClass( top ); - } else if ( which === "bottom" ) { - li.removeClass( bot ); - } else { - li.removeClass( top + " " + bot ); - } - }, - - _refreshCorners: function( create ) { - var $li, - $visibleli, - $topli, - $bottomli; - - if ( this.options.inset ) { - $li = this.element.children( "li" ); - // at create time the li are not visible yet so we need to rely on .ui-screen-hidden - $visibleli = create?$li.not( ".ui-screen-hidden" ):$li.filter( ":visible" ); - - this._removeCorners( $li ); - - // Select the first visible li element - $topli = $visibleli.first() - .addClass( "ui-corner-top" ); - - $topli.add( $topli.find( ".ui-btn-inner" ) - .not( ".ui-li-link-alt span:first-child" ) ) - .addClass( "ui-corner-top" ) - .end() - .find( ".ui-li-link-alt, .ui-li-link-alt span:first-child" ) - .addClass( "ui-corner-tr" ) - .end() - .find( ".ui-li-thumb" ) - .not(".ui-li-icon") - .addClass( "ui-corner-tl" ); - - // Select the last visible li element - $bottomli = $visibleli.last() - .addClass( "ui-corner-bottom" ); - - $bottomli.add( $bottomli.find( ".ui-btn-inner" ) ) - .find( ".ui-li-link-alt" ) - .addClass( "ui-corner-br" ) - .end() - .find( ".ui-li-thumb" ) - .not(".ui-li-icon") - .addClass( "ui-corner-bl" ); - } - if ( !create ) { - this.element.trigger( "updatelayout" ); - } - }, - - // This is a generic utility method for finding the first - // node with a given nodeName. It uses basic DOM traversal - // to be fast and is meant to be a substitute for simple - // $.fn.closest() and $.fn.children() calls on a single - // element. Note that callers must pass both the lowerCase - // and upperCase version of the nodeName they are looking for. - // The main reason for this is that this function will be - // called many times and we want to avoid having to lowercase - // the nodeName from the element every time to ensure we have - // a match. Note that this function lives here for now, but may - // be moved into $.mobile if other components need a similar method. - _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; - }, - _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 ); - }, - - _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 ) { - img.addClass( "ui-li-thumb" ); - $( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" ); - } - } - }, - - refresh: function( create ) { - this.parentPage = this.element.closest( ".ui-page" ); - this._createSubPages(); - - var o = this.options, - $list = this.element, - self = this, - dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme, - listsplittheme = $list.jqmData( "splittheme" ), - listspliticon = $list.jqmData( "spliticon" ), - li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), - counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1, - itemClassDict = {}, - item, itemClass, itemTheme, - a, last, splittheme, countParent, icon, imgParents, img, linkIcon; - - if ( counter ) { - $list.find( ".ui-li-dec" ).remove(); - } - - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - for ( var pos = 0, numli = li.length; pos < numli; pos++ ) { - item = li.eq( pos ); - itemClass = "ui-li"; - - // If we're creating the element, we update it regardless - if ( create || !item.hasClass( "ui-li" ) ) { - itemTheme = item.jqmData("theme") || o.theme; - a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); - - if ( a.length ) { - icon = item.jqmData("icon"); - - item.buttonMarkup({ - wrapperEls: "div", - shadow: false, - corners: false, - iconpos: "right", - icon: a.length > 1 || icon === false ? false : icon || "arrow-r", - theme: itemTheme - }); - - if ( ( icon != false ) && ( a.length == 1 ) ) { - item.addClass( "ui-li-has-arrow" ); - } - - a.first().removeClass( "ui-link" ).addClass( "ui-link-inherit" ); - - if ( a.length > 1 ) { - itemClass += " ui-li-has-alt"; - - last = a.last(); - splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme; - linkIcon = last.jqmData("icon"); - - last.appendTo(item) - .attr( "title", last.getEncodedText() ) - .addClass( "ui-li-link-alt" ) - .empty() - .buttonMarkup({ - shadow: false, - corners: false, - theme: itemTheme, - icon: false, - iconpos: false - }) - .find( ".ui-btn-inner" ) - .append( - $( document.createElement( "span" ) ).buttonMarkup({ - shadow: true, - corners: true, - theme: splittheme, - iconpos: "notext", - // link icon overrides list item icon overrides ul element overrides options - icon: linkIcon || icon || listspliticon || o.splitIcon - }) - ); - } - } else if ( item.jqmData( "role" ) === "list-divider" ) { - - itemClass += " ui-li-divider ui-bar-" + dividertheme; - item.attr( "role", "heading" ); - - //reset counter when a divider heading is encountered - if ( counter ) { - counter = 1; - } - - } else { - itemClass += " ui-li-static ui-body-" + itemTheme; - } - } - - if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) { - countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" ); - - countParent.addClass( "ui-li-jsnumbering" ) - .prepend( "" + (counter++) + ". " ); - } - - // Instead of setting item class directly on the list item and its - // btn-inner 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 - // and their btn-inner elements. 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 ).children( ".ui-btn-inner" ).addClass( itemClass ); - } - - $list.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ) - .end() - - .find( "p, dl" ).addClass( "ui-li-desc" ) - .end() - - .find( ".ui-li-aside" ).each(function() { - var $this = $(this); - $this.prependTo( $this.parent() ); //shift aside to front for css float - }) - .end() - - .find( ".ui-li-count" ).each( function() { - $( this ).closest( "li" ).addClass( "ui-li-has-count" ); - }).addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme) + " ui-btn-corner-all" ); - - // The idea here is to look at the first image in the list item - // itself, and any .ui-link-inherit element it may contain, so we - // can place the appropriate classes on the image and list item. - // Note that we used to use something like: - // - // li.find(">img:eq(0), .ui-link-inherit>img:eq(0)").each( ... ); - // - // But executing a find() like that on Windows Phone 7.5 took a - // really long time. Walking things manually with the code below - // allows the 400 listview item page to load in about 3 seconds as - // opposed to 30 seconds. - - this._addThumbClasses( li ); - this._addThumbClasses( $list.find( ".ui-link-inherit" ) ); - - this._refreshCorners( create ); - }, - - //create a string for ID/subpage url creation - _idStringEscape: function( str ) { - return str.replace(/[^a-zA-Z0-9]/g, '-'); - }, - - _createSubPages: function() { - var parentList = this.element, - parentPage = parentList.closest( ".ui-page" ), - parentUrl = parentPage.jqmData( "url" ), - parentId = parentUrl || parentPage[ 0 ][ $.expando ], - parentListId = parentList.attr( "id" ), - o = this.options, - dns = "data-" + $.mobile.ns, - self = this, - persistentFooterID = parentPage.find( ":jqmData(role='footer')" ).jqmData( "id" ), - hasSubPages; - - if ( typeof listCountPerPage[ parentId ] === "undefined" ) { - listCountPerPage[ parentId ] = -1; - } - - parentListId = parentListId || ++listCountPerPage[ parentId ]; - - $( parentList.find( "li>ul, li>ol" ).toArray().reverse() ).each(function( i ) { - var self = this, - list = $( this ), - listId = list.attr( "id" ) || parentListId + "-" + i, - parent = list.parent(), - nodeEls = $( list.prevAll().toArray().reverse() ), - nodeEls = nodeEls.length ? nodeEls : $( "" + $.trim(parent.contents()[ 0 ].nodeValue) + "" ), - title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text - id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId, - theme = list.jqmData( "theme" ) || o.theme, - countTheme = list.jqmData( "counttheme" ) || parentList.jqmData( "counttheme" ) || o.countTheme, - newPage, anchor; - - //define hasSubPages for use in later removal - hasSubPages = true; - - newPage = list.detach() - .wrap( "
" ) - .parent() - .before( "
" + title + "
" ) - .after( persistentFooterID ? $( "
") : "" ) - .parent() - .appendTo( $.mobile.pageContainer ); - - newPage.page(); - - anchor = parent.find('a:first'); - - if ( !anchor.length ) { - anchor = $( "" ).html( nodeEls || title ).prependTo( parent.empty() ); - } - - anchor.attr( "href", "#" + id ); - - }).listview(); - - // on pagehide, remove any nested pages along with the parent page, as long as they aren't active - // and aren't embedded - if( hasSubPages && - parentPage.is( ":jqmData(external-page='true')" ) && - parentPage.data("page").options.domCache === false ) { - - var newRemove = function( e, ui ){ - var nextPage = ui.nextPage, npURL; - - if( ui.nextPage ){ - npURL = nextPage.jqmData( "url" ); - if( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ){ - self.childPages().remove(); - parentPage.remove(); - } - } - }; - - // unbind the original page remove and replace with our specialized version - parentPage - .unbind( "pagehide.remove" ) - .bind( "pagehide.remove", newRemove); - } - }, - - // TODO sort out a better way to track sub pages of the listview this is brittle - childPages: function(){ - var parentUrl = this.parentPage.jqmData( "url" ); - - return $( ":jqmData(url^='"+ parentUrl + "&" + $.mobile.subPageUrlKey +"')"); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.listview.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -/* -* "checkboxradio" plugin -*/ - -(function( $, undefined ) { - -$.widget( "mobile.checkboxradio", $.mobile.widget, { - options: { - theme: null, - initSelector: "input[type='checkbox'],input[type='radio']" - }, - _create: function() { - var self = this, - input = this.element, - inheritAttr = function( input, dataAttr ) { - return input.jqmData( dataAttr ) || input.closest( "form,fieldset" ).jqmData( dataAttr ) - }, - // NOTE: Windows Phone could not find the label through a selector - // filter works though. - parentLabel = $( input ).closest( "label" ), - label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ), - inputtype = input[0].type, - mini = inheritAttr( input, "mini" ), - checkedState = inputtype + "-on", - uncheckedState = inputtype + "-off", - icon = input.parents( ":jqmData(type='horizontal')" ).length ? undefined : uncheckedState, - iconpos = inheritAttr( input, "iconpos" ), - activeBtn = icon ? "" : " " + $.mobile.activeBtnClass, - checkedClass = "ui-" + checkedState + activeBtn, - uncheckedClass = "ui-" + uncheckedState, - checkedicon = "ui-icon-" + checkedState, - uncheckedicon = "ui-icon-" + uncheckedState; - - if ( inputtype !== "checkbox" && inputtype !== "radio" ) { - return; - } - - // Expose for other methods - $.extend( this, { - label: label, - inputtype: inputtype, - checkedClass: checkedClass, - uncheckedClass: uncheckedClass, - checkedicon: checkedicon, - uncheckedicon: uncheckedicon - }); - - // If there's no selected theme check the data attr - if( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - label.buttonMarkup({ - theme: this.options.theme, - icon: icon, - shadow: false, - mini: mini, - iconpos: iconpos - }); - - // Wrap the input + label in a div - var wrapper = document.createElement('div'); - wrapper.className = 'ui-' + inputtype; - - input.add( label ).wrapAll( wrapper ); - - label.bind({ - vmouseover: function( event ) { - if ( $( this ).parent().is( ".ui-disabled" ) ) { - event.stopPropagation(); - } - }, - - vclick: function( event ) { - if ( input.is( ":disabled" ) ) { - event.preventDefault(); - return; - } - - self._cacheVals(); - - input.prop( "checked", 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 - self._getInputSet().not( input ).prop( "checked", false ); - - self._updateAll(); - return false; - } - }); - - input - .bind({ - vmousedown: function() { - self._cacheVals(); - }, - - vclick: function() { - var $this = $(this); - - // Adds checked attribute to checked input when keyboard is used - if ( $this.is( ":checked" ) ) { - - $this.prop( "checked", true); - self._getInputSet().not($this).prop( "checked", false ); - } else { - - $this.prop( "checked", false ); - } - - self._updateAll(); - }, - - focus: function() { - label.addClass( $.mobile.focusClass ); - }, - - blur: function() { - label.removeClass( $.mobile.focusClass ); - } - }); - - this.refresh(); - }, - - _cacheVals: function() { - this._getInputSet().each(function() { - $(this).jqmData( "cacheVal", this.checked ); - }); - }, - - //returns either a set of radios with the same name attribute, or a single checkbox - _getInputSet: function(){ - if(this.inputtype === "checkbox") { - return this.element; - } - - return this.element.closest( "form,fieldset,:jqmData(role='page')" ) - .find( "input[name='"+ this.element[0].name +"'][type='"+ this.inputtype +"']" ); - }, - - _updateAll: function() { - var self = this; - - this._getInputSet().each(function() { - var $this = $(this); - - if ( this.checked || self.inputtype === "checkbox" ) { - $this.trigger( "change" ); - } - }) - .checkboxradio( "refresh" ); - }, - - refresh: function() { - var input = this.element[0], - label = this.label, - icon = label.find( ".ui-icon" ); - - if ( input.checked ) { - label.addClass( this.checkedClass ).removeClass( this.uncheckedClass ); - icon.addClass( this.checkedicon ).removeClass( this.uncheckedicon ); - } else { - label.removeClass( this.checkedClass ).addClass( this.uncheckedClass ); - icon.removeClass( this.checkedicon ).addClass( this.uncheckedicon ); - } - - if ( input.disabled ) { - this.disable(); - } else { - this.enable(); - } - }, - - disable: function() { - this.element.prop( "disabled", true ).parent().addClass( "ui-disabled" ); - }, - - enable: function() { - this.element.prop( "disabled", false ).parent().removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.checkboxradio.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.button", $.mobile.widget, { - options: { - theme: null, - icon: null, - iconpos: null, - inline: false, - corners: true, - shadow: true, - iconshadow: true, - initSelector: "button, [type='button'], [type='submit'], [type='reset'], [type='image']", - mini: false - }, - _create: function() { - var $el = this.element, - $button, - o = this.options, - type, - name, - classes = "", - $buttonPlaceholder; - - // if this is a link, check if it's been enhanced and, if not, use the right function - if( $el[ 0 ].tagName === "A" ) { - !$el.hasClass( "ui-btn" ) && $el.buttonMarkup(); - return; - } - - // get the inherited theme - // TODO centralize for all widgets - if ( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - // 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( !!~$el[0].className.indexOf( "ui-btn-left" ) ) { - classes = "ui-btn-left"; - } - - if( !!~$el[0].className.indexOf( "ui-btn-right" ) ) { - classes = "ui-btn-right"; - } - - // Add ARIA role - this.button = $( "
" ) - .text( $el.text() || $el.val() ) - .insertBefore( $el ) - .buttonMarkup({ - theme: o.theme, - icon: o.icon, - iconpos: o.iconpos, - inline: o.inline, - corners: o.corners, - shadow: o.shadow, - iconshadow: o.iconshadow, - mini: o.mini - }) - .addClass( classes ) - .append( $el.addClass( "ui-btn-hidden" ) ); - - $button = this.button; - type = $el.attr( "type" ); - name = $el.attr( "name" ); - - // Add hidden input during submit if input type="submit" has a name. - if ( type !== "button" && type !== "reset" && name ) { - $el.bind( "vclick", function() { - // Add hidden input if it doesn’t already exist. - if( $buttonPlaceholder === undefined ) { - $buttonPlaceholder = $( "", { - type: "hidden", - name: $el.attr( "name" ), - value: $el.attr( "value" ) - }).insertBefore( $el ); - - // Bind to doc to remove after submit handling - $( document ).one("submit", function(){ - $buttonPlaceholder.remove(); - - // reset the local var so that the hidden input - // will be re-added on subsequent clicks - $buttonPlaceholder = undefined; - }); - } - }); - } - - $el.bind({ - focus: function() { - $button.addClass( $.mobile.focusClass ); - }, - - blur: function() { - $button.removeClass( $.mobile.focusClass ); - } - }); - - this.refresh(); - }, - - enable: function() { - this.element.attr( "disabled", false ); - this.button.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); - return this._setOption( "disabled", false ); - }, - - disable: function() { - this.element.attr( "disabled", true ); - this.button.addClass( "ui-disabled" ).attr( "aria-disabled", true ); - return this._setOption( "disabled", true ); - }, - - refresh: function() { - var $el = this.element; - - if ( $el.prop("disabled") ) { - this.disable(); - } else { - this.enable(); - } - - // Grab the button's text element from its implementation-independent data item - $( this.button.data( 'buttonElements' ).text ).text( $el.text() || $el.val() ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.button.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.fn.controlgroup = function( options ) { - function flipClasses( els, flCorners ) { - els.removeClass( "ui-btn-corner-all ui-shadow" ) - .eq( 0 ).addClass( flCorners[ 0 ] ) - .end() - .last().addClass( flCorners[ 1 ] ).addClass( "ui-controlgroup-last" ); - } - - return this.each(function() { - var $el = $( this ), - o = $.extend({ - direction: $el.jqmData( "type" ) || "vertical", - shadow: false, - excludeInvisible: true, - mini: $el.jqmData( "mini" ) - }, options ), - groupheading = $el.children( "legend" ), - flCorners = o.direction == "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ], - type = $el.find( "input" ).first().attr( "type" ); - - // Replace legend with more stylable replacement div - if ( groupheading.length ) { - $el.wrapInner( "
" ); - $( "
" + groupheading.html() + "
" ).insertBefore( $el.children(0) ); - groupheading.remove(); - } - - $el.addClass( "ui-corner-all ui-controlgroup ui-controlgroup-" + o.direction ); - - flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not('.ui-slider-handle'), flCorners ); - flipClasses( $el.find( ".ui-btn-inner" ), flCorners ); - - if ( o.shadow ) { - $el.addClass( "ui-shadow" ); - } - - if ( o.mini ) { - $el.addClass( "ui-mini" ); - } - - }); -}; - -// The pagecreate handler for controlgroup is in jquery.mobile.init because of the soft-dependency on the wrapped widgets - -})(jQuery); - -(function( $, undefined ) { - -$( document ).bind( "pagecreate create", function( e ){ - - //links within content areas, tests included with page - $( e.target ) - .find( "a" ) - .jqmEnhanceable() - .not( ".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')" ) - .addClass( "ui-link" ); - -}); - -})( 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", $.mobile.widget, { - options: { - theme: null, - // This option defaults to true on iOS devices. - preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, - 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])", - clearSearchButtonText: "clear text" - }, - - _create: function() { - - var input = this.element, - o = this.options, - theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ), - themeclass = " ui-body-" + theme, - mini = input.jqmData("mini") == true, - miniclass = mini ? " ui-mini" : "", - focusedEl, clearbtn; - - $( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" ); - - focusedEl = input.addClass("ui-input-text ui-body-"+ theme ); - - // 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 input[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. - input[0].setAttribute( "autocorrect", "off" ); - input[0].setAttribute( "autocomplete", "off" ); - } - - - //"search" input widget - if ( input.is( "[type='search'],:jqmData(type='search')" ) ) { - - focusedEl = input.wrap( "" ).parent(); - clearbtn = $( "
" + o.clearSearchButtonText + "" ) - .bind('click', function( event ) { - input - .val( "" ) - .focus() - .trigger( "change" ); - clearbtn.addClass( "ui-input-clear-hidden" ); - event.preventDefault(); - }) - .appendTo( focusedEl ) - .buttonMarkup({ - icon: "delete", - iconpos: "notext", - corners: true, - shadow: true, - mini: mini - }); - - function toggleClear() { - setTimeout(function() { - clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); - }, 0); - } - - toggleClear(); - - input.bind('paste cut keyup focus change blur', toggleClear); - - } else { - input.addClass( "ui-corner-all ui-shadow-inset" + themeclass + miniclass ); - } - - input.focus(function() { - focusedEl.addClass( $.mobile.focusClass ); - }) - .blur(function(){ - focusedEl.removeClass( $.mobile.focusClass ); - }) - // In many situations, iOS will zoom into the select upon tap, this prevents that from happening - .bind( "focus", function() { - if( o.preventFocusZoom ){ - $.mobile.zoom.disable( true ); - } - }) - .bind( "blur", function() { - if( o.preventFocusZoom ){ - $.mobile.zoom.enable( true ); - } - }); - - // Autogrow - if ( input.is( "textarea" ) ) { - var extraLineHeight = 15, - keyupTimeoutBuffer = 100, - keyup = function() { - var scrollHeight = input[ 0 ].scrollHeight, - clientHeight = input[ 0 ].clientHeight; - - if ( clientHeight < scrollHeight ) { - input.height(scrollHeight + extraLineHeight); - } - }, - keyupTimeout; - - input.keyup(function() { - clearTimeout( keyupTimeout ); - keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer ); - }); - - // binding to pagechange here ensures that for pages loaded via - // ajax the height is recalculated without user input - $( document ).one( "pagechange", keyup ); - - // Issue 509: the browser is not providing scrollHeight properly until the styles load - if ( $.trim( input.val() ) ) { - // bind to the window load to make sure the height is calculated based on BOTH - // the DOM and CSS - $( window ).load( keyup ); - } - } - }, - - disable: function(){ - ( this.element.attr( "disabled", true ).is( "[type='search'],:jqmData(type='search')" ) ? - this.element.parent() : this.element ).addClass( "ui-disabled" ); - }, - - enable: function(){ - ( this.element.attr( "disabled", false).is( "[type='search'],:jqmData(type='search')" ) ? - this.element.parent() : this.element ).removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.textinput.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.listview.prototype.options.filter = false; -$.mobile.listview.prototype.options.filterPlaceholder = "Filter items..."; -$.mobile.listview.prototype.options.filterTheme = "c"; -$.mobile.listview.prototype.options.filterCallback = function( text, searchValue ){ - return text.toLowerCase().indexOf( searchValue ) === -1; -}; - -$( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function() { - - var list = $( this ), - listview = list.data( "listview" ); - - if ( !listview.options.filter ) { - return; - } - - var wrapper = $( "
", { - "class": "ui-listview-filter ui-bar-" + listview.options.filterTheme, - "role": "search" - }), - search = $( "", { - placeholder: listview.options.filterPlaceholder - }) - .attr( "data-" + $.mobile.ns + "type", "search" ) - .jqmData( "lastval", "" ) - .bind( "keyup change", function() { - - var $this = $(this), - val = this.value.toLowerCase(), - listItems = null, - lastval = $this.jqmData( "lastval" ) + "", - childItems = false, - itemtext = "", - item; - - // Change val as lastval for next execution - $this.jqmData( "lastval" , val ); - if ( val.length < lastval.length || val.indexOf(lastval) !== 0 ) { - - // Removed chars or pasted something totally different, check all items - listItems = list.children(); - } else { - - // Only chars added, not removed, only use visible subset - listItems = list.children( ":not(.ui-screen-hidden)" ); - } - - if ( val ) { - - // This handles hiding regular rows without the text we search for - // and any list dividers without regular rows shown under it - - for ( var i = listItems.length - 1; i >= 0; i-- ) { - item = $( listItems[ i ] ); - itemtext = item.jqmData( "filtertext" ) || item.text(); - - if ( item.is( "li:jqmData(role=list-divider)" ) ) { - - item.toggleClass( "ui-filter-hidequeue" , !childItems ); - - // New bucket! - childItems = false; - - } else if ( listview.options.filterCallback( itemtext, val ) ) { - - //mark to be hidden - item.toggleClass( "ui-filter-hidequeue" , true ); - } else { - - // There's a shown item in the bucket - childItems = true; - } - } - - // Show items, not marked to be hidden - listItems - .filter( ":not(.ui-filter-hidequeue)" ) - .toggleClass( "ui-screen-hidden", false ); - - // Hide items, marked to be hidden - listItems - .filter( ".ui-filter-hidequeue" ) - .toggleClass( "ui-screen-hidden", true ) - .toggleClass( "ui-filter-hidequeue", false ); - - } else { - - //filtervalue is empty => show all - listItems.toggleClass( "ui-screen-hidden", false ); - } - listview._refreshCorners(); - }) - .appendTo( wrapper ) - .textinput(); - - if ( listview.options.inset ) { - wrapper.addClass( "ui-listview-filter-inset" ); - } - - wrapper.bind( "submit", function() { - return false; - }) - .insertBefore( list ); -}); - -})( jQuery ); - -( function( $, undefined ) { - -$.widget( "mobile.slider", $.mobile.widget, { - options: { - theme: null, - trackTheme: null, - disabled: false, - initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')", - mini: false - }, - - _create: function() { - - // TODO: Each of these should have comments explain what they're for - var self = this, - - control = this.element, - - parentTheme = $.mobile.getInheritedTheme( control, "c" ), - - theme = this.options.theme || parentTheme, - - trackTheme = this.options.trackTheme || parentTheme, - - cType = control[ 0 ].nodeName.toLowerCase(), - - selectClass = ( cType == "select" ) ? "ui-slider-switch" : "", - - controlID = control.attr( "id" ), - - labelID = controlID + "-label", - - label = $( "[for='"+ controlID +"']" ).attr( "id", labelID ), - - val = function() { - return cType == "input" ? parseFloat( control.val() ) : control[0].selectedIndex; - }, - - min = cType == "input" ? parseFloat( control.attr( "min" ) ) : 0, - - max = cType == "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, - - step = window.parseFloat( control.attr( "step" ) || 1 ), - - inlineClass = ( this.options.inline || control.jqmData("inline") == true ) ? " ui-slider-inline" : "", - - miniClass = ( this.options.mini || control.jqmData("mini") ) ? " ui-slider-mini" : "", - - - domHandle = document.createElement('a'), - handle = $( domHandle ), - domSlider = document.createElement('div'), - slider = $( domSlider ), - - valuebg = control.jqmData("highlight") && cType != "select" ? (function() { - var bg = document.createElement('div'); - bg.className = 'ui-slider-bg ui-btn-active ui-btn-corner-all'; - return $( bg ).prependTo( slider ); - })() : false, - - options; - - domHandle.setAttribute( 'href', "#" ); - domSlider.setAttribute('role','application'); - domSlider.className = ['ui-slider ',selectClass," ui-btn-down-",trackTheme,' ui-btn-corner-all', inlineClass, miniClass].join(""); - domHandle.className = 'ui-slider-handle'; - domSlider.appendChild(domHandle); - - handle.buttonMarkup({ corners: true, theme: theme, shadow: true }) - .attr({ - "role": "slider", - "aria-valuemin": min, - "aria-valuemax": max, - "aria-valuenow": val(), - "aria-valuetext": val(), - "title": val(), - "aria-labelledby": labelID - }); - - $.extend( this, { - slider: slider, - handle: handle, - valuebg: valuebg, - dragging: false, - beforeStart: null, - userModified: false, - mouseMoved: false - }); - - if ( cType == "select" ) { - var wrapper = document.createElement('div'); - wrapper.className = 'ui-slider-inneroffset'; - - for(var j = 0,length = domSlider.childNodes.length;j < length;j++){ - wrapper.appendChild(domSlider.childNodes[j]); - } - - domSlider.appendChild(wrapper); - - // slider.wrapInner( "
" ); - - // make the handle move with a smooth transition - handle.addClass( "ui-slider-handle-snapping" ); - - options = control.find( "option" ); - - for(var i = 0, optionsCount = options.length; i < optionsCount; i++){ - var side = !i ? "b":"a", - sliderTheme = !i ? " ui-btn-down-" + trackTheme :( " " + $.mobile.activeBtnClass ), - sliderLabel = document.createElement('div'), - sliderImg = document.createElement('span'); - - sliderImg.className = ['ui-slider-label ui-slider-label-',side,sliderTheme," ui-btn-corner-all"].join(""); - sliderImg.setAttribute('role','img'); - sliderImg.appendChild(document.createTextNode(options[i].innerHTML)); - $(sliderImg).prependTo( slider ); - } - - self._labels = $( ".ui-slider-label", slider ); - - } - - label.addClass( "ui-slider" ); - - // monitor the input for updated values - control.addClass( cType === "input" ? "ui-slider-input" : "ui-slider-switch" ) - .change( function() { - // if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again - if (!self.mouseMoved) { - self.refresh( val(), true ); - } - }) - .keyup( function() { // necessary? - self.refresh( val(), true, true ); - }) - .blur( function() { - self.refresh( val(), true ); - }); - - // prevent screen drag when slider activated - $( document ).bind( "vmousemove", function( event ) { - if ( self.dragging ) { - // self.mouseMoved must be updated before refresh() because it will be used in the control "change" event - self.mouseMoved = true; - - if ( cType === "select" ) { - // make the handle move in sync with the mouse - handle.removeClass( "ui-slider-handle-snapping" ); - } - - self.refresh( event ); - - // only after refresh() you can calculate self.userModified - self.userModified = self.beforeStart !== control[0].selectedIndex; - return false; - } - }); - - slider.bind( "vmousedown", function( event ) { - self.dragging = true; - self.userModified = false; - self.mouseMoved = false; - - if ( cType === "select" ) { - self.beforeStart = control[0].selectedIndex; - } - - self.refresh( event ); - return false; - }) - .bind( "vclick", false ); - - slider.add( document ) - .bind( "vmouseup", function() { - if ( self.dragging ) { - - self.dragging = false; - - if ( cType === "select") { - - // make the handle move with a smooth transition - handle.addClass( "ui-slider-handle-snapping" ); - - if ( self.mouseMoved ) { - - // this is a drag, change the value only if user dragged enough - if ( self.userModified ) { - self.refresh( self.beforeStart == 0 ? 1 : 0 ); - } - else { - self.refresh( self.beforeStart ); - } - - } - else { - // this is just a click, change the value - self.refresh( self.beforeStart == 0 ? 1 : 0 ); - } - - } - - self.mouseMoved = false; - - return false; - } - }); - - slider.insertAfter( control ); - - // Only add focus class to toggle switch, sliders get it automatically from ui-btn - if( cType == 'select' ) { - this.handle.bind({ - focus: function() { - slider.addClass( $.mobile.focusClass ); - }, - - blur: function() { - slider.removeClass( $.mobile.focusClass ); - } - }); - } - - this.handle.bind({ - // NOTE force focus on handle - vmousedown: function() { - $( this ).focus(); - }, - - vclick: false, - - keydown: function( event ) { - var index = val(); - - if ( self.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 ( !self._keySliding ) { - self._keySliding = true; - $( this ).addClass( "ui-state-active" ); - } - break; - } - - // move the slider according to the keypress - switch ( event.keyCode ) { - case $.mobile.keyCode.HOME: - self.refresh( min ); - break; - case $.mobile.keyCode.END: - self.refresh( max ); - break; - case $.mobile.keyCode.PAGE_UP: - case $.mobile.keyCode.UP: - case $.mobile.keyCode.RIGHT: - self.refresh( index + step ); - break; - case $.mobile.keyCode.PAGE_DOWN: - case $.mobile.keyCode.DOWN: - case $.mobile.keyCode.LEFT: - self.refresh( index - step ); - break; - } - }, // remove active mark - - keyup: function( event ) { - if ( self._keySliding ) { - self._keySliding = false; - $( this ).removeClass( "ui-state-active" ); - } - } - }); - - this.refresh(undefined, undefined, true); - }, - - refresh: function( val, isfromControl, preventInputUpdate ) { - - if ( this.options.disabled || this.element.attr('disabled')) { - this.disable(); - } - - var control = this.element, percent, - cType = control[0].nodeName.toLowerCase(), - min = cType === "input" ? parseFloat( control.attr( "min" ) ) : 0, - max = cType === "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length - 1, - step = (cType === "input" && parseFloat( control.attr( "step" ) ) > 0) ? parseFloat(control.attr("step")) : 1; - - if ( typeof val === "object" ) { - var data = val, - // a slight tolerance helped get to the ends of the slider - tol = 8; - if ( !this.dragging || - data.pageX < this.slider.offset().left - tol || - data.pageX > this.slider.offset().left + this.slider.width() + tol ) { - return; - } - percent = Math.round( ( ( data.pageX - this.slider.offset().left ) / this.slider.width() ) * 100 ); - } else { - if ( val == null ) { - val = cType === "input" ? parseFloat( control.val() || 0 ) : control[0].selectedIndex; - } - percent = ( parseFloat( val ) - min ) / ( max - min ) * 100; - } - - if ( isNaN( percent ) ) { - return; - } - - if ( percent < 0 ) { - percent = 0; - } - - if ( percent > 100 ) { - percent = 100; - } - - var newval = ( percent / 100 ) * ( max - min ) + min; - - //from jQuery UI slider, the following source will round to the nearest step - var valModStep = ( newval - min ) % step; - var alignValue = newval - valModStep; - - if ( Math.abs( valModStep ) * 2 >= step ) { - alignValue += ( valModStep > 0 ) ? step : ( -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 ( newval < min ) { - newval = min; - } - - if ( newval > max ) { - newval = max; - } - - this.handle.css( "left", percent + "%" ); - this.handle.attr( { - "aria-valuenow": cType === "input" ? newval : control.find( "option" ).eq( newval ).attr( "value" ), - "aria-valuetext": cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText(), - title: cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText() - }); - this.valuebg && this.valuebg.css( "width", percent + "%" ); - - // drag the label widths - if ( this._labels ) { - var 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).is( ".ui-slider-label-a" ); - $( this ).width( ( ab ? aPercent : bPercent ) + "%" ); - }); - } - - if ( !preventInputUpdate ) { - var valueChanged = false; - - // update control"s value - if ( cType === "input" ) { - valueChanged = control.val() !== newval; - control.val( newval ); - } else { - valueChanged = control[ 0 ].selectedIndex !== newval; - control[ 0 ].selectedIndex = newval; - } - if ( !isfromControl && valueChanged ) { - control.trigger( "change" ); - } - } - }, - - enable: function() { - this.element.attr( "disabled", false ); - this.slider.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); - return this._setOption( "disabled", false ); - }, - - disable: function() { - this.element.attr( "disabled", true ); - this.slider.addClass( "ui-disabled" ).attr( "aria-disabled", true ); - return this._setOption( "disabled", true ); - } - -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.slider.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.selectmenu", $.mobile.widget, { - options: { - theme: null, - disabled: false, - icon: "arrow-d", - iconpos: "right", - inline: false, - corners: true, - shadow: true, - iconshadow: true, - overlayTheme: "a", - 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, - initSelector: "select:not(:jqmData(role='slider'))", - mini: false - }, - - _button: function(){ - return $( "
" ); - }, - - _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 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"; - } - - this.select = this.element.wrap( "
" ); - this.selectID = this.select.attr( "id" ); - this.label = $( "label[for='"+ this.selectID +"']" ).addClass( "ui-select" ); - this.isMultiple = this.select[ 0 ].multiple; - if ( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.select, "c" ); - } - }, - - _create: function() { - this._preExtension(); - - // Allows for extension of the native select for custom selects and other plugins - // see select.custom for example extension - // TODO explore plugin registration - this._trigger( "beforeCreate" ); - - this.button = this._button(); - - var self = this, - - options = this.options, - - // IE throws an exception at options.item() function when - // there is no selected item - // select first in this case - selectedIndex = this.select[ 0 ].selectedIndex == -1 ? 0 : this.select[ 0 ].selectedIndex, - - // TODO values buttonId and menuId are undefined here - button = this.button - .text( $( this.select[ 0 ].options.item( selectedIndex ) ).text() ) - .insertBefore( this.select ) - .buttonMarkup( { - theme: options.theme, - icon: options.icon, - iconpos: options.iconpos, - inline: options.inline, - corners: options.corners, - shadow: options.shadow, - iconshadow: options.iconshadow, - mini: options.mini - }); - - // 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 ) { - this.select.addClass( "ui-select-nativeonly" ); - } - - // Add counter for multi selects - if ( this.isMultiple ) { - this.buttonCount = $( "" ) - .addClass( "ui-li-count ui-btn-up-c ui-btn-corner-all" ) - .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(); - }); - - 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 ); - }) - .bind( "change blur", function() { - self.button.removeClass( "ui-btn-down-" + self.options.theme ); - }); - - // 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 ); - } - }) - .bind( "mouseup", 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(); - - this.button.find( ".ui-btn-text" ).text( function() { - if ( !self.isMultiple ) { - return selected.text(); - } - - return selected.length ? selected.map( function() { - return $( this ).text(); - }).get().join( ", " ) : self.placeholder; - }); - }, - - setButtonCount: function() { - var selected = this.selected(); - - // multiple count inside button - if ( this.isMultiple ) { - this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length ); - } - }, - - refresh: function() { - this.setButtonText(); - this.setButtonCount(); - }, - - // 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-disabled" ); - }, - - enable: function() { - this._setDisabled( false ); - this.button.removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.selectmenu.prototype.enhanceWithin( e.target, true ); -}); -})( jQuery ); - -/* -* custom "selectmenu" plugin -*/ - -(function( $, undefined ) { - var extendSelect = function( widget ){ - - var select = widget.select, - selectID = widget.selectID, - label = widget.label, - thisPage = widget.select.closest( ".ui-page" ), - screen = $( "
", {"class": "ui-selectmenu-screen ui-screen-hidden"} ).appendTo( thisPage ), - selectOptions = widget._selectOptions(), - isMultiple = widget.isMultiple = widget.select[ 0 ].multiple, - buttonId = selectID + "-button", - menuId = selectID + "-menu", - menuPage = $( "
" + - "
" + - "
" + label.getEncodedText() + "
"+ - "
"+ - "
"+ - "
" ), - - listbox = $("
", { "class": "ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-" + widget.options.overlayTheme + " " + $.mobile.defaultDialogTransition } ).insertAfter(screen), - - list = $( "