From 0ef8fce5a561a8629fe8dc0902a4d477f654aa6e Mon Sep 17 00:00:00 2001 From: woutervanwijk Date: Thu, 19 Jun 2014 20:32:47 +0200 Subject: [PATCH] updates for musicbox beta2. Icons added, search works, lotsa bugs fixed --- webclient/css/font-awesome.css | 333 +- webclient/css/font-awesome.min.css | 399 +- webclient/css/fonts/Flat-UI-Icons-24.ttf | Bin 4484 -> 0 bytes webclient/css/fonts/Flat-UI-Icons-24.woff | Bin 6076 -> 0 bytes webclient/css/fonts/FontAwesome.otf | Bin 0 -> 75188 bytes webclient/css/fonts/fontawesome-webfont.eot | Bin 0 -> 72449 bytes webclient/css/fonts/fontawesome-webfont.svg | 504 + webclient/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 141564 bytes webclient/css/fonts/fontawesome-webfont.woff | Bin 0 -> 83760 bytes webclient/css/fonts/lato-black.ttf | Bin 39048 -> 0 bytes webclient/css/fonts/lato-black.woff | Bin 35308 -> 0 bytes webclient/css/fonts/lato-bold.ttf | Bin 39164 -> 0 bytes webclient/css/fonts/lato-bold.woff | Bin 37256 -> 0 bytes webclient/css/fonts/lato-italic.ttf | Bin 39696 -> 0 bytes webclient/css/fonts/lato-italic.woff | Bin 36700 -> 0 bytes webclient/css/fonts/lato-regular.ttf | Bin 38588 -> 0 bytes webclient/css/fonts/lato-regular.woff | Bin 35852 -> 0 bytes webclient/css/webclient.css | 13 + webclient/dialog-success.html | 2 +- webclient/index.html | 13 +- .../jquery-1.10.2.nonmin.js} | 0 webclient/js/{ => bk}/jquery.mobile-1.3.2.js | 0 webclient/js/{ => bk}/jquery.mobile-1.3.2.map | 0 webclient/js/functionsvars.js | 45 +- webclient/js/gui.js | 59 +- webclient/js/jquery-1.8.3.js | 9472 ------------- webclient/js/jquery-1.8.3.min.js | 2 - webclient/js/jquery-2.0.3.min.js | 6 - webclient/js/jquery.mobile-1.3.1.js | 11191 ---------------- webclient/js/jquery.mobile-1.3.1.min.js | 7 - webclient/js/jquery.mobile-1.3.1.min.map | 1 - webclient/js/library.js | 23 +- webclient/js/process_ws.js | 17 +- webclient/js/radiostations.js | 15 +- webclient/settings/index.html | 39 +- webclient/system.html | 2 +- 36 files changed, 908 insertions(+), 21235 deletions(-) delete mode 100644 webclient/css/fonts/Flat-UI-Icons-24.ttf delete mode 100644 webclient/css/fonts/Flat-UI-Icons-24.woff create mode 100644 webclient/css/fonts/FontAwesome.otf create mode 100755 webclient/css/fonts/fontawesome-webfont.eot create mode 100755 webclient/css/fonts/fontawesome-webfont.svg create mode 100755 webclient/css/fonts/fontawesome-webfont.ttf create mode 100755 webclient/css/fonts/fontawesome-webfont.woff delete mode 100644 webclient/css/fonts/lato-black.ttf delete mode 100644 webclient/css/fonts/lato-black.woff delete mode 100644 webclient/css/fonts/lato-bold.ttf delete mode 100644 webclient/css/fonts/lato-bold.woff delete mode 100644 webclient/css/fonts/lato-italic.ttf delete mode 100644 webclient/css/fonts/lato-italic.woff delete mode 100644 webclient/css/fonts/lato-regular.ttf delete mode 100644 webclient/css/fonts/lato-regular.woff rename webclient/js/{jquery-1.10.2.js => bk/jquery-1.10.2.nonmin.js} (100%) rename webclient/js/{ => bk}/jquery.mobile-1.3.2.js (100%) rename webclient/js/{ => bk}/jquery.mobile-1.3.2.map (100%) delete mode 100644 webclient/js/jquery-1.8.3.js delete mode 100644 webclient/js/jquery-1.8.3.min.js delete mode 100644 webclient/js/jquery-2.0.3.min.js delete mode 100644 webclient/js/jquery.mobile-1.3.1.js delete mode 100644 webclient/js/jquery.mobile-1.3.1.min.js delete mode 100644 webclient/js/jquery.mobile-1.3.1.min.map mode change 100644 => 120000 webclient/js/radiostations.js diff --git a/webclient/css/font-awesome.css b/webclient/css/font-awesome.css index fff309b..fe35e14 100644 --- a/webclient/css/font-awesome.css +++ b/webclient/css/font-awesome.css @@ -1,34 +1,13 @@ /*! - * Font Awesome 4.0.1 - * the iconic font designed for Bootstrap - * ------------------------------------------------------------------------------ - * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. - * - * License - * ------------------------------------------------------------------------------ - * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL - * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html - * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ - * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" - * - * Author - Dave Gandy - * ------------------------------------------------------------------------------ - * Email: dave@fontawesome.io - * Twitter: http://twitter.com/davegandy - * Work: Lead Product Designer @ Kyruus - http://kyruus.com + * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.0.1'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg'); + src: url('fonts/fontawesome-webfont.eot?v=4.1.0'); + src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'), url('fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -43,7 +22,7 @@ } /* makes the font 33% larger relative to the icon container */ .fa-lg { - font-size: 1.3333333333333333em; + font-size: 1.33333333em; line-height: 0.75em; vertical-align: -15%; } @@ -60,12 +39,12 @@ font-size: 5em; } .fa-fw { - width: 1.2857142857142858em; + width: 1.28571429em; text-align: center; } .fa-ul { padding-left: 0; - margin-left: 2.142857142857143em; + margin-left: 2.14285714em; list-style-type: none; } .fa-ul > li { @@ -73,13 +52,13 @@ } .fa-li { position: absolute; - left: -2.142857142857143em; - width: 2.142857142857143em; - top: 0.14285714285714285em; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; text-align: center; } .fa-li.fa-lg { - left: -1.8571428571428572em; + left: -1.85714286em; } .fa-border { padding: .2em .25em .15em; @@ -128,19 +107,13 @@ -o-transform: rotate(359deg); } } -@-ms-keyframes spin { - 0% { - -ms-transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); - } -} @keyframes spin { 0% { + -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { + -webkit-transform: rotate(359deg); transform: rotate(359deg); } } @@ -390,6 +363,8 @@ .fa-video-camera:before { content: "\f03d"; } +.fa-photo:before, +.fa-image:before, .fa-picture-o:before { content: "\f03e"; } @@ -415,7 +390,7 @@ .fa-check-square-o:before { content: "\f046"; } -.fa-move:before { +.fa-arrows:before { content: "\f047"; } .fa-step-backward:before { @@ -500,10 +475,10 @@ .fa-share:before { content: "\f064"; } -.fa-resize-full:before { +.fa-expand:before { content: "\f065"; } -.fa-resize-small:before { +.fa-compress:before { content: "\f066"; } .fa-plus:before { @@ -570,10 +545,10 @@ .fa-folder-open:before { content: "\f07c"; } -.fa-resize-vertical:before { +.fa-arrows-v:before { content: "\f07d"; } -.fa-resize-horizontal:before { +.fa-arrows-h:before { content: "\f07e"; } .fa-bar-chart-o:before { @@ -718,10 +693,11 @@ .fa-briefcase:before { content: "\f0b1"; } -.fa-fullscreen:before { +.fa-arrows-alt:before { content: "\f0b2"; } -.fa-group:before { +.fa-group:before, +.fa-users:before { content: "\f0c0"; } .fa-chain:before, @@ -752,7 +728,9 @@ .fa-square:before { content: "\f0c8"; } -.fa-reorder:before { +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { content: "\f0c9"; } .fa-list-ul:before { @@ -811,11 +789,11 @@ content: "\f0dc"; } .fa-sort-down:before, -.fa-sort-asc:before { +.fa-sort-desc:before { content: "\f0dd"; } .fa-sort-up:before, -.fa-sort-desc:before { +.fa-sort-asc:before { content: "\f0de"; } .fa-envelope:before { @@ -889,10 +867,10 @@ .fa-file-text-o:before { content: "\f0f6"; } -.fa-building:before { +.fa-building-o:before { content: "\f0f7"; } -.fa-hospital:before { +.fa-hospital-o:before { content: "\f0f8"; } .fa-ambulance:before { @@ -978,12 +956,6 @@ .fa-folder-open-o:before { content: "\f115"; } -.fa-expand-o:before { - content: "\f116"; -} -.fa-collapse-o:before { - content: "\f117"; -} .fa-smile-o:before { content: "\f118"; } @@ -1011,12 +983,10 @@ .fa-code:before { content: "\f121"; } +.fa-mail-reply-all:before, .fa-reply-all:before { content: "\f122"; } -.fa-mail-reply-all:before { - content: "\f122"; -} .fa-star-half-empty:before, .fa-star-half-full:before, .fa-star-half-o:before { @@ -1098,16 +1068,16 @@ .fa-anchor:before { content: "\f13d"; } -.fa-unlock-o:before { +.fa-unlock-alt:before { content: "\f13e"; } .fa-bullseye:before { content: "\f140"; } -.fa-ellipsis-horizontal:before { +.fa-ellipsis-h:before { content: "\f141"; } -.fa-ellipsis-vertical:before { +.fa-ellipsis-v:before { content: "\f142"; } .fa-rss-square:before { @@ -1359,3 +1329,238 @@ .fa-try:before { content: "\f195"; } +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-square:before, +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} diff --git a/webclient/css/font-awesome.min.css b/webclient/css/font-awesome.min.css index a93257a..c18f8a9 100644 --- a/webclient/css/font-awesome.min.css +++ b/webclient/css/font-awesome.min.css @@ -1,395 +1,4 @@ -@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.1');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%} -.fa-2x{font-size:2em} -.fa-3x{font-size:3em} -.fa-4x{font-size:4em} -.fa-5x{font-size:5em} -.fa-fw{width:1.2857142857142858em;text-align:center} -.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative} -.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em} -.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em} -.pull-right{float:right} -.pull-left{float:left} -.fa.pull-left{margin-right:.3em} -.fa.pull-right{margin-left:.3em} -.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear} -@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)} 100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)} 100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)} 100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)} 100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)} 100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)} -.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)} -.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)} -.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)} -.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)} -.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle} -.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center} -.fa-stack-1x{line-height:inherit} -.fa-stack-2x{font-size:2em} -.fa-inverse{color:#fff} -.fa-glass:before{content:"\f000"} -.fa-music:before{content:"\f001"} -.fa-search:before{content:"\f002"} -.fa-envelope-o:before{content:"\f003"} -.fa-heart:before{content:"\f004"} -.fa-star:before{content:"\f005"} -.fa-star-o:before{content:"\f006"} -.fa-user:before{content:"\f007"} -.fa-film:before{content:"\f008"} -.fa-th-large:before{content:"\f009"} -.fa-th:before{content:"\f00a"} -.fa-th-list:before{content:"\f00b"} -.fa-check:before{content:"\f00c"} -.fa-times:before{content:"\f00d"} -.fa-search-plus:before{content:"\f00e"} -.fa-search-minus:before{content:"\f010"} -.fa-power-off:before{content:"\f011"} -.fa-signal:before{content:"\f012"} -.fa-gear:before,.fa-cog:before{content:"\f013"} -.fa-trash-o:before{content:"\f014"} -.fa-home:before{content:"\f015"} -.fa-file-o:before{content:"\f016"} -.fa-clock-o:before{content:"\f017"} -.fa-road:before{content:"\f018"} -.fa-download:before{content:"\f019"} -.fa-arrow-circle-o-down:before{content:"\f01a"} -.fa-arrow-circle-o-up:before{content:"\f01b"} -.fa-inbox:before{content:"\f01c"} -.fa-play-circle-o:before{content:"\f01d"} -.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"} -.fa-refresh:before{content:"\f021"} -.fa-list-alt:before{content:"\f022"} -.fa-lock:before{content:"\f023"} -.fa-flag:before{content:"\f024"} -.fa-headphones:before{content:"\f025"} -.fa-volume-off:before{content:"\f026"} -.fa-volume-down:before{content:"\f027"} -.fa-volume-up:before{content:"\f028"} -.fa-qrcode:before{content:"\f029"} -.fa-barcode:before{content:"\f02a"} -.fa-tag:before{content:"\f02b"} -.fa-tags:before{content:"\f02c"} -.fa-book:before{content:"\f02d"} -.fa-bookmark:before{content:"\f02e"} -.fa-print:before{content:"\f02f"} -.fa-camera:before{content:"\f030"} -.fa-font:before{content:"\f031"} -.fa-bold:before{content:"\f032"} -.fa-italic:before{content:"\f033"} -.fa-text-height:before{content:"\f034"} -.fa-text-width:before{content:"\f035"} -.fa-align-left:before{content:"\f036"} -.fa-align-center:before{content:"\f037"} -.fa-align-right:before{content:"\f038"} -.fa-align-justify:before{content:"\f039"} -.fa-list:before{content:"\f03a"} -.fa-dedent:before,.fa-outdent:before{content:"\f03b"} -.fa-indent:before{content:"\f03c"} -.fa-video-camera:before{content:"\f03d"} -.fa-picture-o:before{content:"\f03e"} -.fa-pencil:before{content:"\f040"} -.fa-map-marker:before{content:"\f041"} -.fa-adjust:before{content:"\f042"} -.fa-tint:before{content:"\f043"} -.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"} -.fa-share-square-o:before{content:"\f045"} -.fa-check-square-o:before{content:"\f046"} -.fa-move:before{content:"\f047"} -.fa-step-backward:before{content:"\f048"} -.fa-fast-backward:before{content:"\f049"} -.fa-backward:before{content:"\f04a"} -.fa-play:before{content:"\f04b"} -.fa-pause:before{content:"\f04c"} -.fa-stop:before{content:"\f04d"} -.fa-forward:before{content:"\f04e"} -.fa-fast-forward:before{content:"\f050"} -.fa-step-forward:before{content:"\f051"} -.fa-eject:before{content:"\f052"} -.fa-chevron-left:before{content:"\f053"} -.fa-chevron-right:before{content:"\f054"} -.fa-plus-circle:before{content:"\f055"} -.fa-minus-circle:before{content:"\f056"} -.fa-times-circle:before{content:"\f057"} -.fa-check-circle:before{content:"\f058"} -.fa-question-circle:before{content:"\f059"} -.fa-info-circle:before{content:"\f05a"} -.fa-crosshairs:before{content:"\f05b"} -.fa-times-circle-o:before{content:"\f05c"} -.fa-check-circle-o:before{content:"\f05d"} -.fa-ban:before{content:"\f05e"} -.fa-arrow-left:before{content:"\f060"} -.fa-arrow-right:before{content:"\f061"} -.fa-arrow-up:before{content:"\f062"} -.fa-arrow-down:before{content:"\f063"} -.fa-mail-forward:before,.fa-share:before{content:"\f064"} -.fa-resize-full:before{content:"\f065"} -.fa-resize-small:before{content:"\f066"} -.fa-plus:before{content:"\f067"} -.fa-minus:before{content:"\f068"} -.fa-asterisk:before{content:"\f069"} -.fa-exclamation-circle:before{content:"\f06a"} -.fa-gift:before{content:"\f06b"} -.fa-leaf:before{content:"\f06c"} -.fa-fire:before{content:"\f06d"} -.fa-eye:before{content:"\f06e"} -.fa-eye-slash:before{content:"\f070"} -.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"} -.fa-plane:before{content:"\f072"} -.fa-calendar:before{content:"\f073"} -.fa-random:before{content:"\f074"} -.fa-comment:before{content:"\f075"} -.fa-magnet:before{content:"\f076"} -.fa-chevron-up:before{content:"\f077"} -.fa-chevron-down:before{content:"\f078"} -.fa-retweet:before{content:"\f079"} -.fa-shopping-cart:before{content:"\f07a"} -.fa-folder:before{content:"\f07b"} -.fa-folder-open:before{content:"\f07c"} -.fa-resize-vertical:before{content:"\f07d"} -.fa-resize-horizontal:before{content:"\f07e"} -.fa-bar-chart-o:before{content:"\f080"} -.fa-twitter-square:before{content:"\f081"} -.fa-facebook-square:before{content:"\f082"} -.fa-camera-retro:before{content:"\f083"} -.fa-key:before{content:"\f084"} -.fa-gears:before,.fa-cogs:before{content:"\f085"} -.fa-comments:before{content:"\f086"} -.fa-thumbs-o-up:before{content:"\f087"} -.fa-thumbs-o-down:before{content:"\f088"} -.fa-star-half:before{content:"\f089"} -.fa-heart-o:before{content:"\f08a"} -.fa-sign-out:before{content:"\f08b"} -.fa-linkedin-square:before{content:"\f08c"} -.fa-thumb-tack:before{content:"\f08d"} -.fa-external-link:before{content:"\f08e"} -.fa-sign-in:before{content:"\f090"} -.fa-trophy:before{content:"\f091"} -.fa-github-square:before{content:"\f092"} -.fa-upload:before{content:"\f093"} -.fa-lemon-o:before{content:"\f094"} -.fa-phone:before{content:"\f095"} -.fa-square-o:before{content:"\f096"} -.fa-bookmark-o:before{content:"\f097"} -.fa-phone-square:before{content:"\f098"} -.fa-twitter:before{content:"\f099"} -.fa-facebook:before{content:"\f09a"} -.fa-github:before{content:"\f09b"} -.fa-unlock:before{content:"\f09c"} -.fa-credit-card:before{content:"\f09d"} -.fa-rss:before{content:"\f09e"} -.fa-hdd-o:before{content:"\f0a0"} -.fa-bullhorn:before{content:"\f0a1"} -.fa-bell:before{content:"\f0f3"} -.fa-certificate:before{content:"\f0a3"} -.fa-hand-o-right:before{content:"\f0a4"} -.fa-hand-o-left:before{content:"\f0a5"} -.fa-hand-o-up:before{content:"\f0a6"} -.fa-hand-o-down:before{content:"\f0a7"} -.fa-arrow-circle-left:before{content:"\f0a8"} -.fa-arrow-circle-right:before{content:"\f0a9"} -.fa-arrow-circle-up:before{content:"\f0aa"} -.fa-arrow-circle-down:before{content:"\f0ab"} -.fa-globe:before{content:"\f0ac"} -.fa-wrench:before{content:"\f0ad"} -.fa-tasks:before{content:"\f0ae"} -.fa-filter:before{content:"\f0b0"} -.fa-briefcase:before{content:"\f0b1"} -.fa-fullscreen:before{content:"\f0b2"} -.fa-group:before{content:"\f0c0"} -.fa-chain:before,.fa-link:before{content:"\f0c1"} -.fa-cloud:before{content:"\f0c2"} -.fa-flask:before{content:"\f0c3"} -.fa-cut:before,.fa-scissors:before{content:"\f0c4"} -.fa-copy:before,.fa-files-o:before{content:"\f0c5"} -.fa-paperclip:before{content:"\f0c6"} -.fa-save:before,.fa-floppy-o:before{content:"\f0c7"} -.fa-square:before{content:"\f0c8"} -.fa-reorder:before{content:"\f0c9"} -.fa-list-ul:before{content:"\f0ca"} -.fa-list-ol:before{content:"\f0cb"} -.fa-strikethrough:before{content:"\f0cc"} -.fa-underline:before{content:"\f0cd"} -.fa-table:before{content:"\f0ce"} -.fa-magic:before{content:"\f0d0"} -.fa-truck:before{content:"\f0d1"} -.fa-pinterest:before{content:"\f0d2"} -.fa-pinterest-square:before{content:"\f0d3"} -.fa-google-plus-square:before{content:"\f0d4"} -.fa-google-plus:before{content:"\f0d5"} -.fa-money:before{content:"\f0d6"} -.fa-caret-down:before{content:"\f0d7"} -.fa-caret-up:before{content:"\f0d8"} -.fa-caret-left:before{content:"\f0d9"} -.fa-caret-right:before{content:"\f0da"} -.fa-columns:before{content:"\f0db"} -.fa-unsorted:before,.fa-sort:before{content:"\f0dc"} -.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"} -.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"} -.fa-envelope:before{content:"\f0e0"} -.fa-linkedin:before{content:"\f0e1"} -.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"} -.fa-legal:before,.fa-gavel:before{content:"\f0e3"} -.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"} -.fa-comment-o:before{content:"\f0e5"} -.fa-comments-o:before{content:"\f0e6"} -.fa-flash:before,.fa-bolt:before{content:"\f0e7"} -.fa-sitemap:before{content:"\f0e8"} -.fa-umbrella:before{content:"\f0e9"} -.fa-paste:before,.fa-clipboard:before{content:"\f0ea"} -.fa-lightbulb-o:before{content:"\f0eb"} -.fa-exchange:before{content:"\f0ec"} -.fa-cloud-download:before{content:"\f0ed"} -.fa-cloud-upload:before{content:"\f0ee"} -.fa-user-md:before{content:"\f0f0"} -.fa-stethoscope:before{content:"\f0f1"} -.fa-suitcase:before{content:"\f0f2"} -.fa-bell-o:before{content:"\f0a2"} -.fa-coffee:before{content:"\f0f4"} -.fa-cutlery:before{content:"\f0f5"} -.fa-file-text-o:before{content:"\f0f6"} -.fa-building:before{content:"\f0f7"} -.fa-hospital:before{content:"\f0f8"} -.fa-ambulance:before{content:"\f0f9"} -.fa-medkit:before{content:"\f0fa"} -.fa-fighter-jet:before{content:"\f0fb"} -.fa-beer:before{content:"\f0fc"} -.fa-h-square:before{content:"\f0fd"} -.fa-plus-square:before{content:"\f0fe"} -.fa-angle-double-left:before{content:"\f100"} -.fa-angle-double-right:before{content:"\f101"} -.fa-angle-double-up:before{content:"\f102"} -.fa-angle-double-down:before{content:"\f103"} -.fa-angle-left:before{content:"\f104"} -.fa-angle-right:before{content:"\f105"} -.fa-angle-up:before{content:"\f106"} -.fa-angle-down:before{content:"\f107"} -.fa-desktop:before{content:"\f108"} -.fa-laptop:before{content:"\f109"} -.fa-tablet:before{content:"\f10a"} -.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"} -.fa-circle-o:before{content:"\f10c"} -.fa-quote-left:before{content:"\f10d"} -.fa-quote-right:before{content:"\f10e"} -.fa-spinner:before{content:"\f110"} -.fa-circle:before{content:"\f111"} -.fa-mail-reply:before,.fa-reply:before{content:"\f112"} -.fa-github-alt:before{content:"\f113"} -.fa-folder-o:before{content:"\f114"} -.fa-folder-open-o:before{content:"\f115"} -.fa-expand-o:before{content:"\f116"} -.fa-collapse-o:before{content:"\f117"} -.fa-smile-o:before{content:"\f118"} -.fa-frown-o:before{content:"\f119"} -.fa-meh-o:before{content:"\f11a"} -.fa-gamepad:before{content:"\f11b"} -.fa-keyboard-o:before{content:"\f11c"} -.fa-flag-o:before{content:"\f11d"} -.fa-flag-checkered:before{content:"\f11e"} -.fa-terminal:before{content:"\f120"} -.fa-code:before{content:"\f121"} -.fa-reply-all:before{content:"\f122"} -.fa-mail-reply-all:before{content:"\f122"} -.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"} -.fa-location-arrow:before{content:"\f124"} -.fa-crop:before{content:"\f125"} -.fa-code-fork:before{content:"\f126"} -.fa-unlink:before,.fa-chain-broken:before{content:"\f127"} -.fa-question:before{content:"\f128"} -.fa-info:before{content:"\f129"} -.fa-exclamation:before{content:"\f12a"} -.fa-superscript:before{content:"\f12b"} -.fa-subscript:before{content:"\f12c"} -.fa-eraser:before{content:"\f12d"} -.fa-puzzle-piece:before{content:"\f12e"} -.fa-microphone:before{content:"\f130"} -.fa-microphone-slash:before{content:"\f131"} -.fa-shield:before{content:"\f132"} -.fa-calendar-o:before{content:"\f133"} -.fa-fire-extinguisher:before{content:"\f134"} -.fa-rocket:before{content:"\f135"} -.fa-maxcdn:before{content:"\f136"} -.fa-chevron-circle-left:before{content:"\f137"} -.fa-chevron-circle-right:before{content:"\f138"} -.fa-chevron-circle-up:before{content:"\f139"} -.fa-chevron-circle-down:before{content:"\f13a"} -.fa-html5:before{content:"\f13b"} -.fa-css3:before{content:"\f13c"} -.fa-anchor:before{content:"\f13d"} -.fa-unlock-o:before{content:"\f13e"} -.fa-bullseye:before{content:"\f140"} -.fa-ellipsis-horizontal:before{content:"\f141"} -.fa-ellipsis-vertical:before{content:"\f142"} -.fa-rss-square:before{content:"\f143"} -.fa-play-circle:before{content:"\f144"} -.fa-ticket:before{content:"\f145"} -.fa-minus-square:before{content:"\f146"} -.fa-minus-square-o:before{content:"\f147"} -.fa-level-up:before{content:"\f148"} -.fa-level-down:before{content:"\f149"} -.fa-check-square:before{content:"\f14a"} -.fa-pencil-square:before{content:"\f14b"} -.fa-external-link-square:before{content:"\f14c"} -.fa-share-square:before{content:"\f14d"} -.fa-compass:before{content:"\f14e"} -.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"} -.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"} -.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"} -.fa-euro:before,.fa-eur:before{content:"\f153"} -.fa-gbp:before{content:"\f154"} -.fa-dollar:before,.fa-usd:before{content:"\f155"} -.fa-rupee:before,.fa-inr:before{content:"\f156"} -.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"} -.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"} -.fa-won:before,.fa-krw:before{content:"\f159"} -.fa-bitcoin:before,.fa-btc:before{content:"\f15a"} -.fa-file:before{content:"\f15b"} -.fa-file-text:before{content:"\f15c"} -.fa-sort-alpha-asc:before{content:"\f15d"} -.fa-sort-alpha-desc:before{content:"\f15e"} -.fa-sort-amount-asc:before{content:"\f160"} -.fa-sort-amount-desc:before{content:"\f161"} -.fa-sort-numeric-asc:before{content:"\f162"} -.fa-sort-numeric-desc:before{content:"\f163"} -.fa-thumbs-up:before{content:"\f164"} -.fa-thumbs-down:before{content:"\f165"} -.fa-youtube-square:before{content:"\f166"} -.fa-youtube:before{content:"\f167"} -.fa-xing:before{content:"\f168"} -.fa-xing-square:before{content:"\f169"} -.fa-youtube-play:before{content:"\f16a"} -.fa-dropbox:before{content:"\f16b"} -.fa-stack-overflow:before{content:"\f16c"} -.fa-instagram:before{content:"\f16d"} -.fa-flickr:before{content:"\f16e"} -.fa-adn:before{content:"\f170"} -.fa-bitbucket:before{content:"\f171"} -.fa-bitbucket-square:before{content:"\f172"} -.fa-tumblr:before{content:"\f173"} -.fa-tumblr-square:before{content:"\f174"} -.fa-long-arrow-down:before{content:"\f175"} -.fa-long-arrow-up:before{content:"\f176"} -.fa-long-arrow-left:before{content:"\f177"} -.fa-long-arrow-right:before{content:"\f178"} -.fa-apple:before{content:"\f179"} -.fa-windows:before{content:"\f17a"} -.fa-android:before{content:"\f17b"} -.fa-linux:before{content:"\f17c"} -.fa-dribbble:before{content:"\f17d"} -.fa-skype:before{content:"\f17e"} -.fa-foursquare:before{content:"\f180"} -.fa-trello:before{content:"\f181"} -.fa-female:before{content:"\f182"} -.fa-male:before{content:"\f183"} -.fa-gittip:before{content:"\f184"} -.fa-sun-o:before{content:"\f185"} -.fa-moon-o:before{content:"\f186"} -.fa-archive:before{content:"\f187"} -.fa-bug:before{content:"\f188"} -.fa-vk:before{content:"\f189"} -.fa-weibo:before{content:"\f18a"} -.fa-renren:before{content:"\f18b"} -.fa-pagelines:before{content:"\f18c"} -.fa-stack-exchange:before{content:"\f18d"} -.fa-arrow-circle-o-right:before{content:"\f18e"} -.fa-arrow-circle-o-left:before{content:"\f190"} -.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"} -.fa-dot-circle-o:before{content:"\f192"} -.fa-wheelchair:before{content:"\f193"} -.fa-vimeo-square:before{content:"\f194"} -.fa-turkish-lira:before,.fa-try:before{content:"\f195"} +/*! + * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('fonts/fontawesome-webfont.eot?v=4.1.0');src:url('fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'),url('fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'),url('fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"} \ No newline at end of file diff --git a/webclient/css/fonts/Flat-UI-Icons-24.ttf b/webclient/css/fonts/Flat-UI-Icons-24.ttf deleted file mode 100644 index 4e7a912c5fd27485b59de4aa3bbba028120031f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4484 zcmds4U5p#m6~1SF?HT{uGhXj*ykk2agLl{K9sdQAI2)2|NET>HvYP;*%_@Za?rxf& zimFuX13zt2C@)=!wnC_t5KUB}K7=A9s_;l7cqxexP{n!ZOVT2wHf_}wyWbs;!v>n7 z_OWBloS%E|Ip>~p?m5?t7-K=U$V9ena&pJLd;j|UpBalD0C#Zn#!ZuK6H`Fn4chw3 z_AzJdcOPXKqg|l)?46rE+FJdm-!dljfp`D@+2cn$9Y|u)35@&pANkg!Z@qO4wD=NZ z+A9b4%|7zaeXo3qv5)Z94}c*>JAcF41n89q=1x3TJj31w{W|D9M;7+ZW_G0?!TKYh zow?b^j-8pMIaQ5bUFW99=kmBKE;F^hGve{O^qK4eztBel_#; z@S5vP7r*Q9KCg$>|z8Md;&j;g>i3oIBklSJ^8vvbE5~fqH zhDjMCdmTYIL2l9 zaBl$OmdXDPdj{LEU9ok1T@@v&6-tz|b81!rqpKEQs0&kwa%zYS#YiTg-{Cf3D4CYZ zX-cMP9o2^@O$N}4S!p8h+pRGnlYY=yuLBsIUGsX-yAL7k_15#q`2~h<+^fXx#?Gf za>QHx@jyOb&)ej?wR~!d?T} z5G{r+zfbfB`+jt2YUCow-FBI|>O-*lKl)_0v*JxOf!@AZ!k4aO9PC1($ zXEV=1i5c#mFEE|OkmV(whXuRPaF9AfM7df63Drrw(k`wP8^4<9I2YbN^laj%oXR>$mIj&$q2wwQZF}y1yWUKHT6)N@vks=O+QtO*6%C#GH5OqR*qKE^LCV5gJX=Gg zx~b&_FP=>kvG`)60f(QBrREmniN$&yv6_yhh!&o>Ff%+7kET*llXgt6-hTV-9mXkQ z_ismB1UB5cOqbAklf3H6$cGzeWZ4N3yI!i$**0{b>h64erwK9pk)>y>RO})m-Q2me zi5vk+hjWgTn4XN^U5ZH?4&fo8JRs~|vu5|&Z8h7j<>_>;;zVO=a`k8)TaQJ7mGbSY%?F#! z2j@_f?5b-&JWMTm%dHt^0)-xCyD*DVo(0We6_vf}K?mawXeUV@%JS2){FI`U<*@t| z-lye|Jnk~VA793#QyAf+pPSKRhUIc^8NbuHx55@1W>vP9O|q>Fd66Hc8q(g4x{#}J zm@roh2KO|2=USnH@bU3Nx7`erm{53ZQCv}GInzkyY88{G6RK>2et4Tu9BnoqXwKkm zj^0G=Oy!VM#Y(9?zgRB%v|MI>M&)?kl z;outgH1{w7zFzNt=vS&bpbHa%Fev)OrmFrxRR&Oc-2PvGT~P*g@h&t+F(n8Ss`?ye zt8Q+xJaY3VtRIB!g_4KVK#X|_HX8_Qf!@^vAIm}c0N#=;ACw~Es2(6kmg&cVz#nD# zup|{_MV05Js8G^%j09!a&i8WJy~C_vx8q;O&28-FhL(||A%R!+F^a+!Xdu4O8TSi! z;*O6ysu^m}giTSTJ+V|#w=BKb{ib5W#r9RyF&ze(Zq9b^PFHXjW{o6jVYfUub+io| zN)%kk%+-`MfB(EB$ckLc3=L)4iqjHeJTFrDXe7~yMSUp{^uo%4`*z(ourf0{KU>IIyRF>Fsh54CboY>!ilI?y zp-Ma+?l!Gu`)+a1M=2w)HjZwan~o>Imb^% z3){;U*gQK9+`-vqlSgJxj81PE-LiLK{`jZ^&MhY1G-uKkasuKP*fF-B?Sl~xt`}v% zJMn&*+U~5HYXmo>%*J`RCl}^VOfDSTzt3_?W$RAs^TvTy8+AsV@;IOT-*0UOh91M- z54z@CP|8haGy9GmKe#Y&jh8_D4`O*X{KuycqlCZF0*NG%ObRYmKJt@BIt3_*`+k@r z6r~u&DM1FA>dEw`ynL^`G7<8S{|A;_iu3pk_V)J{#yNba5xLTX F{{qWYk@Wxo diff --git a/webclient/css/fonts/Flat-UI-Icons-24.woff b/webclient/css/fonts/Flat-UI-Icons-24.woff deleted file mode 100644 index 6169337050675ce3f7ed81f13ff924edc8877a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6076 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 z 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�HkOrW}z_vOChkv2rItMumE5S0hLwoSA%-~AW@ztW0A|C z2xQFs43$deYM>At)Fz$+w1rRa>wFV#?EmtOSDPyP?=AaOH~(GQghyxSxnb^bP%*KKHvsZf}z`w^*CiX33fjTbFKL)v!?6YHQD1s9L`%dCSIi zRrS%_f)S!Oj<&~NQs4jjJt+8Cy%NP!V)^59sa#_FjBIZq164ndJ2Q0B^bOOta<}G* zn#yK}MX)uTH8g zuPSxpZq5*oHIE&u3KPr229j?iAVjtv!(x{zlj9bLYbxtjS7w@_V)TA@t?eJI-~yb17}Ga-{v_{dt&$TJ^LH$YFk=r z_m&=zHeK;t{aDpv+5>=WAIP~M^~RH+F@MObkA;f*DZVfrPb?Y;8DFzPqHg=p-KZ zjAV#Z-j*ix$*QoZ%=M-!kE+t)ak)6Vz0v-Tb60+oz0oO!Ov?-%Q?{DzDgT}Vl)bGvO#!91nBx|GIyj94rCXHQC7&Kb5OZ`ip$ zBOxvxbF{Lj>Ei5VrtJX5t&n?%xl$a%*#!SOj46}p?QHiWuevnJa5~uF@K9X zE!|>H=WQcI#d)Qc3bQm+bS2c60jdrtVTYK8Qg}B~KnT970YZ(0FU9;3v;*rk!aUtY zN;mhMywNvT z5%vcoll&1TB18K^EGREsk>vYakw7I6-! zRu0&*p(5OOVi2ty;9`aP-X;q!YJmM!D&~@^9R+GKTr5unIuWGAA^VlW`q(KMv#UZ#s@RIS{zi7!dE<`@%l)3PFR(~SvW zv^k|=N0tG4!XReA%$Ewiz;RhbBS1PhL&wuNYI$kG(UUv5H|VRG5f)X-ysh)1R!QSO z`dEKmeFfQ07ibIv!Pa;Ol3~YJ-=x@;FuWnvx zSu%Ut>i)VR+*tJYhMGKm7g*vQs6i4$9)}ocG8~LaR6C<;)o%1R#hPtQWc|%cHzo%9 z+YkMPVxNj^BQpWk?jmo&nBRn+o&>r!mgbF_c;sX>x0=4f`WruH(b%mkrQV2Vkgo&Q z5a)Q8@MAaU3oDpQe!%+?xvKbj)TucD`#^Wapzcqf-wH9w$4ST=zy0*vAuIt?gf|sG z!n~y7Q5#;F{M>0^_{Cqmb?G|yJ1J7UBtAR;;OY^eiwsT}`x03iNncd~r?X-L@IjB! z3CGExt4A-KKfrzR_Feba4ykTea^pc&rMnVF zCaZzW1Na?qUHJi~g>walEet>?;>?l&8KOm|`2q4c2cE)V;oCpeL||h#lR4vXEw+#q zC&`>wp?hWTgpCvHO;pHrWQ1nu4URl1Cfqk7|0prMuID!mrM>uh5wSw-arPc$wCtO9(mQ^|F7z#RpdF57>U zKeG2+)4OUif5%7B9=Lo(O0iV) z;NR^6;99}H4hV^{k~)~2Q1V5E2muqA0~F}Nzb)88=FH3r>|D_A|6#{hg494Svvx1A+k%5Cr=xjU1RkZ=$6YY+7E5p0Stc znV0np82S$s+qa^+VGK+}5$)6wKnIv#1tu|%|~ zK4RDQ7HQW$#3g(kLEpUmaX7%Qlf_|+M-O`OS1P)?f+sKF;taz-=ygfoxJ({?;buUQ z_9l7w_R-7u8kH1=0mAzt=_UQ<;+Ma&WJD$T()%;{;z@GP*Iz-ud=N{%6jz6e{-Kb! z-8H}Z2^9fSH)YD;=dMnIzizdlirdH6e=_r-LAI{#3UZc?A{Z4Moi<_M^fkN{VU91v zmV%+V5BhQz@`Z3hvfH++u!cKdclzS@YVznY@C|r>Bl$wo2N8eQlX5*6ivncoKx`a` zZ0f@CfKBy7X&j>1&Pbb_G6Iyk!=d7Lk*mK0B_)W?{JV#)w{crabaa4V4)W3yBA3fv z>`{4)#hET{`|g?@Z>t+>iz+Jl{dJl9j0W6|ann+o*yXCnHJz+u!R? z`rsd=7ubVWkp<99h7B)hA%r{GAE&td#@;dUW22vWYWCBO&os{NZ2Ya}=9M!y9KQ-r zC|!H^RqxFNUTbe=)t0OXsqiknH(AD1ys)#Dq6shsv(YgAP!2F#{z(>LRoxh0 zd=dVhCeB`wQUxZJRsALdj0b>yUM+r=Tm~;~Dns_W{7*3zOx9<_i z?&5Mg($%@SW^*p@4;w@#3F}2RXnr_UwF#9moQ2+$#3!XEf=Ruq>;1g6g4AL|NOoay zt{c(~7SwPM2LDQzbsaaxd*W-dL(F!&xj=1`7!Vy@I_<70&qhf;e?td~S9;@BdUXW6qozGv-|UU^*lhD35I2BY;WZ84sSr ztbIaZ3n-upeTMl(WUF7Q_RIVa(XIYIFYsoQ#gwPoDRVgyd*)7`JALp=^-o`rCo~>) z3DL-Ip8rYx(@nfBQG4+A3%vdE^u|T!_#CGb+?5dsqk1D1tm?ub33TG~tE+3w)qi`M z!Su0Oz<~9-fSJj}RN3w6h9ma~-DOd=3((GZS$i&&V!BZ{Y>n*-SCCT@XbPSZkqGS9 z?dGyOTknPdSz!pd`IF`W+~;mr7m$BnQV+J~luGlY8Vpcy&Il0tl!l zj}Ha)W~Z#}kLYPTWlVHCyzi`?GuAHW664|!CY(BI?z09elF~%6fr#e*GWAwMZCrI? zjdbntogcKTz~)?yqAIU(au4w0tLfk9N`!{`A|6@{=&1vbVhrZ`r}qxOGKrJ_aAnf> zVTEDRsN|%`t*Tg;t}K~LNzT;8shbUQ%B=cko;T zf9~X-%ZT!4mGDg!<-1!{b(ys(%KOaL-2PKqnnJP+3%Xy*&5CQ6FUL8nd*g?XI0Wyl9QR2rOwQTsil!!@{!TR@A^#^Q{DRJYGHM?qGsCm+zvQ{1lU z*%Mw?-FV~ps25cq$^I0D#w!#Xks!Pn*T~85zBao5#xQkQ|AX(3=HsICwr*9?)spMc zr(Pbbl3)IlK63M9$ES@PSuJUGw3Z!&+Ut__fK?*XKKhR#B%EUc=iz_cAy~w__08$O zzru=#0f-02A^w;DAn#<+5f;=CrG#v6g!)-HS)_vHGhLQrG@Fgw zp}4h;E7Wx|@VRPhobF2AKLA?`10?#&n(SJ2H@<1b+UN~&y!?lJBlKw1&!UgLAo&1)J6<6Z~ULx(k#06#hG7K4gAPncC+Ub+u2FAq1#Zu$q;q4autF@Us|+vz%jmQrw=@MLNd(|JmsOqm4nB z-q2X6@78zVOl30FGMLl=J1&y7_jHa8)87N=EBPLz8UDMQgJkljdX2zo=xY6rE!(b0 z7N69|Zze8gAtN~!gy|b>*gF7L0VBzHu?SA~@M4F6vzsfE55};O%jC6s!PSh@ z3i7R3zNi-h%UaYtYlTw|^S>7><26SEHv=8|3PX>~VcxC0l-cEzWjzsqdQ#b%kn@xU|S#_5EGNI ze2WT0VOJEZ-YG^2GBN5KJ%xuDb)|X&1Kn?kmQe_y9*-OKW#BV_nsmu8V}`_U$y={$ zZB*x}F)J_Yvxu~|TbeC^ z*5bswFdZPSnY!6BQ9TuMV>}eFaQcBu2F?{KZCc30f)nd)m9*n$wIaB{ku+H3*RiMe zSD zW3Ztu)ImF#wh*3}xKPJl8QU0}0{kPihCv?fsBd|1uLLYc)EGp0NA_4J!xA?a7DnIy z@KtZT)1ybBs1c!!m0Jags7%lbU{_fg>n+V|-cD0@3s z_TLTSOAo#bwDo@~T8br;6*6VQ{W;u;Wjmm(hF|N%udx^2R{YRkGI%f;g;rp08Qj?0 zL0DXihHs^d0>b%V=(wI956_bRl;c^NJn&`6;=b-+ubxPs~haoDgsq0yE>Aw?4f@U zdcGrc-03ZVWT#lYdGqSkoA)0%vY-9ij11-m){x(YV@E@R>#sgit@m36`*H3bm^rOw zsDjGO<_9hmJjJN#1Kl4lQq$0GhZ8?C5R~YM#jp~BV-YsR7J<*;wa02;Dr;jg<*oMO z{NM+5xP`)zj+R#o*)StMpV>Zs+^kvS#}AVlzpv@)0Fe3a_#1-JAki+G7{a26!?<|;{VRIqdxBn&o&UL1BdFyy{N^Vk$DzP}Fs>JCma&o2B?q+wb z6cL<{ASxZk2;?vTa5iuqU3k{9%i5v%2CHV@Z@>-iOV87ml{Al|vFk>ivl&^X5xuWOQ{rl@<2k<}AzYVxThpQu|Cr_TNTHu;rq2-3qp!EP_ z4p7nFZu;oS0UTnm8bP5W6v;CDnb7it&Mnf>tgkT4sqNz zXH%)m;{ssg9mFSE_kPsUrp8TGvnP88)-Veht#~nP=~PhPUGzhd_s4HEKojf%Io)TuH34R&?jzjM@Z?&6Ceuo zA`{fm%6b;@pphqdf2J^fi0rS{$OQ!%xeVljUUUM$u0SvJq9d2_`iROcd-W~){gv*$ z(mz^${uoGS67=&cVJ*BnVt?XZcZ<7npMI|tt$qDxYw+u|i)3BF01|kEp^NGgv_shP z#$1gygn+yq80}M8XdVI6wv||`8Z=V^72dU9z;_4^m*IS9;WxA*2RaLD`QJ6&nwQWt zxO#TMR37RS!Hm%xkk#ZK1dA_e=zd6SCXxLRw2&RY@f{Bpqw(Jn*>ciXjSsOQ*$*&w zfCv(dmCJ<*tlQRMtD5|iXh_Bfm21W_tFE(LLv{b75IWJ-%CHl@7^}hBhf1jOuwGrA z|6?0(XDvJAz&736p3=x?^cu_T7kr2}PxLy4{c$z|+rWrGGeOn($-t|J*7Ou#r`a?} z^513H*{=g=@iZo9Jto~T=wsh*BD`165W5coG~h9TN<4&vnyQeY*gBj3Z658d-VjlU zx&b>%L~UWuo}@$7kPi-_H6U)_q>?r=x*WS%6wAl;tske-D=&f}-)kenQl!$^$8 zT3(i4rY1vvTr{6Zcu$VU=*gABO(d#yWW)#GAC=PACBmej7njlz6RGN;lq{9x)Hj$K z(RJi@=d;d}2k3kjE|gvaQ1N3jBq3#Co=|aYZvjC{gT~kHU-dd7_nWY0eGFssXsBdB zZ=s85ShZ-_4@zc4Ks#>P38oh3-{ju}i8ujI_fhj+Bz)sLrLdP9Dw6H9%atkiB!e;8 z|469scO^v9lgf?nB`eE}6-D-P;gL|$qe|~HUAzG~EzGl_qM4Z20dZKa@b?q?9f4+C zKjA6S6^|xU)(lKp64?a0&Z2=|^R8<Xi%+iU9o&+@oN_VLc2=F&)XyNEs-F3a&7nA z_YFi?A|gwQ6-VAmdvmS}g~ODA%3+OZ$t6i@izF#2Ejpd2asCy4^UHHH)7HMVCPe5( z{}}1d6RplJ+qp;WE-5H1<%LB=AE+{xRSGDwdQVxyk!*gXkVpPa{tyMAdr6@|bqY_t zad$$c)DuV`8Vn|2ePH)?1@BBx+wP1CiE`E_>}HxL9pdd(F}t!k7G1Ne>uNkTZr%$_ z1XNJ5HenSPPQ$8!xpiCQzb)wsJ{ou}5l(l7qb88fds__Tp}E*&smkz#q!%Yx(la0e zW>I$C28Hw`Y=KcU6D}O?-U%{qC)G6ts#!ra46&j+n4&B&>F*#+CtnJ4SkZ>764Zui z3=>X3yG(xcPi3>fWPYdb?<2qN$H|wn7{Sy-v(IkjO>|?w)pX9h<*AF3m&QotM}-{8 z*_K1^T~*1KI%R=vxUP$!3oO{WVfIwjpVi{8Zg_7&3)djId#a9%IDrcGIL^;)q)Xbp zZvZhzzHJw@?c`e+E78I%Qc*1<6V~05QJv6=gYOUz(#&SOHA&&uDtKZG{m;d{F8pugGBrE z_mC5DwpX3{5H|%ZVD}TY>w2QXCGEp^g_baCXd;6At zTb^8*UX_7%D@ZnNB#n1vbwv&8hPnV~uK}NARfxQgjsBkp;cpdMZ^?uqWI{Ew!7bi^ zx%r%I7FN=WsNT!9`-4%9p4q<$Pl$RkH=QMXQNhVI2dSQa3G-N@ytU_Z9s7K+W;eXB zefc|fZDB>Dw(N-7lFv7FxkOv?cSk{I)g|7yd)GdE~kz4Wq-B!G;1;IuNJpO{7chPaj3gRw3n2h$`y3C z_a&@Z*wI}GPkakKATKbhW4x~^-i}|jYnd9KZrYNvBNhw91J~A#S&OSyg{-Q6JL-fQ z+a1_f)>MZIiauA%!NRtLx1pRR#F1G~V)dA*=$wC-N;oRl4xXmovaP00$4BkSIr658 zmB_rwS&N+KZ3R**iu&Xrk0stoCF-eDn!W&hj`RleT}2)mdH$JxgHbF6ZQRvPQ*DXc z7OUf;wyn-ts~$7P?HS7(tn(l*D24rQWv{Acj`pFwBk9AcF`w+XdjEb^(QjP7+YJZPF3JBi^4e#rPj;X9 zoFfl6gXq&oO&&V`^=~|LSgs-(pNRzwL7;6iNg;~iX;9)BBt8_8WOV%Fa0K#5Ya~~P zfDJGPNHB~+#3vB;VfjbA1lks#;u(*r93nadp==}y>x6F&cielvqSU=}`Qy{6zD`7-e^{YvLqMq((z%Bz*l zb2!MwWb8eVeNg@9FCsW0L5{sk6v}6=zU*~3{G>gAK8b|z zGHJbofC&x0gNhL@U`=MhF>6*psA)>TAeR`^jo)NpM?2w@9 z_Oc?2qDo^>(t)m;`7B**G^9j&HttE08eK)EBCw~~8ez?c%IprZMUCq&rhV5xk73eZ z)z#W9-i$B>GNcbxBML6hYK$8JAtVSxi zEf5`5RHT$7AxF4y9JNv#w_yIf*XB<3|2;uzFdGmNXIxcfc7`>jNZ&q7nG+Dy$FiJn zdSK2-dXw?NTElu;yP+`pv%8c+ZJE&$h|P(LBh)6WS2J%_~X?*#Gw z-5K%ad_}xHGHVN+*43dT{{&c#yyPtq!NK(PBmERVYW&NE<;o*6fj#{syZ4N;Lq;#q z3rZ9&y3hfeq(c9mTd5Vne#Y z2G7KbeSbt9+`!iK!jI6%y~pev{MLVVA~k6EKYKx=-SD4o-MfcQv96#$~+;*E5nD3neY z&+mCZo!<5*(~Q%$*c|pdMleJ{D`1+Ak zU;G4cceduaQ)8~L=ICgNd@0oq!yF+G8>%7NF1460Z=_Sc8Acxa_CloAF>m6w*J2UHgwl#wJEH3yAl47nv_k+7lzU`4P|%Dq?t$hBOc2cbW{=*i zQ06S=ssKOor^pvej{Q{(fr#MM^rgSk!|%z+Ve&g3hXcNdaxrsXe z$;l37mA)9TZCyruf*v(VPqTUjq2eO?CV5jn+2`_IQTVU;uaGPBihzg6U)ME6(M^bC zchLjkL0#ROmb%yw##>~!MO~%h_;Je@%TK^(_=j@xWZK6v`P$@b7SiY1HI#H*+TnFo(z=Q6UyVuzp$J*?&E!7 z%I;8YFBx1+4NMIbe?asqOasvkETy{FHC-K>Fs>)zGW&xS^AX`gypT!hbOhi!Kt{3B z4X~`)CF$+6`Nk;RHMxx`l?e3)D`R&pv&2S0054dXl9(4=6bHI*OTgdvSI#N>5JGcsp^U)Yp{Mx}nk3-FP$1x{Qo0J#H+0ep+EB)*G#| zyTU2yKzmwoOk8T59^4#TbXg*kQ&e{AGBF`VWm#oGqrO&JqmL_%K`_R9UtGbe9AZdC z`EHS@-rgyJ*@^my5A$I6?6jF~RtlSi&40~K22vBo5*0-IF7ATz-oij(vSP^+5i6S^ zIfdMHsc=Yrh1q;gAsvbI%qkVJ zyboN^RV3FX4P~`;MO(0sk@fM`oh9rdYn92xm4<3{ zb!AaGB6Wy6l~h_A^wl9m-8Fv#@(b8q7_D$un;O#CpwueMGZKs9)$xgjp-x!+EAHX4DBma@+{eDjn{|7>C@v-jWJjf>xrw; zbJh9=Yh{Um@0I1nMU~YmsDkPc|9SuoexG)v#-|NfN?PPGekKLIeH%!U0@Z^Hv+P-* zoMz=o%~NB;)!=kL{V(z&r2L;0mwMc#HolGoSzV^0oWc-i4rr-r|7x-6ka@4ISt_K8 z%X&5uTU~iYInIzmh#F#(En+h01Jdt%GXCm^$@%JXV|h_Q`CDX!(pqSCcpqDoUh@x^Kv?yIfoJTh*12DVNZS|a%GXnjQXWgdkzTbz*wlM6Qa{&Xd+KzpCdsU`s8rg zPk#Ae)~Uh6WxjbI<4k@?oIjHlohU%%+eGdwNDkd_lfHhHqfecoect(9_5C-OfC?E* z9t*<{7Utk2S&Q-u9d_4EGC=7pHbL7pw*V2-hw18CDVd5+s*#>$m7-@z=*IN`#y&@1 zSJ48Z8%AbKgFp{iM_37%e`1^S(_x*pNT&f*(xPzlQj2= zkZ8g62L7om6Gu|qp4tf>3a*m z^erzf0n_eF^41TU-*8&qx<%faq`5EYE(;qeChrT^?L`)FLPLsj3=X}TE))ZX35$m= z^uLt2I&N+9nvj%(DTiaQp?Eh`z9uxN0J*PZGLsIwNSDJ#veTgwYLcv9XEv|niG{thOUzrh zTDBp^NVnvR;MKh(AtEbWK-HzH&5=-yIt+Nf#q5CesKu!E50E6}Wo%ocwpdM6WaYNe zSt9uwvQm6tzj?o!7E18bcCq=*R?8tZMUZqTDHIcT37K)ZmgH8DB`^Gw4%jD^SATQ# z-OtlWh?GY9-&COD>W!NI9Qj^ypWJ|$8$VTuR)APjUlq=g3zC15`bPR1&%7m<57EYL z;>?oFVnY#woGA@O8Ll*!6rw`;{|{mB0oT;^{}0njl3Qx6EnI~}?saeL-rKqmaiS=S zqOxW06-Y=3SwJ9z4Poz%2#R})imTSvx~ z+}xYoanAem9we0VST{eYn*J-X>TNT(@%jr+Y%!11)!RX`tp*y|nf)1m-oUyDb1+^2 zm?D&>{@>ODe2TtsG6fDs%YXh1xnb37K4bMEf1JJb&7Z7H_wlD_iIpOW7AiQYJcHp! zdlb(*Y5$`4!+R^Pb=3=dXz=cgm1JP?-kDhW-s*+@tPz&4p_vkz$vJ5}gZ@W*o^=(9 z=bmIG7oW33{kwxq;cv#-|76wMhHcnBo&)sp(5Fz{fG6M(W@UDEfC>*h!8-6N*WI!I zZ$m%>*l70t$;<7{Fj`>OW17RjdInmtrFR18{lk1mthVYhUZLr2L}0g2URvUR8}?C zfi8T`4**L5$YBH6U)y9@ixKYE?`A(AL*Z(!wpOn<6cZJvsxCa_-&dh^IK0rFazBvh zB-)a=RkYc|!{6W6-P>*d)+zW?FFD~S4+`?*_mMoG>Y#ch)u6l-c{PIYf@+#zFB&7r z=Y9+KaaFqDx%zr}`^n~x{L9Jr%1R6C^i76VRjUYm8*`5-P7paM)uLLezQuU{G>fjV zVVbAKNh&H3iX>-%12-AL@#+>o8kx-Pnye*OB5hbYkc=Uu&1 zkdX8f$3=@o8iNQt8{t?rXbgfveXJjiXY#Bw)`Qw*2wBgoH{=%=8)AJaUtZrAsF1|* zYrZot{)SonfQ#I=lk0IEHn36f+Qy^@BDsVcIOY zpIpZcQO2k6V^hRQae{DBem#8+*?r4vkyZ)|sj`^hY(If-a6)J_EsRbM^5A2V=aCth z6GMd-RwOhC>MOG=3TQ}@&rZ!H)S2p>V!qkM^bJ`rDu|2_$M{0so9C;KEjAkR>nWz% ze1^34YnrE;5jCGm*t*Ako0N#h_86$h_Hf~b$6RbrZ_C`%o^XMPdaQc+1TvwXs$Uj9 zqOva@Z@-X1u9vAH~e@1#p1B9>>(IE-2e<9grF|@EyS_O#aFkVY$RSxWW zL3wt)psqY2w2;n;&J2WIAI5`>tifa}FCaKHK2#7HuPcz!DOrkq7$J1tz-2sZON%&_ z1Uf<@HT3BO**SV+E{z&*n7KS=Jvu+qz5@BbMT1wrz4U$Tk9proUS>Rwdzo`f_A>4H zOEk#(ZdLDo)IlCiC<%#=m&V6a_zW*TH&>b~D9}$`Uy=W-4uS(NXlCj8to%E>|f9nK<}Aln(~4NEH)g#Ypkj% zs1r1lMSB_O%&1g9H$GH3(MvrUsESe~QHm%@j3|!q3G<49)D55f`Vcz0RNQi!k5=+d z>zWJ8sQU7T{7ykfL#%H(T@b4C+{qscMx8vj-0+&>?5t7^rPip68u>31xaPll$B}Lc zVF7`{(oPC_@j7!#s;aZY-6-tEGac%akcfcMeh9LpV!q#SVVRC7f*$fF6?TG@A9##{ z1hAz^j$5Ob5TV#o3D773hX&@U@aN^=npUvn+SdCLA`(u+O)BIh01enCl@U@}?rXa* z6n;;XAxkwldGPojVn&xiEGF>ZtGSAVE zWqn1g1Y*mBaO5(&)UNHvfp^| zwaG-Plxh&rG*iaJm{M;6mVm>#3_6ukv09j!0R7%tTO~LQD+M^i>?}=CCuE52#2E$% zVL}paLq3e{po_vd>ho26(=qU)*C&fKLIFtkVouOCdNVD+^23+!0YPEnV>s^$Y4b${?03?L<-a}ykB$%>Dl{5jk53i`$ zBw=(go5LiMXtV%aXqEa5JxC#cvxSXRQGna{%k)Zv1_pQ_jod(CVID|aa+z>&Smvv; zOPJB7om7E7E5Aa3HggTy6baZjM&XGgA&&$I$~I(#C^A|Ebq~O_q~b(*qCh0>$FvLy z#RHgDHV8=iF|DEmkSg4@Efg6dBY?X+42@Btss11_i1>BsooNQ542R+f6%Gf^5Eyt@dfwBt>;Nc<9)G70z&`WZEI7!gh*@q{V(4Qhf;ky5Eta}+%MGj75Y z-f*x5j}byTn3AVftCbuzk4a!N#O{r-d_kJoRlLL{OcFZJVUqB95>zu6&>P&$2+Ff7TbS z=E67A0IG3+c&1i0@L`6D6ynLI9UHRIWKQ2u<_ppTk2fvHjxFH#Va{i&$YppK^EWo% zN5eQc)wB*mh2}D2%s-%^PdH~y&|94pfY19lG&t%AbEHuN#+ z8yxIQeK^DQ4X&uCO(W1KUcy1?zI}YGLw@)W$^#LNA3B6|9ny}3HW-7dxP2pdxQVGI zVQ@`hK1e^8fy)~o0c;Al7e1JqF9(ZAJ_cQ66Ec&Y{{Eg6Ud8qFuW1H^iPv0H(+u~b zRq({$lg0~SOOOYNEM~pH7C_Ecs<_x<)-33Tz;hn9crgpXWXnh{vUu?VS+JVh3T6o! z3BMIKPn@mH$NF?+k3DmFSWkcanXY#{+{o}n4l^DCQ-G^D2F>A^3%O(P9L_W@v){Ci z+26O019-L$ss#8y%#SFP8Cg2Wbk4Mp{BH7@^#`e?-YRVUz~{F6AJ;{X2{gz^=Hek! zA%0_si2YBzm7yUiKb?F2s0j_fh~`c!z@rHy0o2aPX}V;A7*CAGQ`LB4;X?fko#UmJ zbGHmv^k{P(a#o_v0oO(M#7DOh=RXvY>iUNBdvgFk*=?Sy!Y9%0m?YcexV%Yulgg&p zou7n;_`QopyM0iA0j>M(-T63VTlp)29C~+y3}kfRlPc2K^(8T<*|+bAdgJ=0~0;d4r~rS z=$Ph^KI_rf&$Z9BH=l~06KDk^ApP5RX!m4dK{2M(SP-^Px?2)-sMGzL^r8e=B%qI! z?{h9@-pDxGK^*BzAR||2O%Log#z@>Lzn^_S6V1y*i<8kTxAU==!khQxN5}$G!U&ZAmL&)?d=xYY{!F(L zFNxU@;u5mUcfY%rySGcw<|qOOpk?Mp-kQuExn5L`SA|crU-RM4kTYPIaOO(VEy0xw z8QI`>kae;6dJTbOyj{zdg)SBB_s|=C>CoJmqNFlHT%L0N1)rfnvz=_VU~E~Js9uDu zN!Rdwv4@g~q(km9H^I)mnc0WvL*RKASQbK=VK;F*AE3 zM%sTE2*}9*xH?NF%7i*lI0(Uk_%Z@KEyH;UqJD%tF*QLeMhGx)s8oUw2(pcJ+VqSJ z3jN90X!WU3MzZ@iYbT?(lGJ1=vL$+q04Zm~QIgmON#JdkOyNJxHWIOdh36AB25B~2 zvf-U70atwj9sO*B7O*9_Sc5YLn~=zs3}7}eaUc*{^iLpklGz5ohe&9MWahuI8X!qC zHuz7yBwLZCvCGnA8nXGYTFWOu(qSv2uqy6p({S>Q6|k|BGbpnS`cte;NKKU4CCa3t z1U~FD9tkWTXaYpO1g*#*qd=Akh7d5ieQ%oqHC`Q`y?&42gut~j1bstpDcE_$?Kw>f_b>W&&p&eFwajvHD9Z70PM7wO1L zouYcdlc!++{gl4&to3o(_k?-y2unSgse}j@WriYCp~FP*eAnGy@BTVuu43Y`^!kjF z%*L$7(#FOkM`}8YP7sA%`p!0%=w({QRFJB^W#%(H)3Rxt5u8xVK6o@=F)icu`pqXl z(0!A*y)^!UQ)FfNfqm?o*-Nv=Ix2JkMZhmOPr<$Rz#vB4+e}8r78s5B1;*n1n8?W3 zmFF{^mz+&Z^Yy&ciyhsk|k zaW{3jUZ%d`s&Nzt7CLvn6Ba^Ia2JUhXf*Kp9`90D*JT>V_nsqfqv7eW^U`!XXvi$Lo9M5RZAxZRs#I<#O;Ld3%1~-tz=!2W2SGj zC_5@vA(zW?k_=IVwZ&A)G4`=vYfw#A|bhYTt)b;pRg_U9I51-c9f^c1u zG2(dq&5ADQPNt;9Kr^mI#OR*6xknAv;xidX32S17h5p-{XhMy4@AE%;l=qbnD*VO4>9@3b>QarqvHaB`H0aR1@S_n`iTcjqi*s@uiGq1q-oZ18JZTG< zw)YXH9#RgZ70Nop!Xilt2As4mRhE$gpk}f{QIN&@RK}!)63l$On@kfX#U-XjrSCm% zEP)6P3k&#mR#;d-RiDy0CFc(dztFhC_zXOfg&Hs%UIh*QVAc%JizUIU{~lfy|JjW;@j@?RnU&GxZ8x5Ud5k( z%XXtIM?hSfqJLEMUr0=a($1KBVtz8Z{R1+TEQ8Sm9^ zC9o6oj+Drg6iISIh2H~bZXLcuy|EgD2uHxH!T(PL85`ESF9t%qfQ2o@ zwE4FA4%Q$IN1v1cI7C7Mm@3o278)EKtvXy7Wyef0Pt{5cGK11inaa8G(>4*@nB)Y0s8JpmJeTFXNM=qxoy> zYpe4r3fSBHYfcBYvVGWWdOLjS5BO`LZdPubF8+?l0%L! zjaAHa4zlgw0T}U`6I@UoR|{UB<~gP|g%vC22lg{)72!V+l5|j&_}Yqssy|D+Z@~+!69^GaScsa52yQxzKK=cM z-LrEK-P?B)F?kgcrv#@eiwpAT_7e}=pKkwS{bBrRuouD1Tn|UN5kt$ z^7Jw=GN!;;I#ry4JEqyP3n%6UsS@Mt@OrGq9k0ddVntH2og^6!4L-ie!yQvtwvt?I zCl{;1lp1QBYG{Vl$r7a~O>CDY)=G79)G@^t7KZAfHkr~T17R{9b-aenz-l&VRHg?@ zON|zE_V9kFW12oipQ_8SgF?7o&xg%I9d9_+r$LSn+^7Di5b*h6#Yexv?FiVVgR#SG zyhFf}xcaGE?Pwd4qr&g$^`pF?D{Rd-^UxW5hT%0erDZgNbp8oxD3w)37e*HbX+lMW z@2cgoO9WX~(C9S!>MAR_eMdt)M3tyaTpFGiq$JF<;_-L*NAqkxnre?uq6$diC`DfY zZHh&JfPdl47D;rFL|)Y}9g0zbR?J;A739spZT$dL@I?E`_T3{mBA~nWS^zs-Hw7#Z zH`%iU&lNC^aA)rBfEqA3`l#Ms2WS?pyk~D$Z4afum9~9PxELltR_tAS#7=NfO~5uV zx&U1h3}G-)GOGbXDE8r~@L=%l4zm+wLnf?%&1?Z2(Gh%WRmc|ZZVupzf^1k(>oPPP z4OY=$leU|KX4&5Z-5>I_ZM|Lb8hrsn9FR(d18Wzp!DG-EsMAlfr+{$+eoG^GLAf9d z7WS%1m9TXVXwljfoQSlzB*5}wlOz$;Ui{hSF)Fb9$AK=1kvW8GP4>^=Ug=Z&d};~h zpBb)Mq#moDqjUuyyHM|3MWMVssl=a9l^sll{;lF4@$xqggzE0@vjz(3(m6<=c0`sczD#%cCfo?d5Ez2;jA0P>%u4uX9(xnt zMnHi1$Y0Pd!#8LfXQvYn<>M%89Q zGZn8{+m=}AU+J$skmw1WCb56MUyZm%T$it}Df>3=*|w_yB!T!4q8Wzcm0ftQFD&FG z3G>!^X}y}lnzV>piaz&w{MF;>#n{>#4}#eu?;_8}#Ky$tqO3;ZjnxS>!yiI)tk5um ztzlaR_>yoiTEaoObPsaf3!?cku=Q)OC9xUYrM~b*b^-tgzo@^2KBCQ%5gZ+fKWu`C zv>x+NKHk~`5^xUYQ;;(~3~uYk(9itdVYrlpovwl#@rTQlIR+3~FxNW=JORTfuq$HLkoY^4i_hWbDt_(rvY+$b5-LVDK9>(lq@Z?QUSR2CZF|Wg4Q;p^gOy&a>KX!D;WbavP zfDGw~4wy$nziK9!Y&0H4lP>_&sf0xP={QkIghoY&vT-;xYEZ+~${7sKPQeyLLcF~j zlR^O>#W=$99$XpUphj{8p6tNIoaf-WMKR^Lm@A^r(_G*3n`wn6hzenEMB86V$55CxBJp)^4B=cAm8dtyss-Oil-c`iC9-R_)O zDVTq4&E2JEkwx{{vg0LP>79fgS-9j*lAMKm$AUY@wU=~H6>Tn6Ug|wbdkJ7xhy0V4 z84iSra0obqZxz@Ncn)Z_fX3zuA7ff9&BPtE`stVza?o4hIlxCsYqa{R(aH=a_s~gV zY$22HCS%K5nSeGK=#Mu2N*2J<-~jlGJJZS$ngE#+SWRF)!qO^%$kYwg3Yg3CnEt=0 zxeSDM6CyarOco4eK>y19Ci{k=Q%fM{+V1XJeyw9S*h)}t+VzH&*~Eumxvgubm5v54 z2S-Qn8ui{!$E3xk3#ny_tqF1bxC;sQ6;z5)4g=)4zAxn zRCC$_EB3qcU4!=@45SuSb83r?bxr)H$hyPD)Q8`&kvzC^a`-qwAonM;2dD0;N=0A2 zR$E(3*Ve+}HRsJ6LIp|^8wyE|pnzr-Sc)>R)qngFe()Q*SH)G~fMzT?LV^Ft8x=j} z4cuDh9Ihp54}(LlK(#^TPkjZeWtEYfwL5A{)6=w zmc|PeDR5nx=e!fmE5(%cY&s0(AB7vv?uQIR|sT@4o(ho`RjT9V~)YT;yCb)^&9AA8x#~km_r| zx#Vbc9bJ9@7YNOPu@4%7XJ43c zcJ@W$K;`y}XZZcyZD4($Yu&el4dHHM{p0h{o5=$T-WQY^*u)(7 zDPg1VApQsr(L(<0cRk=F<VX>4jbXu>z8l{H zS-AFn#kbe_<}?UzjqRJoiM)ANbWiZ(lf23Yv?5IbvIv4%(%VC(ho*)E@s~!;^Ef`eHNsnChFyltOKAz*i4c@8GY;B*72(?XiyozI)(PG|AF@ z7_4e+n8VCraQI^%!0pTiCctc3da2)SnR?036y^`dpD7IA36OnE*vfz8wi&U%`pf*bX$0y{((NUW06%iufe~{liFeeB6gpSjhFg=K7!lt;t$TCQ@4VmAT$D5 zCOB1Dv8{$M)v6JnSU{KiH`5lf=YvN*s&A+<1769+?G#H&`=-Xg2qWv%TY(_QPM`4VEBFN)+;iy2NY%V4jX~ngdat z$@mjH&xqiId-(fGJQ~8Ot>!gKVB%&-?W6#AN~ z1iH}y&sG4>yuj9#0`+dcv+KNk*4dT%ue0kXrr*ddqU{IvQ{KLt!yu`)3fy8FI_RSf z18%WTS+`gkTQU(OxY2&)_0>pv{@1(SS|tQYSTov+gNz#k)_@i5;{hvL>!yFq zX#b#V&|)hvx19#&wzgbk{~QiGU)BB6`y;rE@4MWuy>GqCbceY~e(Q8~#R|ub%U5)7 zx_9r&<$Dx!0MR5ng|;^SJCR+8GOag|=!@~c<1e=EjPO1LvG>2>-50R84iU`9wy0+% zXPo-cfV)FkHlY$ACJFS+`jtiAzBW3P7xr{#`9j|$zWV$NkNkCM*xV0Y(@zJlz@Vve~T8= zPy@I88HnTa_(ck%yol;)>Ad?GvMfyzuUuMZ>(RqH{yU#5N&>8wgf%OoKXCwK*7bh}#-8-`-4?r00GyZ+ zR?5Mn7jDb1_oKzSI8{=TSgeZEiwXDkp2#->HOyD529JKzV{AW4>-DNUv3_7N0@tEo zvg=T*>u!%juC6TyPIR>%>7tlcW@q<;puAx7C z$%COuzb+RB+1!7WvTNwxFL{t^u@Ho@)L(t4$@G}im>52U+Ni<$_yV}usNtHrw;;7Z zQ$V>F1-75y_nbY~(^MZDQcV4F1M%C@+Pya8VXwlJ!iMC+v&H@4TJ)J{!O|bg8gYd&~>8a zNLQCf>u#3ha2HMa2~GM5O@{yI$3dp|CMR-pCFcyUJkl5%5*Zmn;X2;PS#w9?k7hqZ zA5nnYqR;pcB0HEHQWRNUZZrbg*vR|)$H#yF{o}k*6nJo?;7}5lo&%OG7PFqcr_krT zOF=)DbMWW95MyN7K$9=gWFG#kpCR-kq5#Qa9a(;WYuESx{QfYg_n7G#iH2`NE*Cgx z1P{ew7Z3ypA^2$*@X2DRJ`3J9w|(2UyLCVnFBj}mah^&JL?tmB<^!;EA`IiVq6CUz zc;`Ah&zJtZ5qmh zl)&yp`);VsLOLw?jZBz;hf?NnlXIUl16a+_w{Ou5CK2HW!kJk+|7>~rE-FF`*n#6RHqOm*)nEfpfHUP;U*BO+I~T|AfYGKnwQdrTtTyxoG~Hgn_>R;Il>U9vRs_5FW(C z-Um6Rp}Ys__ZrV#ZfYs-%sok@W@oFRpuPyiM&s~0b`{J2ZMgV=M`qUlH2eW=;+3>_ zWp@dne>ku-(~H)_r&7cmgMruYjZ!om5|%74LLowFOgV)Pdw;N>A=u~UMI>PR!?FmfKpI^W0Rl*nLBfUnaME&R-DY#_DBI|i#F%J)WMQnal3Dp% z_Bl!?$`lzS#O_;w%cNcqJVsXE^>oq(kTw-6QukoX)iOUKB|z=t&yQEdrN&Xxl2Un@ z;KsFL1zeZz7T=ZMQ`Xta(5HU63vQ*P%QPvPjC5OlDhFN0mVMSBJ#z+6n^VZX16kY{ z|6<{-HQ=jl1<2c2AU|b`iAyMv%+wTSXF=p-{=q6)J=IdwrEb?F@p-faS^tefjYo?* zQ@f-|wiEHHI5)8Dw!wqu;bG2r*lxg#BGjC3d5KC_dHf~cQo9Xb?^`p~dw*L!*++mWO~{97WGSA>k+vO4IU;!cFt6%6x*>K0n&~HSz%%{4 zooOsF3CPFT_wI2H+?qZ@YdFkqb2%yGI;q#jIY~3!ZEG}WML{_q!s?V7%Isz$$V`x$ zCJ4eKMT&4bBbI}XntREqytXXyBaZ1exV4aKo|5h7TPjkN^3+t0T0^SU>_GYH2+M@i z>>-i9n@p9ai4zkEiDc=H=}9vrcxdvOI^ifmsTp0gN!BYbQTwNEdT)XUCPbeRp=rR~= z*|~{{vu6k3p;ee;HzRWW!pVHheKj3%etp>U%19y0AoO|l^Jmr7wg{GGhqN5XMp{PB zd5S-)!Gl7GU*hK98!Nz^>C-WHQqRIyQM3>Kq!JH*HKRJf7P|WIzQAIg!?tDzxA1Ce zV3li^>W8i_yRNPWsxH^8L|a(%RF0|fLo4}i*^>!5R3)`!7A>pXs3UO&gFGC{k^jDZO zX6~{HFia-u@vy)dGXeu(_3#7R$AL|Sr|b^08&h39ux)k&Zm%+E1@`|K(12~MP-n0O6O*jW$O!5(>0m$d;&ZKNOC!LLi7PJ90)MqB75_A zrVU8Q`H;_Jjy@s1;G*t*Z6E%4Tn+MP>fZVzhrV$f^B=ttBy$Vx0z(iU&K-eM$@W$L zv4PQk@pi5dkP(N!5RAuPwsp*;GZOYzB?-h5iAV~h0vWyOG1{^5Z^2`3Rb56#6%A-= z>kp?|9c<6Q5sBJ+?*oVS7>Ak1%TCgYlKMWzhZR!Fd=>&=%r?Avft#Y_%4CS@OqMDX zN|{nle7MR}s+CHBATwoJfgU^~WSMz1FkMYKSP7*XHifYbYIfbM#CH&C1D|1R6ARFk z&c639cvG_8lk-U+z@7I0#;XZ>_;3I>d9AG3Dd?NSx_Vngv663|l}X2Y?eb{(QK~Qe zL&zK$%J$j(`xjiBpj*fe7FqLefX(0<2S{1}kApo_>sG*cx7)tR3W6H@?&3BQEwkDJ ziO4q{c{{;w&Jtc)KUr?|Kd)fs|MkN9_x_hQFevU%+hGAP5JGnUZ?h9H)3%%n2p!mu zkzh4<7hYJ~BHf3(|9?$ja0k>hwz3J>Wm#`9+0?AMwH-PMdD{X0F?tu0h2Pb#U-~v_N46%rIkb7l}qrM)3J!aw~Yh zS>lnuVt2Suk{1Bm0G#7zGbCA#18?}h}wc#v$$t0Q_x`#Z1H({PC^`gtQ|382ybEG?E~1u;2d`I$uDQ*oy2RGkgAI z=u?fvmKU%cBEd@&5a2nGuDu(Nn|yLScm~aZ(eo}e?iZIo@JBSz4!c>SC+A)%$iJcH zPzIF-D2M?%qQiTi;o)e=9%^6T6^@Uhf;DV%<~CGRH7MwPrYjsYO?^Xo(1FY*`!=CWQ~xi{gldC=JmY(OcLCMs3|Nsy7@rm|h>w@c zgmj-XD9(4s`0m-k2b-L|5fvI`ASyR%z>(YJ4AtdPUjOCfv;!Xd)n#0>uvF~Uk z3*(1#(5Lokz(Gk(wM$i`D$|tgL|d51IcluvIL-$oNQJ7Iod`I_sQMvFhZ+lS!3fKG z=xdv`XebY5nU|61%d0E#X9jQ_<)Xpb2lvomL7w>`TpE@=MdNAHc&<8EotFm!EXePS zfbMk-WMX>)Pqhh@bS`kF2cl8GB2TdT4B;*fn{;rwU_|eg6Qs2fy+voC4~~Z1-vvj9 z_4GrK&5pa6dJ>95**xo!Z+{HJ#K<-76KV5VCIgBoHVm-ZV}L3AF`Uw~R>0vo{V0t% zXD&VjXDI6}AU@xG8T+$JG#fzS8*l@_p({@^H^A62+u5p5Y#u~{S?MR9c;*tXU2A;l zH$lf%P2|Ht$X|!YQ06a9m0a`(zD-^^T5;pa82LOWZ=WxH@L*5favJt6 zfNT2pFnR29`Ed|2QD8E3VD=_#53Cs|x?2MOel0))pThCC5=h;66kY-v3?+~_rgLW; z-|>pF9w}x%CRgmY&V9($saBmG!3%r|m0poaOFmqG zW8p%F^$QnXcX;^l#`TBP2$S+RQpwXK2-Adu^*fv$_Ehda8V#K&6|XylqY#M{BEkH1 zJx?C@^gKRy%71qS-TT^{PtISrZvHlxniC;ZeAAJzHo=WEXKuV$V_aKFr|Pp(4T8r# zYvLBz=g4_IlLeUj)mN+|*iX|Cx2efcSWBBq0hFFg!QU@__}f6E z0<@EZrm^@e02u67R$pT}Q}w76Z7KmnTDVZpFl{7V4jkOI>pfzz28YIP=kC=X;DUU@O?dCj@aM+%#TaC<%;%`rLP@4#aBh>KLJ zR7xpp_tvQpy%e%O?y%cfG0*)xQ*A=%kwy}-%k=mk&$3DIs&VpK$OnBeQJ7jECVaN*A7 zQ~S4O(~J;G`&mWBnPus0ItXY(r*nQ*-@pGx@bh;|rvS3bEFEcY%p1XdGTd~Z8AO^_ z=Pk=p@dIYL;E!9sD%{`hdMbrk5NMlPoXc2p%)^;Sqv%*UDsN#L4;CTebHLeo1L<&c@O z1z}EKdG8F;@#fdROwhS%HpT_*2Zk17TbPJ$;msTr$b53_3aE?5;7eq*2uc@V6d7m! zsD8DI|6>^%Ty*Af`H{S~)8JWSB%%}+GUIcSe|a{=9-08e86dBPmz${i)^H}L%`g6pYztNMzH zx@(df@@|?r$a>R@d%p+rbT3BVlR*(tp$U-Nok-olgD~BQCkPfS6vZv2<%w~!BtbxQ zX<2PyZi$9A{`@-oR{@MQCwne~+aefTh=TZU&|%UqB-l4jl$jx-zQJGMl_&5v!Q}bE z=rwdoyd*^^@C&Y}tII2{)zPI-pBJ#+t!`-N?ipwrT^6s84(7ulrzQ{h26)Da)3rkC z5kR^Ao!CP#dbBurGA$PgW$}W8{}~k`B0xSd0uSRZb8=b+BA#KqWmlZ;gM{a2?)@uQ?n6M-&%FCi zSC&ydBYIV&m%qOksD6fVz5HvM`sX#()HL-k-Bjc6MfYXFwdqyfgY=%1U$Cn!a_;QT zQ}IhO$_-&<&~?CmH}P91i4r2=mB`2JXxq034nsVOC)P^z{cF){wR)P7^32tE9EZv3 zoe6h}VO;3r!Zr6i@9Nq6$9`;>hql=wA@>^QYaw<>n`(!`>rkK)?caY*cs2G?B*CoU z=_Oh*_2JD2u+-CD28WRnJZW(N=4IoL?b4zPMFr^udtYxkcJ>q!oM?Xe*R4UOGC+V5 zlwxs$AW;nFB(xAE=P*T_Y=a>yTQ5pbQ+ehh4ywaGq!L{C<6vfU863Svr`1rJGz~-&X%w2lW3@8KM&@UkA8|gkA(GT6<>@kk z3X$6s<}>a-M%K$DiPQPV{biFF+vg2ez25y(^vo@OA>sPZeVxN)Uu}e!yPL;tY0$&*| z1%-<;iIDRW`-W!VPcon)7pu+@<_q$3a`K@u+dPib`%57S_952D8qe_Xk_de%qzwlr zl)X4d;OLYX;Y>$Jk|nYH55sveISKg+iXCN@L%y3eu#aa@K-huA5*_Id#*UWmFfM>U z;9zTBf`36ntZ4AL9EHH!6WLlpv<2%YISOX*%uD(^PfY%$jN<`~{bMHoR`$XA>PRc= z)yy2O*#M~Jmg6o@eE!P1slKGXO6XO<5VW>r-8<7LHk(?VmQgD&PRt>!uj(aON&G(tTZ|0#z-W&XP5o%>BSntTR;xvg258be1nb=Jpl`hiA z`lG9rrHQsO9dN$|m%e|BR{u%AZ$jg15S>fxfBZ{ex8QVcQ9&AnQm9oFh&h37Z72o8 zm!4<~ou^$d@b*y14$%GuK?R{j0QZ>hnx~Vw^~bK?yWlw9-911^Fr#~?0urW9QY#g5C78PazNbi(3l*`71Vy|&4%Q$!r#h~$1Z@Hy+Bb>Jt;ns+tt1+6 zS6(Z;T)*n*<}PX%q&ph`*U(r1j03 za*f_dA2AlSpW~m7YV$TyS&_jRVEa258~fkIq|@6E?|%pQ6z-DvF6#C(O6Vbwkp6F;6C0IoU~`jxfj$h@{bFz0g0e|`4PE;OzxZGS z_{IOY!$A7U0K{S5g5+d=az0!j(RF;?7BcH&Gh#sl#gFW>0eUwyK7P^HsNRpAYo$*%r9E|5!8uSmFq8br(+hoBbb(^~k;| z>_tLCqFkH=d9I6X@o=zvfy7dH{*O`QfK4RR#>VGDAec^>7e42){;u% z+JlB)-|^r1{JP-*6<(R%T3J$2+?G-tL_8YT34=ddKDKqksnGJ&wzAUl(l%vj2yt$6&9a63h5pO7Z>ACwVx_SH z_TU}Z4cLkQ?gn`OLE62|QRwBdSs^xgR*Vhr4IEpHNI|MoQq(B|^fg$L72rb7Odet% zKokiknE&kC-GBD&pSAxR^)v_83RKQB5|JuSE3!lI)F3R9=NRlxHs=`9ibOefkZ_s; zL9!`^9C?w@V7IGTXo!OTmz}8{pMkdMj3_56O(?S4M zyOW+dqM|fI4y+uV(Hc~F5`$fzh4}z^Rh%!+H>4HVA84n$~yuXq3`ycX*Vf8a3IA?00FG?z-CN~zBqpE=C$^%_|x?mi{kBX4R&wQkXNY07CHce@GnYTUEA*inFIKo=f{&w=T|+7OU#tX_nN;YoZP3Saed z6rMn7xT#zFW{7P6ZRXX^rNI|Y;Y(1NG@72@Qi_H zz~-?83h(EB+d!<3cjBF#f}PI#ErPAv#W6c!0*vd=!{FodIs~J-MIZV|Sk4cMG{ZpH zU57r0c@$z>#q1P2Z{cs%Z!g$MG12BF;*a-nH5X_mz^0`me!C1A1`OXgFi1UxU9b-;&Ti5-wFp$gR(M^P$f znmNME!%u*EycZl5K0$M-3CO+;1)u+uP+fy4m0D^n;&D_Xx9na(sWfQFH}5DY%s4IR$m0!58&4}6*Wlg%s(?fk>S@9?tH`lChJbgb!uT{c1wP9VT0YaI*t?O zdShEm^V!j^?G?>gEuk@5??hK%$H^$YgjaNc&>NNlqlj|WNFiu}1A z(u1;tN;?N0YS047ZYrWt1c5!7CuGD`-}CNW;9WD%)_SB@`>vWTS;vvoHq+lP%~#;- zCztxu$FX!v;x2zLcRMJY%yW13-4?OY4ha`?l7eMH0sH_>kPgBR;};t@)^BSEvs+lG z$^B%&#YDS3IGK}NQ=qfao)%x_&VHydK4t|i1Ui}wma{~xq`Tj zP}qczaxk+PNLX-JQ9`M#K}$IB+LUc6Et1%|wrG41vRVFmSJ8+J(T>u>nAok+TP+MGd1=(Ig zHz3-si}@Z!lV>((9@xJl$$5LXw4JhEakMMz4DAi$vSZ;#c5RFDba5#@d=~J{Ger$2 zXtd}a87GTPiAy0eV$-2VGJ3<3aZ!}NEJoYAHlM zE0o}h`^lwayh3Gx9K>oPxia5WUtj)T_!DkSY-)_a1?(KXwEH?rOEYtdDEt`@yuNpm zZr<*D_IMpRcD%8@tE*xEUZA=h2SBd}3M@N-Snx6O0%p`fAo%TrOQ9byS^})om{-N* zoTV|V){Zs&_~Kda?Veu}X9J5egv+RfvyWBPYrI)&#FF50+@zr(n{Gl&Ae^N+k&t;K`+_#krG2I#W~ntl(( zKtB&Pm?w@w)A(nqj3)peTvYQ8k!UHuD!EczK~-dwXO`;-bh~dcnbM&;+QDZ`aCjZj zv{5*et2v-_cjue`=IvAMPuWMIP%iT;+)E=4dx|^+D--Tqq^(CXA3fn!R;5%40Eb-8 zvzDJ#oYg|iNEG+~ly>cLQB`Z3f!TY8{mu-X4<>bny+@Ch9zCXrN(EjLJz8j)qN$}; zrXVT;qQ)Q>xhT#Iw_&)0$W2kXcpZp6WzqdAew7owTy7*1#U@JR7X@b$-9^ z`{VoEGM9auHEY&-*IMuUKF?DS>sYtW}h^=9LR`R|8?J~?CZlsEtKvE=W4@yvS{6z;|D^X{WY&n(&G zo~e;PbYJG!Nd7Z91R&uHa+o%c?_!g_Vj&3nYjMD>-hxc~w9~g2-R==@`#tr013|Td-^vMu`aY-oGC5Jf@AytJ~a|>i~9gPu{ME9Zl=l zNAI$ikTSF5(3!)>+YV_r?mw8?4t(fOSFZeIasMIR$Sy$av|PR*e;`-Lcpg(b=B00%*z7i&WZSmgw#^*1Bhk7xTl+#(TJn4hjO^8IA6{mE zs{Y$qsWGQ5zdlR5nrXgW1D%X7+31qXr!7S#pxh|2em!Q}yf@Ch-TKk~PYdz~0y=DS zSmMi%{P~di)J|q-W#c9>X#(>HH&=F1ZhiIc-KLZAug4yRXwPDnwvf%1)4m(`AOe0g|Ii}6l^o4--TQ?;wTW?BoSe;g6Ss*tU6Ds$`p0|t(qM{-f zM7EuL;|=_^MMX;8$)0@UD(sDlYCF(|f7lx($?5KV<=h343vk}aHvCu4^;6DW6@>%+ z=bk*EoVyc(1nlKG@_DvS#+W@+{#dS;zmcD2D!_dnmHjQ@ax5!k{#?@a_mi%h>uMdj zb(Ss1GG7BH*}Ir<7PFi6bv76o_f^jsBRe7=LBR84+@T&B>dHGjvv1z-+F9Ktv8QEK zBzu&@6k7!wa32f7gmHxE+zP2H z_s2U&Ir)1{T-An#3@OK1WOJH#Ru@&2TG%#r%)MBi^D0CmM~Iut;~bk(`))LFQ(9_b z?uNTJS}QLY=vkzRuiVf83UFLs)CWk!^{=r@?s|F6tD^jMAn4>g=>RSzbRX=!jclo_ z3^DkMZr}%$1r!#bt^sVI=nj>?Vc&Q{5vrXZhS)Lab?;@yb%GWNbRv_u)!?IK?Tv!6 zG{QU!QCk;S*pavmM*rV)`dhjYsy7Z7ltBlsDEX!*%o7Gj)J=ETyFkguNBPPtmR~XLO*tGTO_-21Avo9> zY>rA&R$?zMG1*ub*Jl5r zb(eH}-?z_Q?!Q^c#H^4p4>-q|qf?)c4f^@miM5uOp_&zA!790JY4DQN)T= zfIER)xUnT}_iD+rfkz7FxU__+me9Bv3+IMupA1_!3Q&qa*N%T_vUD`G^NG)1IJfrG z%{Mc(o-AeoZto2?G*F(5m+(65+EHJyQ_8O_Evd}c=2z9^RGC|Lzlp5!(?Y=K04c!z z;p!c~NAWm}$4eP6m3CnC|NN2|0a1F7%iVPxQJA&BVuO{v$E7TPU3bPSl*thB8yqfp zpzPAIR=lGe?hbJOcpU5OwE#NdZ6Asd(l5r4$uSG(S!55J#W_kGrFO{n*h))u_c3M9 z!qXRHJ~J~t@>0cgN17uYCt}^#F>i8nh#C8k=sOho05d+j*xYg2!jxmSbX!`w>DL3e zRO%Nj_@`0!9W@F$2EwQt%(n}fmrTJ0$WmvK6zw_M#d zm<`z3LxJjJY)nCC0aRxK*my{bzSA?)SRRwSDkeo%FAEA<2J~b?dg7LNb7p34UZy3c zY|DYN<}(l$(qbESM(aPfx$MA}vKVd8H0Cy9U70iUorH$x?Fk8kA|kj`_shP`Nbm80 z?EpB-LBDbufPDh&2YCEL4D+3T%hK7|&|q&*Xc*)_V&*%5EpF#les3%*weLzT4Z1$C zUmh(j)xNnj^?DGvpcGN~qN0N$v&vRuzlPe_YXj5DHrdlsQ`795%F?cl9q4~gomfl?;Kf7J+YFO}CquV=hsypp}Pc@=tGg}sq8h4tKs8P^Q5B||s+z8vrJAjpt6HX7qsmnks)|(yRPCx`s@GNLRqv@jQhlPj zqPnH}QPr)wR@$R!&98^$f*mU1y%ESJb- zaxSittLOG`&D;sDo9pF$cnyCKZ{#227xPQ`=lK*qlh5Jv`C`6_e}zBEpW{E^KjJ^( zFY~wfpEUPq0yU#G<1~+H=4%#dp3!7zax@N2f#zk++nP@`S2Q;?-$Sg?qg81+EosMS z$7>(a&eT4xou^%>U8;RSyIPy1tXNt-!BC(!B_AT?iB)sQ9_U~S%?r83(JKUAg`4uBndl&UBXL3r*K*L zUbsUX>Byfh>2HjxYeY(-Qak_BbY~4~_ ztZsuYS(l}A>PmFGbh~w}x+A({x;J!h>)z3I=|0kZ1>z00-d{gJZ_y9a|4ARBpP`?x ze@-8xkJBgVQ}x^Rx%xtViN0QcKz~Btp?^!?seey@L4QeqP5-^V*WhdLGYl|T3_}eg z3=bHB4G$W^4UZe<8I~AU8sZGehHVC$A>RPwc03R)C;uX)(CjStuxEwhd7~W3fM8w5ciV<@m*h64H01q}n7IXUPd4GqND#$v2d(FloC+~mM z;`v`Q-X@DQLzD=Du3ht?&OKhB>4Js$heT40fkc`~0zrJ9_$dNCCA1PhT%@~_*qQkX zW|^SP-km;D2;|d8qI^I!Tcrr7Eo`wO1uyNJ!+PU*%&J^;n6X#2%0_DEWUBjDoc`HMP>+ zdt_#S)(#hp5UDk`DVm0YGJ^QWel1pD_tgG^$&vjf0~K9=+1y>~zJlNB`uzz#UFG<8 zQ~A-5cJAO&4+dknNNfnxqzIH$o>EPnCc7N7bQu#Rd-T=Cb&`F?u?q-wewh8zG$auS zOx<#{#(AQqxwb|tPuVHYJkMS=eYW@A;~i3FP5ejgKWWd^u;C-@rmC~&UFXc_&SzN9 zTI_82x1F1%mxjbo%G|6yzHskfLQL{8c^2G`FG_nh)GrMmW+!mxEj}?rP_#`$1f}Ap zLE7|rfvU?>k|-%vq_x7!BK7HN8*2smvV577D}vxi2b+2Y&+y(ZP#~E8#t1`%p2+*~ zr@0?B^)On17!fK^bW<#9QXoE9AcqLKGYz|E_;vSAcFzemzzlpiMp_veYj{+igXQ7xGygwX zwmHGF=+I_lCS#U}d^z-ox0H@;L%RW)i-pb!y$|mJflHIv z`*6NU`yr4GSt!{Lm_0v;%afvkoYL2oVA+O{dLmvUpxtjxu*)?HT~4tm((F~TXj}QX zHbVo?j>8IN#_C&UOtA-V%x8bJv^Y3uzZAPnh^hcDIjJ?Ma0(XwAC&&%qKWu;k*0{9 z#Y#g@CwR$vTyQ88dl0|w>Iav<@WS$ROpQR`c0;h{m8Vr;vFtGK&2K8$?Y!0a&m*6{ zsoi?&&Fr)0zL^MPRtNH(UueCK?|VN$!wy2#io5LP_KgD@rMenn%zL zCMaTvi99V6VCP1QJzdLCCJ4N-sRslW4cO#VIhyzu7*!Yy7t&`T{gP}o?L)G`Siz1p z1*$Nyrwe(`n6_zJ(PPr-cT+^=qJjNWQthwvOvqAjF!~T@AbzhvDdKeMF)}zvRXkFe zkAt=x**1S*VRA8#;LD2%&mq?)Ye&|g9G*TDkhrYqy(r8G5Gw1NEGiSm|Gp7_ssCH_ zmEMJX6$@FN$)#xoS~m&9Lu@ob_l{{frr4M!7F7)#%Z7&32r}?hlQ+Kx(O>|(Lb8b?K5>7cwCBqn4#vK^UH=`-)kv0Sf?y06OPjf!yj$gq!Z zDz)fxW@Ut(d+cN7S)zQ@#MB?)y$FD-StX)8;4}fXiP8%^nTRmm=g!22Sd%-GW(&#) ziIf%eW>0`3c}VhM%ug^wp)8E29h*Qg+regwbWylImb#a8FM$m%%ySN+V9*`}htpt1 z%wzyN48N=n^egT1DyH{u3RLeQbcdeEv1s}$1%J0()c)&BK54; zvE8MOHPzBp4Y6Uu3bbAyNo{GtyD2|rIk*+$x`0Dn6zzuapIs2#dXPzW||~?g3jWG94m2kb>+=1CSra7JNu!! z%hBNPE~wCn`&LwhIEE28@F#az4xQN5*=Z`bRqQC2$Z0RMIe(MgE-Ndmsx}$ARx%0- z0-j~sw1YBTyLOOKmqhU!H^#?rtZf8TP{bD6Si3PEp98vH{32a2O^TK&A;&2jN$1Ih zrD+x_gPeA185KJ7i(DpZNoh{3m#CrPu)QIHfa;ZqORC;l-)L$muCJ~}Iw~m4tEx#h zJ2zJ>uUuZYqAst_SzDwnY_(BkWg&*@ZXfqe&gDY5Z7HOa2@yVT6WnoQK?(g-U2Se| z9eVoT&OR{{39}9(0D@SL%aTN(P04_!-(CgZp)@Mev~G4KBuKP@!T8@D8lXPNVD#~0 z{KtPXA}7Y$J(7bA8HgZ8ax;by93Lyuw1zZ`7&tt?T^t?r>WzY>z#jlKS*g$d{ zOOj!_u_a+^lgI=HE2iE7_(aB5M~3-18_WuRMYN%Im{DSLg(m7-nkUI^^2FOfR7@O= zQ3S$*;C>-Af29lj_D6qL=mRdWVP@ucX~m*j7Lqj>&o;v)*Wto+3iz1rj&y;n$Wws8 z6`Why**RoNhEcDoz#JKEgSKPxJe81i-zB%Bwf3n7!g#O;L@W`&sD6_GSHZaiX+}Ai z*b`{PNV~IBQDKSGQc~rrF0ImDI7zz{yVwa$RCKO@0W?@~>nR)f{|GpKHXf8|;NC<2 zG8r$4gp3M?j0y@wN*%%Pfnn@n8|U%Ylvx{+tJ5i4o1LAxJp+U>yfuZ&tAHBOxblm@ zG+jvYvv=ljkfvqN_RN9BoQmNC0|<2|V$niI*$+ToKb}}5dIrz@Zrx&j7E&O~Xq%!D zm56zHf7z7BfX^vDF*$LoW$T85^*fU&ICy)od6OKWXcm%7G|1DT*fxwzs1H=VpGa72 zX$WA@VI<{2+Azb6Mak>cZ=D5v;O(PqAPS%d4$Q%)W!MQ+DL}icj~%(BtQW8tA#Oum zb4rU@DS%6{3gd(uXmBQ!TNzwQ>cwc$Vs2?BL}!0Ulp9T{xg^h;2%PiCQzdT_|D{OJ zF2v$S8JJs}U@2pr(H2sJH%cx7{S!}S`IUw8cStaqc=t;}@AO_`qXh%pZPnPvx6;1= DgjuED literal 0 HcmV?d00001 diff --git a/webclient/css/fonts/fontawesome-webfont.eot b/webclient/css/fonts/fontawesome-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..6cfd56609567bc9db55186415c694d1d32808fc2 GIT binary patch literal 72449 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
U~M!&>g0b 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 literal 0 HcmV?d00001 diff --git a/webclient/css/fonts/fontawesome-webfont.svg b/webclient/css/fonts/fontawesome-webfont.svg new file mode 100755 index 0000000..a9f8469 --- /dev/null +++ b/webclient/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/webclient/css/fonts/fontawesome-webfont.ttf b/webclient/css/fonts/fontawesome-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..5cd6cff6d6f6cf438a882e366420dbcc5dddd3f1 GIT binary patch literal 141564 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ƓCICn66&u!PHl6pn& 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%0D%8GQ!Ai?6y^fVUY%4hi>cI9O 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
KT23~?3Dw&p)A=062yj$!;@;Sv13 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 OgRXCo@7#x7tN#yn{mQri diff --git a/webclient/css/fonts/lato-bold.ttf b/webclient/css/fonts/lato-bold.ttf deleted file mode 100644 index 93166dcd5a6f94cee1f26f23bc4e035c8b22de6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39164 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 diff --git a/webclient/css/fonts/lato-bold.woff b/webclient/css/fonts/lato-bold.woff deleted file mode 100644 index 35934a9bba114241684184cc2f1cd470a2d00df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37256 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%0D4w9!lA>^U{r(k5@mo0BAZY&Maf& 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 nbYymE_36vb?`Baok=Z5-;20A2PDTRH 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 qa-HDG#z~%&oZ=bDf2cFcoo`i#w?ueQ}S+ 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ⅇ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 Bkdpua diff --git a/webclient/css/fonts/lato-regular.ttf b/webclient/css/fonts/lato-regular.ttf deleted file mode 100644 index d6101f3872a59af70be3a6eb9ed42ea1e0625dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38588 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 VW4)*1g5YmnSk#bC|G8lOe*ug;7|8$t diff --git a/webclient/css/fonts/lato-regular.woff b/webclient/css/fonts/lato-regular.woff deleted file mode 100644 index ad1a467b71314d434d54b786887d3bf91b465368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35852 zcmZs?18{CZw!N@{xH*Wcow? zaG5`4f*&D19tenz5(vohz*5j$+0w@F zr>(E&j~>;JP~Rd$Ia=wv{@CJQ@^dZx{|GP~#H+Qw)z5wU|JV$k2Ly!Z+%7{VYir~1 zV}IDsy#eO{0fD4*KK(^;&AiOCvQ#=o8HR75PrpNAEK-2dk*Z59LQwzhMuk)1(CezY zFxP-p8FEFcYHUWXasbfp{1=J_lEC+m5;Sp+9s>j%SP;SAX+3Xj1JkChvB;lrysoIc z9BC_0(Jyd__uXaod_0t8aooN{23un+RzkZ(`*5n z-TR#3-H<1}^Wk$*WCX8#&aW9~{r={#nUlid4pe|E^WJ3B|GQ5)yy3(RpOnn@rI3*4vJGT!Q!>1qBk zv>2K@)Oy5N#L{<5`O2sItYOZyB(HY|@y!60oMp~m1}+{Gq0@@F0qyOL?AGs8H6}Tl z3=PyAK0EKtkLXu`o1L5C>nYePw0HZzb_2_x;=KC3`mtiFb;|d$va&Db&ayZ8$Jg|| zblb^dIa-~SXXTe-*a!gK+xgyGP9tCC_eads4O6ESu#{Bt(BEomiv-;fkR~nC)p?Tb zs-)3Kun%ohA8L`v!AKH$@I(2iGnN{8?7GldGar1Zi&$zfH0lse^{7gg8q}p;a7(K| znHr3b8nC85){CZIIMa}<8fZ>E_^i z$`X0LVZfwNspNWjzW*snBB{ie#0w|=m%{DZfW@C`nGV+fM}{@5nRF}NHDf@FDW%zC zY#ke;e~UXcR;2>0aIXYetdN~@P=SIrsY$FXcj#$cuw4hWwzE(5kc5j;XGpZ_?_{IJ zzp%^3NXmWAAuH`|aISwi&V95ezC0^)7<~Q?mbyD1ye%V*DLYWwlkS`T%QUW=glw;` z3>{S@)8N_5du}wZ)&$Em2W$A#Lsl`(`?VBudxwHram6#ni0_yj-H;2GxUhGov0?$- zmYd?$r9TRd}e#H zmrY$|oe$1BR;nS9rT^qk2u%%3d8(fQcsK?*;NSnsJQ(_V!_36|dSl?{13wuC`b7VS z2l9WA2cY*ZOxc0B>|ls9JAb1)A+Gz)LK(j?p3Wy83HCMUSH2PX$X2?1uf1&J*lBx> zAG-QnQQlU&hHB4kL9FYpQJ-*&hj>Y~Iu}-l8M7O0fcJ^*c`=|?bU~Ax$yfk0zff76 zBjILBn1oOrx`3m!=RqkgcRr$OAXx+OntD`M`WqF793qcvXQ3rpMx0W17#(!BM1%6c4h4~Ir-jyxTV;xax8{50we2@65zRCU0}5w; znmt42mKA=aOTfU7SAEfzXT~3xZ{i;|OzRoL&1cuV519*Nej>WvcbB}`$E7@Z1gO`YH#+e!e;&l`iYee zT}$?oAgZ}t3+FC5H>>6^;kcDgZ!p_5^UGO&Aj7Fmqd0@*e?x>*o6@ip3Y|)a@~z_F z|H_0hSMRx^441R(4Bk>ktJzTx)yDP+0z=!qLUKeaR-!JND^#K;nJbi{au&=IM8TP< zvVp+P4deh&xFj310kAPjwZ)||^iDL~V(h>g?W{9Im&6p+fB`{^?Oyfmk znB5CziK1}L9>nv-(#sk{`D8xK%9aVgm>lW=33)^dtmZ;57gzrNXPjR^ zx!3!TSe#5kDXca}Us`4Uk0*V?>6#L|T`I^>17%A87}(*lSLCP@G$rgAYG38V^u+ViSQf>dn99xHFUxg{_^e8(6UksI_ZX`}5n%drISA}~N(r8oVL>wOHbRY7}sco+R&w^^( zoRFHkdICz@tPq-em$TK@(1ukF$eKRcg+JWyy?LGAy}T>%5cn_lE+L$DmJ8 zy1lX{tWN+LF3%PrD1aPWco!cELV+PNTwfU`-vAw@zXV-$@P@~y4RLS_qpJNLQtW6x z3VH@Yx9p%>iiD3ct;8rV-c74;=eJw*D^II)tOebF0HU>uj4?=iIl+Q1>$I5Zb2ZZ> z+ai3$<#-jKXN=?8Ww%x-T!qjocmU-jFQ)c(D#-^$?pTP2g4{MI_qSm#&U;}c3X`Bs zQ6z42Asj>nSy`b31)@<=v@&rv&RbcrB!%&8&`%TUaj#IPV<95N{Z^4q=WI}_)3y7_ zjeKOog8=khj}P0I9(&-5fF0(qEogK<R>(Yp@fXtyrfaa` zh_9g7n+=~Bg^>UOG*si!za{JiO`iXqt}2W~3pyj4PYP7Jm9}_Z)q`M!=6b_C8j|A) zy`q;D%ku=CQ6$Rd+Cv5L32YLVkt!$)DZqlUB+ko|1#>bigyqV@I2n}u5z0b`Dv-wy z0;WI~&*g^#Qxwi2d_$fs4&@bjpvaR$G>#-!5>6xRLq{wMl_wI65@#ly4Hd=`%rT1I zXg(elMkT2G9Vc=#Q_#%YFZG9x$Q7-({r8s04Yj`sBDH7@danU!1Y(7-t0tC^*io-* zRc4R+q!;mh*f!zNU?kNAFQ@9TJ>GN-#yLSnNDX?Q!S4tH>frxmPOxg!d&&-t2JPz% zI5cXP>NP7(9&PK)*)>>HYt1VR8r28QcMIk-9n%wJwd9I9PMOKFnzFC#;nD$8H{KL2 zb=OyE&(2xqi>0dn4NDX4EwYVg%H{tJWwM2Ut=30@yYqG>#6Km#NtF2875oA#&;%-D?WT%!ndSjTjU=3+x%9roh2btn*`51%blLnEDhZZ zm}^_GG1J!epSE&@AS4-!zFDB?>}`w0Vw*g%RX`g-;13(G=Q3jZo{` zQ;kuRwF6AeOkH|+2GhzH;_B^VHe4FCjaoYOKcfe-$R;vVIOrU7zM6HuuD2(n zVW3;DYlHir)%){{gXc`HIjH)dxx%iC2DQB%P`j-nh@LNPY}?NHd_u54Hn{yo@KC+f z?{~$hP}Q~`pE;>&Q(r$z*poe9R>ET{)gKVkB#kJ)nvk-_V0b^QC%>$wdbST5_I#-7 z-%=NcD|i8qh;mf74M=iSxG%vMP)Q!aIB?T7{ogLN_K2SEh%lGey1`8@tu}A=K6W|p z-~;l#wH;R_a*E(y=e=)r5s!r8_0cUW(~ZsbmG2#=8n`vhhPVHv!cVsk=H?V-lP0 za^t9usf_BF=B>t#%d$FI))CQF;*3E$Eu)MM6016)HRIxo_-5ng4x+4s?`fpOPNaCR zI$bz%b+}Re(|96#!M4MKhY^afP*OZ`<*86wlS4WKaewXX6dj2%u+x33hj{HHo`_p`Jy-eC)rs2U4n<^(y{A6^In=ohcp_f zjmGU%fMGlx8b(ZXe%>1;I#y&hu)t0=X2H`;(ylTbj?IgSh+{fLqwOeCF%ORXBo;zOO zkNt*v07Qe#o}RIu9?f3LzMdZPU%6>649fK0yLx~<6JrAd1ATyjPESt_uP;Gw#xE#I zN)S(UY;<&Qrdqep@}H(%QFckdApJ(M*!OBnY5bCYevm++rtr}}K4^lPw6XwtP7Eul?yQ! zO9g)CE)<|PmJ0nnQ^=w3GvgP+oJ}QVCh-R_lf|Pp6rd;w&!@9C6yjW-@{4iKrqK?} zBw0HaL-3r6PAvj}%0A`{Py?7!3M-6ouvU9Wn`+W3EltR{RtBw~>Oz>GYI6dx zcM!zbC+wo_{1doMkZ+0ULsN+3$9@Oj_|?Lo`Wvb40vculqx>TG|LDH<@em884Tv?_ zC6>bIv2Tya3wQ$16Wm06iWm}*Y3x^YXe+LYjD`ya)<)M612n3?Pl*^(om}yUm`irb6S&Zo~t;i zz|v5ggg?@{FMS=DV5PYab{mjpSvC$fsjzeX+$H;n`g(tt`}~BP%%!ORnI!@SLIQ&L z{sw|~&8+Nz@YGsdh47s2Y+H+OG#*{6Bc@xeBbLgpqq#=Bb|sd*VBgY^#b(Tu$rK>P z;K#-{5)l9GM{1TvLrhWMK?63n3>>6Lo`0!@e=*SZHPxz?EY^4O?)72oc%5JFFm?a) zt8veVW~eUJ#w2MLcODWs^H8<&eV94z zrBMqWUPj3N+UB7ypz3~x2zsXAUliD|!|Bom5|B1PIq15Ka8rnuxE?GYL`a86MwP6q zgeh7x#Tv5Ff!^nqmg$#|Q`Y8=d#lS|pxr9uJIxHT4~c)C97551+4{U+Qjs3}5kW?r zpkmX>X#KqEeR&i@5d_x z(TRaM95SG}?aTRq>U^<3g+iwdz2$!J?X@y7nMUl9YN-JuoaJnDbERnOK4kqWe9@jH=gO;8NpI z^_0;^N`u3(8xXrSVo!l&25I|(Pcs0qghT=Q1kisoQz-y3{OSlr!uJLK6qNQYFV`iP z**6`uSG(;H)Vgf~d&P)|e!8=(q$I!MO3W&m3EyX;QkpDm2M@17(Gc>fGg>Y{zgxG55$x><=k#02PM;V&9BW9+I7+(IRv&2lYwfC|oPxn@Ist$y zRB}6CYMA1zEA#&>(T=gPOL4zMlALfxo$l3jN_yEN-htwxZ3iZ*ovWQ5X&zNd#dgpu zRYzO`HleN1G1GV2=XZ|vBPZa(bpa}NGeQ3hBfF*ADmrWp3W%ar+t<_YrD0NXIa9p1 zYVuT*j)e9qI=hJ?^m-UN&$)BD(`TGqXJ)^Bxf5NEK8>lj$7-5zZUxwwnQp9|**98S z!88HP8Z|0=KUOg?Wri$k6e+t|spEayg7qJEY=!n&A9k9Cb~2?aSsi5QeNf$PQ5Tlm zYNtn44$P?0%6+x-Petm@T!{bdOP3H-H`Imy3aR~VgbvgHW#r2XG+90k-`xwZy1jN} zLPMZI$TG@Mgi6wG!5FC+F%5TB%hlQ<*o008=U-6&roMRT(9J9F;OgWi`B~SOInglH zxjgntUI6Axc+`mM@z~i5_B2W+Z}B1M_0JHU+Q-A@9skx^I1b+NHyyH z7Vz({-C?0}zSo`WaU~8$yTlK*1;GVxjz?Bk+KnzW7kXMh2Ha>6iG}0mQU1O>-mirt zjf<_p8ZX-$wL9_^&$GL3pPSLM+!(%(_kYl=(@DQ^K_KMcFNLwbm|tBcz-;6VZExVZ z;ipufZpu~8jAB8!V?%&Of|{sANi9K33_~R0`5{IXQm09?q8ceG>OvB5o61}>0k!y| zP-cqt(tu>aJZZ961gq&$8l)%#Z;|5o9UUfD-q&b_atbiLa3#!Y~-HI9drY zVEFz)+tJ`y9d!v;+V`lhf?29k(IH(U{2J6n!Rx&gYzJ-$*ZhdJ3@&pW9M|B;hV~Jx zr1vWdgMNZ<^wS~s;Nw?cOoLt3LTUj^0Xm7MTG%{3(tT7BdXspDUSgHPFqSc8$nZ|) zGV6F1nxwFS-(-?ma$1%tcMC#wzZ`!|$mp&uXRi-AhW8$A+cp3_z+AukuJkkSD!q6( zeQ;g~8hoe=(*x)`xFhhEURtId%1C5*z}pLKi_kueDp3{s7445QhiS;Fp>7RjE)F3c zXd_&)6%0R7!mJM3NYOirs_|u&2`bIkV^wejlgBetRjClidYhpAVzYO(w=xKGz4MF0;q&vC}E~6O8fCdWrw6)J${22)?2NHw@MxzkqGhyo~5i%Cur-tRl+m1G-OX@`Dr_$D`pB%_);4gW@9UZSA!6)kFs8pxSGluX`?JoLI$nv6($nVlC#RVYb)1 zI=gHItlAcwt?xgGr0N(sZOR#L3m8#j7E%sL3RN46jhfJgt$?5OEZqOGV7Ygn9gM>4 zs$(ZQaXpwJNrQ3tA5F-DjwGkL5ye(a4m5R-pd4SrS}B}pFn)wVT#<~-G_&`NT8D+N zfvc7m)`xkN7B{RG$*Zc1f`Y9}i(-y6r9*BTB^4VFoZu3nvJMll{i$wcEaA8PXSI`i zsKLUOqm$U)Q9pZ;fN_vL=LUvS4j|);MT_S#g zNz%;UJTcec%Gc93_LtTliqT{CG40y0rPg$3P6+NTK@9Ku1%#Y1Of+hTgPc)zsXR5QJ9>nFyAmfZ;$qiiG0Ky>n@ZGfyIRSX`~&`F91*opFe}X`rei@O>G*m^8NW zz$6@1ks*@F$l2li)vZ6+F&pZ3m(!`9-l`YQeKajJHQtK5$7t|9ba=`{s9dFPYEokj zFN^n3{NCQ{uPhE99i6QX&w5&V-S}CbvW_HNhD)~##^wZrlRd+Y_sxN%n`ZROR%FC6{^_0<$CZDyigg{2hTwgN`D z>W9aui5w66k`~(&X*oR!A6?GDr1D$pPPL3g7+GZMvPij#i)k8dd26}SvtYyZ-=9zB zdo)8Svd1~FF~56W zU&-uJ7Xu$uWT~hnAlzBZfapi?h*yxnlFDt(nPtIR3SuL5`g0)OS;bjC;K39u75lz@ ztCK82-_5qJKw}Vf5!!Q~>{H3Z`ueg4E@t0n@o-nbw>E+;5BO@P>C$*V#Y?T^f9a{} z3qeB2e~J0KOD>oqDNG~ze;kX3p*|52tSb1!zha((n@ezP<``c3?^iK!Yku5hDs=+AM-q34?l z)+Eh;Bq$Ov0VR?P$(e&%CNCmch{e?7LsJj+L~!zoUHDNk3EdPRXvl{m}{q<*>Ut@Vce z#VnCcwC+`xU`(!M?1!7YfI_E;Z=iVZ`jbPkr$?g!71*uY75|_Zt4i%cTec$*2)bsE zmXe0B+g18*((#jYoTWK{vIqj8?FtMRJu=pn-DovS^N)*#>85J5hyz*nJ$56WT6eV~ zRHA1kuxcs%h~vS?31-KD8kTNB5T*;?Mswk%wc?YI`+tX%;~lQ_ece z>$s2FlZ~VftD=O-GGDqhnVi^=9NwNQF$7_L#*I*!&@|dQIa~r^ zvVnQza#Kz*UraD(XI2d8eDn%UG9(AL02i1EA_tdtP?tm0>)8>WWA5JKtlhA`dP~Rc zQ~hvDjUY#S39!OCHiKKxIZ?|W0-EbLC z7NU8U&zF0CrDz-A78m{wj#Bs!I zG#hkJ>N7pjKkx|MkA14BlJ{mPbCnZF>7}dW}bWmRGFnTM7o=i)BO;tx6S_= ziiS)~FyjXH;l8@p2d?iJ^34sN-Sw5R1B5>28`}p`r*wE30o(Br<}uJ2R1yA5acL(Y z;^=YL5?GDWc=bw8F6=(#O-|RAN4twte(MNVCq>kn; zEH=1NEG`N*$k?PFp}8G@8&VWxIs|@lXp(1_B+M7V&&x8q*G{t3?kp2CTn@qH$=r$X z24gB(He%MTVL*}PTN7TY+R;pujWcTiP^sni31S~ujl0R@lr6s$ff*9^CzIm9VyGRI zu~Jm9NBUDbWDT9g9c*~oF`kHU@DZ)C)O>H z{*B#QGhrgb6K`$#kw~m$maM%!2eg7n3}{q+^{%(LIWgJV&E3{*Wv;8EL$B8upVJv8 zw2E5WHR$bb<;LPCjQ`Zh%Kb6y#RRx`C%V9!Vz2YT4$_Y$($!$F%xb?!i_h9{>d#JBrNLOU=VNaLtF`J=*{- zvzL-D$O+4WDZT#@eK~Cd)dH}oidppAH<@Q%pf%Ip@Y|l;SV(kyTflNPJb~fZyXK*9 zw{NM|u8M^2M2In*9oxJ`>1@TaDSRaTv&3p6o%Vr!))>CEju39 zkP{Zs*rQpxSWCP(dw3!C>6ahhcn=A0$J7E-kj7F-*N}`+ zf-tVf9SiP%QEK4q)08XJDN-DX`?LI7VIxcLZ0mTzqzIWaPv3=%(d+6LNUQI3<2+vF zmMygiv4xK7y|4F3GTpHmQjfO95pjZnqwzkpIXUUlU5l!Nm+f@ihrNP}wx$B9v^`>0 zo@KPsGuDYEYGoUuPP0QXxC0cq`5cJr6No)aDJqhjJ}`g@eOsvPQyGGhf!@!K*Wa{f zJ%`$+B4ds*WA>{iJjRU15@8snmcszI#8`{vRFerpd3?Z<7i}Oxb@H$B7snagFZf`C zvmTB%o4?XM2BV8ec#@ANQ(Agc!EB5;jszk@u0b?sZ%VtjHC=xDVZHRY{~(Z`^10VY zdt6yuvh1}LDO>cwB2VsJ$4bb^v0j$zDPdFAMiAw>T+I(fK5Sn87$}_7DF#3f&dJM& zSEBCINV=WC8?a1rB@&$raq8x>U`Ze2`P?g>j5BEl03}iyfC8sJB;G`(*Si8v+_)1= z=f{MqwLriPd;Gab+*fpnEU)pilych=K>qOsAAxaI0I$wr<#uJ^ZUikXu!+d7o{u5;9 zc>?;vsMish*%zHtP)`3#*ik5$LrX}fA-#-^N`*77|4zqrS>DNe@R6o&ojuq92VSzi zt$MPOjV^NQ;$!l#_nUz13(74nPkpF`NFBF^!!bIv9$eu0ClLMIOvoWt(KVq$rI-B& zQ!!Maol_w#Q5*+_D%F|(3`CHD6>CrjDLgg97fi~toPVwf@2lLhRbGI2)(&MK17Id6l7JaA%TK^P<_ z1xDFYy10n8v5*!(Rj!c9b%)QS{ph&)pt!`CL0hT+5QQnkghc5ou`Ex!KfNAWsZnAT z>2hNQCZrGhf^tk}?!-i;THPv|ZF~@;k>xbY0}%X0(A*|dT_1VX7uX`5fgE)^v!ap= zH5CR`pL?-P1Pf1c(V$lZN^KdPNJ}N3W_KcZ71njclht)mNY=(>eSg#9EWh5cdfis& zI89(tlhuLDsk4N%;c52SQ@Gif6jbSKU@U`C2=%7pZT^+L3iFTaA(Yf4Ve@Hb&oY?Xl(As_42XT^rt-BUM&ajf-g<#06Gve zfV9#<&f$E^4L5(2e6qTde9PYLa?Zp>kb%HkN`HGg>fWNMK>8dCst3FtpCS?gwXK5? zu>KnVp#+^_njG^yf$@}GY>(ex+MIa7VFcN-#a3m!$}(46|ZkqVi*IMl6&U(#Xh7v^&4(2We%LF{QmSSJ%;`uVxo1 zLu#9>^aA9M95SsQ!ULfzhR(3HaV%-3Z# zbi@@5!h>=fd1bz<2N!=l!`Uo$_AliWqigY@3qKQtr_Sdz0c0#SzqFoh2^mo5D`6vD zb#v+$<(`vDM3@v_7hPoKpdF41#y;9!J=)t9P ze?T^Icaf))VV!bZMR=oxI(JfgE4xn#4Npd6$3(84~V=!KREu4K<{5fZuZ%(OO zA29dY6|~rFEU3hxrF?z8Hjl0uV1uzCpN6M6`wBfl-XnSkoLH8Adv|B%;rs9PLrc=4 zPW8Nj5?QraHN#Q`NjC;6v|0dPP)Z<&qNcMJtu(;V0}7eJ&(WSYPY~dh@FXJ=K{?rl zPD>lTHzusoo8jp46VmUZB+J>R-Se%}RNazk6ZJ5ZC*2lELzkasqoBVa$I3s4mXE8L zk>uA&6mZB~qlk_hdmyYiFBu~*q7}w~xq?0@ob>=xoFP__4^X7hHC2`uEQQ%9Mpocl z0qMc@^sl_BVAdPHTR%Q&vS74_hJYRc2lZXHVH;llb0TS++z z8Akd5{8X8}(X8*TySEbt_Gj!DmaaCdMVtN1R|HA0)#&Ml^H`e`Pzn*ARZPV;DNSol z)jz$>AQCCs3OZ_SAN|oR2>2}x4tf206_}clyUP^SDtBiOjnyX;waSi$PEW^0DKwwg zx@N=c3Js4VHwE4I()kK<^lnpKiX85{8Yqe4A@Bha<*!nahH7l~Sss@N2yrttjW(=7 z@H1u&GcA=(otjrh92{T_W!&>;rF@V{BByj$>keJ!1SPMA?c-lcUJnk(_p%RB9w*W3 zo`PLjoI(C`P(xyWbamT*e>Hn9wdBxFl{ZCQiCS|`^Ia9Cx%E}ge$L$&V5%Xx52vRU zTX%+&JVZYbBcCm1n%Wh)OtpdTS*T3JeI?nSqDFb@%bCJ%ssastk+aLK-UNT@CW5?V z2+AaG>Yh3!yBlO4Ivh{axU_LSO`P&&Wc8?w8rfkqa%@pn4{2<%c2{nMIUjRfj}wgI}9)Sno{*V90HhioC^rDo-{{#!~q7c-Q`e8={Q zhrtJhF{>?Rph(UcikyL_fm#&i2A{56VG zY|RsfWXwBQ2$RXpck?6HNOS}kP@b9m9^2#Cvlz1isd7~F0xM%{Pl7>;g zKp&Jf|6*X5P{=*3EmXBIqwbQ*!$uJ{hrDCj(`tAUZ6+~Uix05~8*MIe6ow>u_zNoS zGT5%ndB>(Yx&aRwT)B>WFJ9 z`*NuOC8BKFqiM>Tf|+)!ej~O(VcsZ(Q&z9H--vmOdBCKoHsUoQp4#UB+oVYk7lNk-DUCxD6Xye-!@@19{ua zN4Bk_z}7V86x@x?{dmu1Q{EM~jf<8cwZnW;jP*@b+8`JRiv(#%Yc8k``y?FG{`|K8 zog2toKm8V*-G!fnGtpKwPVf4sgtgs}X_l$(fW&o#e6d}p13;;Kd3}v}9^=jTQOC8J zn6$$K_tRej``&^Gzv-fO9-uiTr+I zr~WP@>qK=^=Oa>A2NS?52{6X#n79A07_Sbi#%BAPF@ha6_;2&o_+sY;BsAnVxuDk4 zUw-_UIFpdI8ln-=!=p4b$J~U=``_$e6`0@ASqwg0`DpYbb$|qTgI@*PB}1^|{ulsI zB9WA3)dzS8KO9quG(=Z^^T+fDEw2bU+A2++X7aYg>VpUtV37{8lL@P7CO*h61K2DNMYN4v#h7cMW0(t!`1(Emxa})1= z8E2hB76%|f>b<)?sRYOAEG~*XJwjPvunViu6A)dAq4VT|bXrW0Z`9CN31_0;8=K2Q zJP>v6Z>F!(FFPEr2c#T*1ERbK zkUtADZ<4DrLl0H&VhFGjAI#>376w_g4hS zRdbA(J?D%{-L`QFHtsMmPr@e@};T>Eh4J8}Goh*9r2x+8^vHWK$-oU`vrw7GxRrI{WN-KtMb@6fGw$e(+@l#oCIpL&@ zsnmM4YJajHkB@mHY-EMZw|0*5TvSR0!YZ+Fj2U%H!zYn2!jZ2txZ? z@H-gPm_h-HkBUZeyn5uqKCC)p#wvQw)hz4U<936K$#+yEz{)0Tr*H+n%GRQBSFkk5 zV^=YEldDeCl2js;QK@7CrhDFntCT=GO7kILJaLZPThP3Yq`go8TU*iJ=2fB?;&`qdxo-4CXB0V8ad+iIc!iN?_FFmC5`bC*QC4`6-SID zUb5tTmasOwZ7Rvmi4bSy4n!AU8)Sr#cbJdgL&<(k1e;j%8p?PVPkwR+_6t2b24%Jp zeIg(!H%aAHjvP_qTBZa&Uu`_?!`{<^5Q7vl=sRoA(-EFN%S%t7TbbzP=AXtLl3aeJ z##K&SULqN)N64+(7j)JumQ$d5yS3?6O|Xr;{4oo@2C+_2&^EO4+5p7ILyFv}uhJ+;P1s+h%OprTa zqW6eeVQSx=p^6M@V|M47Zao^JoR7$(a>a)Ec~~+nTM=xmpEV5X*u(+(8n*FC{6N;| z`!Z=7>y*9LmDPp=V+m0%YPF8f=QKdCGk%q>o-4%fQ1n}`Ca9IUDV7#wxYr$M;%;h! zl_+)9&MEvZTv6s%*G+XgaRT>xS|-8KSRpm822x|drt!_Bco-Fw5$2VNgGx9?7-80p zRTLWy&CtFJNhk@>@Avo9%zu9B5zD=H2az#`oZ+^V{s_`oNWVC_oivJ)dh-JFR;wa| zGY80h64mMS#$m!p4Z|e}oeqkblZ@K5F$Alaq2Q{06B4(3uI4gKqQ_LxmzB!fRtNp{)73@XN{O8l?H)XzPxj zj)T#DQm)H!Qf^}ObX{q^rJX9v+K}djg+0i}e=W7D(PHtIH-LeMmXniq)AVMr{B~{B zoYFz-c!m>?BNeF~aH#-N~oPK72Js?}8B65*l5lgk+h9rgmKgD@CcZ zhJ=upmynVdj~iz#pa!%T^N&SJN;1q6aj>9QR#sRGbyZU zd5w6GS}T8514Y>BfRD-9%X8R3U&;GR+r+iN#&g0on}7>-5-_7C`3$fkWl-}1W}~J| zW$P{Ufk*p~8=K4>DM9}SQ2bngF;O;`jyhDaRumQ$xQe_>K-6Q#Xdb7o+#LGWDIIn% zu)lWRUNn+4*c(Rog%dxL@Q@U!m28>*3-r~$L<}$KH&YLmMna&sNOnO{w(EQeq1Gd5 z18ejUD@61pWM$hy_buIg2z3lh^5W+`_w)&mQtHd{z{%~iPqf^f^d41%K_&_EIlkQa zNWT1*iaH4EGwIz|cWd=&0$~~_MSkyhga?sz;jygUeQUq&OLf+^>G=Z3P%ZHpE^x@B z75CkS5pkozA#e<4(0AA-O=_#011+d^h3VC&zH;tg@?`sx!g;$O8+>(r#m(^Wu`kIS zszuM2M0$!H+0m*|NyeQK1a65irY=zLpGuvS^B6@?w zZx)DcmQbJOfm1os$LvIo6zIZTh8KTe47)`PLGp5OdtGVZzoYu!XCNTHsSu$?>u(ch zLO5PJW@i^>u+TtRF9mK;U-q?gb+G-S{Vo?ip%B+_OI`j82t`F%_0b))8v7tK_Qo_Gp}xVPeZWQf$HBa+63 zIJoxwB8!Cxy)K0i5c_$-x3$AMDi*KtLz|Lz<>D4xSwP?{@Lc};)6k#S1-@*lGk+^5Iueh8`CGD-u1bk^G zw4xX7{2ZB7>3B8U@B9@-Ec>O zN3PXfXGX%88rX)dLHc(o)8=D9Xp0oyrf(<+(wT#O;MC8>6FM{nWyrE!E*~(o=OsK8? zUs+G7gv}_8wqllRuIawWo%U1aVD`n(zx6`~j*h9sy{oda+_b4MoPXR}?zLnD^}MO7 zS?A+Ft5WYej{<`qVe_5$Y&uPX{Ts5qWnq3+mvlhIb<_Y~RO^3cN$N5L@gn7R^8|To z1%5qKJg^|TedzCWJM0ZHOM~_OP$ii(8 z#nb2rudtGX)82WK@Ecd{Zs%fx$&hHJXcNUZZm*x3NZ8^wtwdG+acL+(%11Mz+ji~l zrN&#+*aoODA%xBq%+$NP+9A7vzn+la(tmg6cxgEb{tAB!NH)c7x_d0+dB z;<1Hw`RB%Tf}irXc?EwxS-^aHiN_SLo1A=BGu@WiUr3=!SPynI1m!2KXunhkw9*4L z>Q)M#D^92`96XA=AV6eQ-O1@q^)jHAUfDStk1!YHeHvU+P^q!dd3e_n)g0BT;Fv5W zfhTWoufIlk4$?T_*-&9r$dD3mg}?fR7bZm?r1PqBiw&rXBvDcuFpA=kz=_xW6~Z9& zQ&fy?d%7Y+z5cv0HME_4^=mC&N?~KQ`j**hn*G})@=PaDG1=Ifp^Ca>ZR*Har%z8c zqH2MmB{IVzUTg>6FmcxB;PhGafTDClg!s0ubkZzx;*%q&`zQCAh_m5U_F|bD+JY#` zOTuU=xu|%2UQXR94+Uq2fK6_TM)0_zXlozO5(HjaDn#g!ExVndrlU53nyegVXhGP$ z(XlW5q=eH9HXE*tKNq}VUSD2{z5uED7!>g;&%S=TdTb8u0veU*MdY#RK@eTmB&sVB zj5e93R9goJ;sYgM(N3qVEmd9TWdbU2xF&V%F?}2LuTBI%hV%Iay3+}o*zvB)Y1fpO zvZdznmWE4X2(E(w#@zeagEn)>@ri|I)BGt_(To`3Lv!)Wvhc~LK4&MLbn`r>^|27O zKQsZIK2)GU+_o=9W;7H>jz^shHqsm`Hx5!?7#t2&3=nvPJ;k)LxVRCv1>yb)d`y5` z7Qu5r`&Ex(tP2d?`8?e~sy*un=IwW!pZgJ*s7XTb;TWjN?AXDA(y#^J zKiGsHB$*Ltrqr^t4?4sBCsC==Jz+5Z=wim+m>AMC>-RTrdmp)CXxqpor@ZpTwy7u+ zFWx-S3)pz3YuH#iZTo{VzyEQ-wx|6iL`A^$~xs5wtEAId~Q2ZlojJNY2LY7+ig6g)gITeAc zlcFaFP8b~(P)2P`ZTZgzn2(VGvzmrdI#T)4`A{)$FTFo=!?WACx!kG&F^fX*H|Awq_qYBTb7rA>94dcokK=FK;(D=MZIOa2>Mm zUg!xc&HOxe`fmF_n;;++UEUa^Q*{}mX+6vA2?sySCBxI^nzxKWYtj%Rx8!7JY zP)c!khqhP?6bclIyA&u=C?1?bDORjFDeg{j5AH3+iUy}h0-+Er`RP9T-@ErYz5hM? z+;i^p=UL46&O4I{&t%Q4nJ?d3!}*#~3S@j9z2ddoFrL`Bu~{KA-F_}^e^~UO$kVxz z{FE~Jgwnv7rNvw|&DBbk1{F?NNl#6ya#&%y*vOc3W_xe|y>qqPmx3*npx7h%VWP0Q zGgxdJZ-O8rn~pY5dE&9voU*0`*+iaHl#eO?-NbCBNEsyIaQPjNndygFeORwWvgC~J z?I~(Bt#GAltcUCbY=>R8OB~6lF#4E=s4fn|G?lXhi7q$uPgf#k__L3%9&Vg_J-K`` za9NVqtE&$*NV~>$OiwZ0iWh$J{AqU1Zo`LUgE~_AncVaJu@`nu&ZLc-&IQMs!#jcP z1;T8zTarFp#CNOTT?b~TX5@^$;O#Yw=@C7y#R3KvDpbwbj&sU%L>>}Z9e|`kcHHIf zlb{(<8;ou41=<~2T=TtpIJ0eMD2_ny_NOh`8>oC@n_iRIG}L#rg)n;`=+9#7?#G~s z4Ka(?PKP8zWbeg7hdgBDhU_Y=V8xKzNN~GkW(;q^f^dx|_;t0c4g7Aq9RQCo$1liF z*`>p|eJ&wBHPwQoYIgIi#*_8E2Yig?rGtlY`2332`@!hFJA1RMR2zvWj3cjlq5RZA z0*TJdK>}$s%~4&!IZJ1CltFtNt)r&BF@B*UjA^E1hvMgI>uV#Q9~Yj~!ke@^OQurR zPA;=JZvR*;Ajc^yJCqjtUcS2G3k?(_smZytNQHkUZ4j+e@v4bU zaOAVE6^Eehx%Nixqx)f7X8lqTjqe(n>93!@czTN#BeqYf>%n8yfK1VWZS9mbwff2r z=%z*Q#>4WHzP-v@&UNwBwfmrH$mnh$eH6DVD{{VJBI3S*D{~d{q>5*SStz4B&+M%g zc?=aRrtnw8MC_{4BpHi z7pd=Q#R|wnx+QbyEAjfjLBEa!@(HPB5GW#>Dt!!L!5jZRG>?CE7>(%Vwv5qtM4| zZ|vG4w#-U(+pkzZuN^ytx4JVIx2cwz>@DU(07ol#R8HtNLIA zya@e_L<&?gWfn3qQg-P*i7*g47FsXaNtr7C#O?S+5e2^MBwa$!a5qJ5jC+lYH(69P zcBe_C)5OH1oP#sgu%O{`YAv@Uxi?FhDvtkd7rTQf#n>mb6u}G!rfa6b*86zkvbZ#mq0PHB>k@@m_6oKdR-*N91tKHmkTICn%*xTBv+`U)Hbj!KB;V{hU zI<%jri`ol4ALYsl_YKM{62%lHx*I>aS_qQts_2=)?nGRqblQUIYliPg^Ch0NUQLN5 zf}PUD!sg*Dw&jN}sG{yM@8yW0+#$lR^rvJz`Hx|GBdAIXhXYj3*NLuk*x(jJtjfJ&;C{j9H|!i;bN- zv!=CXLnpl4tngVcCu?}|s}jUn=d<(|Y^)JFi|zFnU3(d=dHAGCZD{ASGP%*w5m&TN zHVN3W9D*c6fFD*$?iGVvp1Mw=&^pq-e9dbfZ+vKx75K-((eQgIDI6aCC1aJUuhR`M6f(NJ8Zug zyee1nY79-R!Gx9--#ixPPMN8nl-;q@8zSlFcbr%3R#pkiZ1KNru8eVEbbcXowbftg zzOXR8E#;xtf_a^=$;Q-6N{mJq-HC+_G+lnoGa^yQzt$i%TuLijM|f(R!~oyx?)Ps` zOI`pn?#S->%h>DS84NhY0R@~*Z5C2|vt`ma=U0=#NsA`^GoRI#p2iJAR} z=U)h;Z>i%hBd|>a4|s0Bq4}bm9Wsyzo5Y=#?G^r}9>uCQwjqJ~O{9b-5Nkw2V>n&e zA=@{TR0csVDRg{o?@4w+mjiSOnjizaUq0v6lMHwp8bR4brym#X36{*^?p>O7^Z{JG zpVUC5Y9JXt4zE={?(=01UT2OsRd4hlb}6Vy246vMf0FVgMVixHn+TQrBA8C|PH337 ziqCp?Gmi4E!XsWCeK0Iwfso@Gz6QQs)i`u<2(aj6+)Qs_qoK4J^r+-?Pg_# zzPnR)f?_jNs{XKew6@7`Mo+KONrRzN(@FV^xAHo?{!T>RpkuTKr$@7@PVRtwjH#lg z!T{&MVSX%G#bjmqdXw$W&98z9*tS_A_RnMOlZ~j4qmt;2EBTDYJ?1{ zd06M^?I<}#dz7-Dy0@iCv4?yqsI>OxCDd6TjgDQ3lvM(B8)|Oz*>*;(Yo+I;h`E;s zxTnv%bdUjBUQE^U7e8C*G97Mrn^OJ8{p6FfC~0da+;SmmL0P4-eQ@sU{qk^$(H4do z@bI9~_#7F(Wa4M3(f9Tx3D$8l6}L2>Z{*Eli(To2PAeo(gPE)!2)#wBSVUW6m*>D2 z%rlU|P649JZ1rpxvbG(Ov#B|CT4ph(iH==lN4tV0s-=qDc^TGZ-`pJV9KOf7p^oYz zZ%;l7uas|%31C`s;^Fh5VA;jSlaVoJ?cvKFXhT}E%(YOyCCLQs1ZspyRNo3h<{s7n!YC zXaEE~2^PJ?4vi@3L7oc8-?|Yq6pgB_+3K z?2`777W-}G$9Fgqm$4Oc7hj~-z!cvItF896>Xj8*c0u3p-Ox@-F|3o6$7dbUN<>we zS62DHm-gPq9Nr)hW4d~OJ(lEkZ|+bujl2r-R9UU0v$~UnGhl!Ofnkv$XIBQL*e{cZ zjDom#tV2Hsj|)g7?c}3Nun6~-OqPulgiCzn8ozC|QtI|WI>O=VZg0Kcpbqmwu+iLQ z|Md%I@05^6{0_K8MjRxHzwxmFgaPXYnVOee4+~$bo4S$zl#cH$Dgt@Mj)%2?A@j|zafuy8?zhjz@f2PwdJIUjWO5H47{mk^8yY)(`UHf_Cw)pF>aakYHi42@RC?pfVsoS#g$>SB9EYTSC(1!`N?-Lv~ z^nMm;pDBJE{g?+vyNV%v$i)G3+z)&`n-YU3r_ zX=gT7R6xm_0MonS$Xu^?H8UaW8x)3zIxnmeRlDNTL6qOUuX zbponx{Df~p!_j`=0mmJi5y^ZO>bhZ-CS4rULzF|iP+6pyf;~#8?WMD zUO)WhtPWhvQgA;c|bA z$epJQ4;0@kK70+|yKEa1aEF2~ud-KMATYU!GygGGm6BHk86?bxO20MXcUJukwSZl zq~3R(x)#0ZxkB+AzR;;K7n^4P`BlP1YjH7s!*_B^vDc-7#Uihc7+|LO26d68#RSJD zbh(9LZn_{295#Zk6OgTLpC1u;6FKMT8a%}R5CuuNj$el7x~H(c7l2*TA?K@ zVCLYi*~9ej>>9Qc5}K9q7;7D$L>D)gAM96X%HG#YSrQ)+@=F=XiOl{U#a{Y`oW}Yv z`AdV=t75%Ts88@Y=l7^fZmT{%=53A-adnVa?(z}gdx%PJFhJt<@VSvOjQKnF`Ig6r z%if4OSF^fts-rdXaXeq!Qg3E=c_NoEE>jU?R0uK=7I<%o4XBPQj<|589Dn_FuT6rW z-8EaQ;8_WKdy8+}Tv1u52U!sjY$qO(uk0Fm`E{cON3qXN(otj2PVMSi(r?xH|031pW7*C} zh(ND|Bc!@hWX*bVsoCDxhJKp2W3j#HyEKPajq(->a!&pBC{0*1`^7%w9eTgp%nUUI ziAr*usZM%+TDUl|G8%$q`a>UC7mc3h+odx>m!k;MhRGW)q=c!gtZdY6+n$TO4AhHr z;FoFel;T-(nArC=OQ@`sesxB0Joy* z^fP6*W5Ykq=LIo=ZbIzH2V3#Pf*wg=xbtjTpi)}kya#VX8z2Jcc3}F<2s|hr^`$cr zpezDP0>B4$6+vmPK8qWNjJRS{_EfF@h-2hR=G^V1e=1No9r3+ah(Ak!`^C< zNgng)Q|iBG;$jS+g3gNb-8Coe@Hu5d@9;Q1LtP1m^xVY2T9LnOL}h_@8*r{})^*~f z9&b$5z34K_(nX7*+Pi(4P&$JIqpG4igLO3t$J}o@ z+E#+tUUXXp$_5uzlVx|(e1VSytw{MX2v}r>xr9x$(O6#6-$Zv@fEq`LhY})1SFtRV z+I%c-R|g0eAMFLn<1G6KKX*gS*82zv;JMolg3x$+NO?dL7B3p!zMS@+7`=p|%#0dD z5UkYMFNQd2O7$-ZXcBdvLH+)7vbq3*$X+e~;}a@SXJsHI)CfG(_pWGS;L*)U1!4h& zy`h#+#5p{70#E8R-9xVJ z1JMwp_|L`w1caA+9_yOXfzDS^bgVrdx+DBc(aXdvlrqLYF$ZKaY1fO3GgicG8R84 z())SmPB-S*HCH+J;f~^S{@mpQf!Oeh)v?B&QW>T|=_~0=J^hUBb@2z8ofLPVH{bQ> z0`$7>5;YH6v5cFx4Ma1QyKD`Tms}uBJ-(V4gE^*(8DZL5jLZ1w2Px@?*uW*D$BYFl zX(2VWL`3FenI3acr;Hz;ns2p80Bd8=NAj4Xv4Jzd(w+WbKX9T;gs2B1&1?0hd#Nta zPHE0SXA0Rqmp!b&xR3;wh_-rC=<)o+t|WF~xGvOFpJY4L)+RdnMw2({>T-g_!TH;b z(RB!^%^@dByH%ddP?#%f04fA7=LMGaX6o;l<_4Z)>d8uqAW6z=^dlb6g$y8k(KIdC zWdhkbP9f;A-7h6@idLCrLI$9>vN885Jlbs~K?IYVE8ZOcns-dB^ixu11NfzBK}MhZoSiUllSAE`xHz7c(9E|1{|Z?j?4Hc18pSQ8aX%rrqcR z%w!$Y=4&;b+Rlx`v6D}5V3-!5I{|Y#^52@ zRx_AYSMa3MVMk{nr4S5OB;TK={!2UHt>_1YKKvV_ojBg-`({|`K5msTzgGcq;}9*l zEN&-NeHIR!8x~Dn?N@`jtT#Hh*4jLn_Uq8n$>{) z(Q5STHW2!QSoC38d)4>13t!?j$V#3L-PloSaFxH16HtADed=_m{+|L5;?P!*#L$?! zK*nk;(~}J+cqp;GJnkiUDToQfQy%xoGgiTsIsnaG4j6%4vE0`iIs)sZm-}J?Vf=;;oES%Cvbn{S|?M-_Bq@H9$Ke{dKvx8 zoXxYUVkiHL{>n>V3askZnS_F}&BPJC@a_Ii2|5C}+PbDc&@9WJ652nn*hQj=xY&mU zS@o|&#pUGfWiZ@3oc=OFUvB+H!-=Z@x^o2$|Fjx&U-239{*%VL_#b;g&!9xrYnPqY zN69Ymj}wrtSvgqDc561h_7=97IUOVDMxiFWL{s)1_~xgLYs;FgpScfJZY7wEv9_kG zdH!}m{MQHh4a6n9iVk@HAO2=P0B)nnW0SydoA*fItVnQU0ATw}=%>_XCuxw^NIC2y zPdP;QJQb=u{t6V`i;Sr$1KzdNi^ZIKh(#}kxP`c5y+owghjp_c07iqN*@4{|uAgB> z{RR@7k7Ac(c)ITJbPHY4%Rws`dsLu;05o8a9aK%2|Bv?CmEcF`KQT9J${XuSu_NTFK8_Yfk>+i~smVc@C z2k?Kl#uqV%aPD%+in*mu%?_qx7B?lNMM#;)9Vr3NHJ%{c1}nF{8Mjli68IvX%Om%s z`yoBBz%zbnK@(5Q7J9uKS8#Z|qtLvmvpCV6AgCaV5u(Ne)F{lM%c0(e=S z3aU$3U?d+_XQuq4ON14o>KAhlTME>d-iFf&t6%K#YSzjLZ$2VS`E#!?_d8;a_ee?* zQLR!zgIy5Bav^bGGB~+h=wD6jfWylwnyNp33s)7I2touS0#y%yOyTJ`Cg?mp|I3oe z`<7#UDJXpIIc=l)LZTH==4L^>UbSR?#?D;XfSx@tq50tIsxb)C^~-jSDeF4!PrJ8H ziOUsKc>?KE;4KJnJvD6rd^akwL)?f=70 zjmW=@#T#F9)xPV#*J9{l6V}p8qLy{WR|B#;EAjV{vG^BW){~vLLlGD>Ke$-GNrtlz z(uaSkJp3)R_Todi97h?^ufv#G_gRiK=uou^TvRrIA;$Kea7=(i+V zkADT436r1^jm?}ifVTcxz`7Gj=GrT9;DZ@}>C$5)fah3Em{E-(jT%T>E`ysIv_j~P z5Sf!=QnAqdu5(r=Pv8KILoULn>hglb$4xQl1rZ;&?UB!JR;vUv7Gw?P?5o7B3j2gL z(!Ga21I#kLOfb~D?gG~Lb7wz5^-QZL}0zbvow$@-spLve{r z!QI?4-mkH$psN&&Z9SpCMe-}ydQ<#qAFI~%pA0k9u?gJ^-L&tJ%kx=H>)R#W{YpzO ziq^6@lV7E1xo7p8`-esKDr?+gk{!#9tu}v^0_DEc7a@%5xA-K%LmQ#AUj3Y&GUo4) z-dRg~`=)khQmwP|?c;|Yo>g^ze~XeQ5(E;=q08eV#ja)cb;pmG0k@by>`+bsrddxo zvXKEgRh@XX5adFA))kfAMj(&70-GWRZvV2U7uXj5^Pb}B^Y(upGJ2z@ACG=4S5~f& z!r#ItuDAqBZ|w&Y%n^En-nLrwEmf~M>%SB)Z=%y%B;Y;_r||mwG|MZ-92j<%%8tx~ zZ4#-tNuRLse*opME&TgS;>=RYUyI(S$9sorWqXCw9#h|1>^+w14?F%_qUvVIDp`?` zsrN{u>~4{6!W7q#{gVHGS9JIO_)p<_8hV-iwydNEGzeb5u)3Ja zsmm{Yr?AUB zoHLbwQh|`0mNMV)pb||p2Md+WMsBomQhe0E8wtc9BE)FJUI~wX3&nySzYe4ju*rnY z{&`){kEpu2@zg}uFFxNgH1oK@xz;1GBICu9^&XqiZ&CT9!kjSmVVOjsiQgMG7W+n( z{%m5fC+pa5S8-PUJ^SNw-HhLi?}Q=b-;Lzlvm9r5$kNUl#8&{YlMNcNKg~n@v zq6euu%%dg5TTijw{}t#d0Zot$0Ze4{pAFCm@I-hftM7sS>ELtqL(m<9C=s52HXtQX z6XE$(tqA(3gQ;qDkPyL$2+uzoEG$Pi9gMyCTNnGH{r@SUDYvW6?)Jsp`#nHScAqch zo17O_qDc`Qi9`OAg07f}gwP}|x>fY}FAUpf*d39&8Igej-UjW}icTBFR8@oJ0P8V%6?bv)rcdVp=ZFKa)YVHx~7MtIro^`A1s! z*XiG={lA`$a$CwZZseHd9rpO=K=gK2qLcSBlSaq)T!#J&83UieVFf+L+T(Z05#=)0 zo6Ouqze@EEv*I(+yu!2Q#u@rfK&`-BqYCtz#%60N7>T!lsB&w%kmsn)&y%DUE{0o{j~ zt#td&)vZ4Rh7Q?UGxnWpTYm=h9a6R$?K{`B{tOs96l-1Bcdl#w32+&*M77^xeumM? zKj+_li05fm{WmF!)#>eFbIF`+V9x*wf83gkyZ(MFyGO$tk#1)O+jq?NAFHeKITfAg z*qWb}x%>^%%f~Lo%k#gIlxm#lvR{;v`A@$gPt4^ek(q?Ellh)+c_;4GU!Q zKT=r3Qg-9PX`55ywo|LD%ff-rg7d_J=l^)olpRp+@?^efLeBqmw@wr2e{thm_au+JMQ;@=oh~?_3ew)mlBU+oxLYTGdUU+3R#8`QXdID92ovku(Oi> zAF1E0`(G^RIl-P{QI8Xl{l@~w3-cLnJGta{M7pKIo`rSY- zJmSA~Q5d&}$83hfG(bK@VDa~K0anfb&liy|P`VL<&YDG6A%`E0uIM}et;^f(LT~4P z&xDew!MnOIl$Y_vk$DuBk<8p$_rEyhL{q}c^3f*0A^OYv_^(3RM#>H&4}W(u_5d^P zS7q1rg}C?cBq6&vh3u)>=Dz=6VCnmIm$R@aHTxe680MQ;=)A1gV_z)B$4J+{R1rHI z?EiNoD>IV*mF4jK@h}oS3mkdp$FuUhJ&&J%HAg{tLWfL9?WNX<5sWmm>`3iT^?s+N zOr)S_9j&cQQ$WtCpi0E($i-NdFI#Bqy#70>SVsU0Hc-nhu%wW8qXmfd2vX4Brfthvl2 z2YLoGxugtOojCWpdiI=vYc@FS0j_7 zQaZMksV`HpGr+!cI4gCd@=6VT0nl z0Oh2Py_Ht7j9^$Bh=1)nd;)HA#oR&uB$y(on)Ov!r2uh%&r@$w**mG}ic`E}2NBD@M8U=-{JQQsX&2N>MKA0pmNQEYz zGc85*{K?^tuq>r{{^iiSZkH$5K9tR|R*t3XUC=4oVuoxp)woybGd# zYC-ATMYKE8k)@gMD52dPaR2S9+X54i3N27D1 z%QV*_S<7mTQ=pSk>&JbIBGOwjI>S$enS{jC3~cQU^yW(q?DS@74TUpm>rT~L9UAv5 zWyf*@Q6X;GFq9uYM5q)fAt+cVmMFJwJcRC`@S;fGH~_uF+`P%5dS_1SwY$(Okq4$^ z${$-4rQl&T)LJDfO!CS@ZP3pl1umau((zS!Td14mZ`me zgD?4}Zd2fPgi0Z;ku0@uO}z8lrL4noF~siMWqtTj{E$srB ziHwfMyl`@)zmD&bBBg3Mld8)M*~?-bU8%Ox5p@G_gsP0Z1i2=+F6KdTHEV3L$JeCX zj8|kr0fm?zd`@JNx184wakNRa?BWs*Ol6u^Uu+}LU*={$YiNt8tf#{b{ghSWR61xY z{k6K?^8v1lO(Cwm=IdQE17El4zRlT4BlemnWkWUv7eczZ{CHV$N`;w>N!ST|=np)! zZtH(RMMEkYva2k}K9W#2k)Dl=L22e74=35{9*}Cr*L7iA>$0*plnkaR_*@#0Wp$F> z%OyZ#SM8E~RC;3gS;=8Ipi-x5B)GU-OwUhbnd~c`xQItKPSI0l)9J5PAd>pex;r0F z_AEtu5i@*AUxaCd9=4z6KJyc_98quON?9i+mnC||>5gXVC+--NMPuHq0pw13LxruG zuD1Q^?M1R^at)*OLBp;7Q>g+C%R{@byQY=2ihHHnV#&RA!E!o)_uO&$J9I`(li0i! z)T&0QZal?RT+h%Su#phS8cA3-%wqWFh?rD<*{v^Y7A(qrSM;VzYKms9OL^`&X+BXB z!z1x27l&g?S`O7OUqWvVhoyO?P0N45HZg`>*X{gerdIPR1LJlk*GYq@h@m1rzsF%} zZQ?g$juaNPPtUlDY;%XP_f9~(VTRkNgxeL}(ts}|RTXz!OYqC5Mi_I~(Yc`j~Sg*>ZlobI?q!yGaa-kud$>nB!;TXzmAFL-n>#n9x&-71T{ zpHNEkj7U7O46;f>U2Kj|DS~f~&3G$-sh~P?!sH6`+nSxUs)@{APUXD{LHZmULQ>U1 z=mxQaM4vd;HvE(t>F~r`VS-#!8Gf>3)+H?C1+Q`Kr$sycq%#x`{1AbriBX=X5^0B7 z5O$r&^xButaGE~t3j0)DZvu=WiXqdN{_rdpVnAf%?KV0?I6<)IDM;#{KA5zNvi>C5 zvvMnn!mQFOZXJVvEdkh$Q@h0Nfsm(W61ia`$1mOXP>WAtR%!r2{}itSpw??xXi%_n2I?ZIyrq1%h~M z&iy+i3nPPf$EYan>7_EhtF1wioBa;yb$^&z3^r$ zDfeCfk^Op^S>|I#yWM%nyZIDhp)lf_M_t@9Q}hvB`09DSWvSdsX4_7J(J&)TD8cu$ zNf%15cOkR%6%mHn6@`Mr{l#kz1H#GaO?!h()AIt^$8Lc%(xaodJyU%B$31kYOchV_ z%QxX-F$f%P5VleOuXF zCe91`&Q;nXvK-06d;UX>NeiiV+@ocdOrbb-#WNA{FF}JjwstxUN}~n$r)t{Qc!lK4 zB>RN{Dy>^0$Io7VH`oA)Xs7OMDfU+^?}w4Fy!;LjPi&)LDaOg|O-F@{cP-;B#KVNQ6JJfJ|pP8}7 zCz?pp7Hug%w4i7GG1fTUbKG5{o3Cv;+I1{hWYnnzocmr;5AzUCQz?=qDkI5iH2Dg@ zITrU!0V`1DDx+6c_S*TO_bhqwQNu-wconEFs`YGh@$lfv4te&X%|kQ;8hGJi-|-;A zGt8ln?zTk~JuuwM4lC~XY{KGh|U=p;)psb!8?R=_HF zjS_sDBls5agB@Jd;DLpK+UiTnAenxFXI|rrYPWK{orE&a!pKLANEDw0J zIGKPiWUu7-70T&kuR?h+REW;7t7zA9b1pNWfBWWWX33L$DznK9xf7*$v~nvnGRfWt zheDAC>UJ0z2K@2ri5&gH!0k43wy4xQgnY2*?tE-!n4ZeSHw)?eN}*%pIH3k;xLyZc*r@{5T05ubamh z#E!9M^RWYu#F4Ja^36R$9d=l)^PsqWYbtrcSSxi~?t$}Q5Peeas5wOx3<2O&^X|di zs>ysjYKv-Cr}@@BEKmD^swyWZuT6e=QsQyKU5fnNrwPOH^Gmh0nePuDYiMW^3WLDU zp0a!xAeg~->8fyODWOSUNMnTFdgb&^2S->~eXNkhNQ+m;eMhWi4*Tn1O*~x)_W*+c z#rKLDZgF`64^8_t$~1eL;9~qSJ1&<-ZEc+?Ql6y>8iy{(vz}R*aG|GVd0h8-XAZ_P z_;v`wOR4=%o*d$e;uRc~&OYG{3_> diff --git a/webclient/css/webclient.css b/webclient/css/webclient.css index ca47b15..411a39e 100644 --- a/webclient/css/webclient.css +++ b/webclient/css/webclient.css @@ -578,4 +578,17 @@ input[type=text] { -webkit-user-select: text; -o-user-select: text; user-select: text; +} + +/* type/source of media in listviews */ +/*a[id^="spotify"] { + margin-left:20px; + background-image: url('../images/icons/play_alt_12x12.png'); + border: 2px solid black; + display:block; +} +*/ + +.mediaicon { + float: right; } \ No newline at end of file diff --git a/webclient/dialog-success.html b/webclient/dialog-success.html index 681cef9..b9c59c3 100644 --- a/webclient/dialog-success.html +++ b/webclient/dialog-success.html @@ -3,7 +3,7 @@ - + diff --git a/webclient/index.html b/webclient/index.html index a0ab82c..f42e62e 100644 --- a/webclient/index.html +++ b/webclient/index.html @@ -1,8 +1,9 @@ + - + ' ); - - iframe_doc.close(); - - // Update the Iframe's hash, for great justice. - iframe.location.hash = hash; - } - }; - - })(); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^ - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - return self; - })(); - -})(jQuery,this); - -(function( $, undefined ) { - - /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ - window.matchMedia = window.matchMedia || (function( doc, undefined ) { - - - - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeBody = doc.createElement( "body" ), - div = doc.createElement( "div" ); - - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.style.background = "none"; - fakeBody.appendChild(div); - - return function(q){ - - div.innerHTML = "­"; - - docElem.insertBefore( fakeBody, refNode ); - bool = div.offsetWidth === 42; - docElem.removeChild( fakeBody ); - - return { - matches: bool, - media: q - }; - - }; - - }( document )); - - // $.mobile.media uses matchMedia to return a boolean. - $.mobile.media = function( q ) { - return window.matchMedia( q ).matches; - }; - -})(jQuery); - - (function( $, undefined ) { - var support = { - touch: "ontouchend" in document - }; - - $.mobile.support = $.mobile.support || {}; - $.extend( $.support, support ); - $.extend( $.mobile.support, support ); - }( jQuery )); - - (function( $, undefined ) { - $.extend( $.support, { - orientation: "orientation" in window && "onorientationchange" in window - }); - }( jQuery )); - -(function( $, undefined ) { - -// thx Modernizr -function propExists( prop ) { - var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), - props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); - - for ( var v in props ) { - if ( fbCSS[ props[ v ] ] !== undefined ) { - return true; - } - } -} - -var fakeBody = $( "" ).prependTo( "html" ), - fbCSS = fakeBody[ 0 ].style, - vendors = [ "Webkit", "Moz", "O" ], - webos = "palmGetResource" in window, //only used to rule out scrollTop - opera = window.opera, - operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", - bb = window.blackberry && !propExists( "-webkit-transform" ); //only used to rule out box shadow, as it's filled opaque on BB 5 and lower - - -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 ) { - if( vend === "" ) { - return ""; - } else { - 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_vend === "" ? prop : uc( prop ) ); - - div.setAttribute( "style", vend_prop ); - - if ( !!div.style[ propStyle ] ) { - ret = true; - } - }, - check_vends = check_vend ? check_vend : vendors, - ret; - - for( var i = 0; i < check_vends.length; i++ ) { - check_style( check_vends[i] ); - } - return !!ret; -} - -function transform3dTest() { - var mqProp = "transform-3d", - // Because the `translate3d` test below throws false positives in Android: - ret = $.mobile.media( "(-" + vendors.join( "-" + mqProp + "),(-" ) + "-" + mqProp + "),(" + mqProp + ")" ); - - if( ret ) { - return !!ret; - } - - var el = document.createElement( "div" ), - transforms = { - // We’re omitting Opera for the time being; MS uses unprefixed. - 'MozTransform':'-moz-transform', - 'transform':'transform' - }; - - fakeBody.append( el ); - - for ( var t in transforms ) { - if( el.style[ t ] !== undefined ){ - el.style[ t ] = 'translate3d( 100px, 1px, 1px )'; - ret = window.getComputedStyle( el ).getPropertyValue( transforms[ t ] ); - } - } - return ( !!ret && ret !== "none" ); -} - -// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) -function baseTagTest() { - var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", - base = $( "head base" ), - fauxEle = null, - href = "", - link, rebase; - - if ( !base.length ) { - base = fauxEle = $( "", { "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; -} - -// Thanks Modernizr -function cssPointerEventsTest() { - var element = document.createElement( 'x' ), - documentElement = document.documentElement, - getComputedStyle = window.getComputedStyle, - supports; - - if ( !( 'pointerEvents' in element.style ) ) { - return false; - } - - element.style.pointerEvents = 'auto'; - element.style.pointerEvents = 'x'; - documentElement.appendChild( element ); - supports = getComputedStyle && - getComputedStyle( element, '' ).pointerEvents === 'auto'; - documentElement.removeChild( element ); - return !!supports; -} - -function boundingRect() { - var div = document.createElement( "div" ); - return typeof div.getBoundingClientRect !== "undefined"; -} - -// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 -// allows for inclusion of IE 6+, including Windows Mobile 7 -$.extend( $.mobile, { browser: {} } ); -$.mobile.browser.oldIE = (function() { - var v = 3, - div = document.createElement( "div" ), - a = div.all || []; - - do { - div.innerHTML = ""; - } while( a[0] ); - - return v > 4 ? v : !v; -})(); - -function fixedPosition() { - var w = window, - ua = navigator.userAgent, - platform = navigator.platform, - // Rendering engine is Webkit, and capture major version - wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ), - wkversion = !!wkmatch && wkmatch[ 1 ], - ffmatch = ua.match( /Fennec\/([0-9]+)/ ), - ffversion = !!ffmatch && ffmatch[ 1 ], - operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ), - omversion = !!operammobilematch && operammobilematch[ 1 ]; - - if( - // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5) - ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) || - // Opera Mini - ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) || - ( operammobilematch && omversion < 7458 ) || - //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2) - ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) || - // Firefox Mobile before 6.0 - - ( ffversion && ffversion < 6 ) || - // WebOS less than 3 - ( "palmGetResource" in window && wkversion && wkversion < 534 ) || - // MeeGo - ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) ) { - return false; - } - - return true; -} - -$.extend( $.support, { - cssTransitions: "WebKitTransitionEvent" in window || - validStyle( 'transition', 'height 100ms linear', [ "Webkit", "Moz", "" ] ) && - !$.mobile.browser.oldIE && !opera, - - // Note, Chrome for iOS has an extremely quirky implementation of popstate. - // We've chosen to take the shortest path to a bug fix here for issue #5426 - // See the following link for information about the regex chosen - // https://developers.google.com/chrome/mobile/docs/user-agent#chrome_for_ios_user-agent - pushState: "pushState" in history && - "replaceState" in history && - // When running inside a FF iframe, calling replaceState causes an error - !( window.navigator.userAgent.indexOf( "Firefox" ) >= 0 && window.top !== window ) && - ( window.navigator.userAgent.search(/CriOS/) === -1 ), - - mediaquery: $.mobile.media( "only all" ), - cssPseudoElement: !!propExists( "content" ), - touchOverflow: !!propExists( "overflowScrolling" ), - cssTransform3d: transform3dTest(), - boxShadow: !!propExists( "boxShadow" ) && !bb, - fixedPosition: fixedPosition(), - scrollTop: ("pageXOffset" in window || - "scrollTop" in document.documentElement || - "scrollTop" in fakeBody[ 0 ]) && !webos && !operamini, - - dynamicBaseTag: baseTagTest(), - cssPointerEvents: cssPointerEventsTest(), - boundingRect: boundingRect() -}); - -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.oldIE && $.mobile.browser.oldIE >= 7 ) && ( $.support.boundingRect || $.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/) !== null ); -}; - -$.mobile.ajaxBlacklist = - // BlackBerry browsers, pre-webkit - window.blackberry && !window.WebKitPoint || - // Opera Mini - operamini || - // Symbian webkits pre 7.3 - nokiaLTE7_3; - -// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices -// to render the stylesheets when they're referenced before this script, as we'd recommend doing. -// This simply reappends the CSS in place, which for some reason makes it apply -if ( nokiaLTE7_3 ) { - $(function() { - $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); - }); -} - -// For ruling out shadows via css -if ( !$.support.boxShadow ) { - $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); -} - -})( jQuery ); - - -(function( $, undefined ) { - var $win = $.mobile.window, self, history; - - $.event.special.navigate = self = { - bound: false, - - pushStateEnabled: true, - - originalEventName: undefined, - - // If pushstate support is present and push state support is defined to - // be true on the mobile namespace. - isPushStateEnabled: function() { - return $.support.pushState && - $.mobile.pushStateEnabled === true && - this.isHashChangeEnabled(); - }, - - // !! assumes mobile namespace is present - isHashChangeEnabled: function() { - return $.mobile.hashListeningEnabled === true; - }, - - // TODO a lot of duplication between popstate and hashchange - popstate: function( event ) { - var newEvent = new $.Event( "navigate" ), - beforeNavigate = new $.Event( "beforenavigate" ), - state = event.originalEvent.state || {}, - href = location.href; - - $win.trigger( beforeNavigate ); - - if( beforeNavigate.isDefaultPrevented() ){ - return; - } - - if( event.historyState ){ - $.extend(state, event.historyState); - } - - // Make sure the original event is tracked for the end - // user to inspect incase they want to do something special - newEvent.originalEvent = event; - - // NOTE we let the current stack unwind because any assignment to - // location.hash will stop the world and run this event handler. By - // doing this we create a similar behavior to hashchange on hash - // assignment - setTimeout(function() { - $win.trigger( newEvent, { - state: state - }); - }, 0); - }, - - hashchange: function( event, data ) { - var newEvent = new $.Event( "navigate" ), - beforeNavigate = new $.Event( "beforenavigate" ); - - $win.trigger( beforeNavigate ); - - if( beforeNavigate.isDefaultPrevented() ){ - return; - } - - // Make sure the original event is tracked for the end - // user to inspect incase they want to do something special - newEvent.originalEvent = event; - - // Trigger the hashchange with state provided by the user - // that altered the hash - $win.trigger( newEvent, { - // Users that want to fully normalize the two events - // will need to do history management down the stack and - // add the state to the event before this binding is fired - // TODO consider allowing for the explicit addition of callbacks - // to be fired before this value is set to avoid event timing issues - state: event.hashchangeState || {} - }); - }, - - // TODO We really only want to set this up once - // but I'm not clear if there's a beter way to achieve - // this with the jQuery special event structure - setup: function( data, namespaces ) { - if( self.bound ) { - return; - } - - self.bound = true; - - if( self.isPushStateEnabled() ) { - self.originalEventName = "popstate"; - $win.bind( "popstate.navigate", self.popstate ); - } else if ( self.isHashChangeEnabled() ){ - self.originalEventName = "hashchange"; - $win.bind( "hashchange.navigate", self.hashchange ); - } - } - }; -})( jQuery ); - - - -(function( $, undefined ) { - var path, documentBase, $base, dialogHashKey = "&ui-state=dialog"; - - $.mobile.path = path = { - uiStateKey: "&ui-state", - - // This scary looking regular expression parses an absolute URL or its relative - // variants (protocol, site, document, query, and hash), into the various - // components (protocol, host, path, query, fragment, etc that make up the - // URL as well as some other commonly used sub-parts. When used with RegExp.exec() - // or String.match, it parses the URL into a results array that looks like this: - // - // [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content - // [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread - // [2]: http://jblas:password@mycompany.com:8080/mail/inbox - // [3]: http://jblas:password@mycompany.com:8080 - // [4]: http: - // [5]: // - // [6]: jblas:password@mycompany.com:8080 - // [7]: jblas:password - // [8]: jblas - // [9]: password - // [10]: mycompany.com:8080 - // [11]: mycompany.com - // [12]: 8080 - // [13]: /mail/inbox - // [14]: /mail/ - // [15]: inbox - // [16]: ?msg=1234&type=unread - // [17]: #msg-content - // - urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/, - - // Abstraction to address xss (Issue #4787) by removing the authority in - // browsers that auto decode it. All references to location.href should be - // replaced with a call to this method so that it can be dealt with properly here - getLocation: function( url ) { - var uri = url ? this.parseUrl( url ) : location, - hash = this.parseUrl( url || location.href ).hash; - - // mimic the browser with an empty string when the hash is empty - hash = hash === "#" ? "" : hash; - - // Make sure to parse the url or the location object for the hash because using location.hash - // is autodecoded in firefox, the rest of the url should be from the object (location unless - // we're testing) to avoid the inclusion of the authority - return uri.protocol + "//" + uri.host + uri.pathname + uri.search + hash; - }, - - parseLocation: function() { - return this.parseUrl( this.getLocation() ); - }, - - //Parse a URL into a structure that allows easy access to - //all of the URL components by name. - parseUrl: function( url ) { - // If we're passed an object, we'll assume that it is - // a parsed url object and just return it back to the caller. - if ( $.type( url ) === "object" ) { - return url; - } - - var matches = path.urlParseRE.exec( url || "" ) || []; - - // Create an object that allows the caller to access the sub-matches - // by name. Note that IE returns an empty string instead of undefined, - // like all other browsers do, so we normalize everything so its consistent - // no matter what browser we're running on. - return { - href: matches[ 0 ] || "", - hrefNoHash: matches[ 1 ] || "", - hrefNoSearch: matches[ 2 ] || "", - domain: matches[ 3 ] || "", - protocol: matches[ 4 ] || "", - doubleSlash: matches[ 5 ] || "", - authority: matches[ 6 ] || "", - username: matches[ 8 ] || "", - password: matches[ 9 ] || "", - host: matches[ 10 ] || "", - hostname: matches[ 11 ] || "", - port: matches[ 12 ] || "", - pathname: matches[ 13 ] || "", - directory: matches[ 14 ] || "", - filename: matches[ 15 ] || "", - search: matches[ 16 ] || "", - hash: matches[ 17 ] || "" - }; - }, - - //Turn relPath into an asbolute path. absPath is - //an optional absolute path which describes what - //relPath is relative to. - makePathAbsolute: function( relPath, absPath ) { - 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; - } - - if ( absUrl === undefined ) { - absUrl = this.documentBase; - } - - var relObj = path.parseUrl( relUrl ), - absObj = path.parseUrl( absUrl ), - protocol = relObj.protocol || absObj.protocol, - doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ), - authority = relObj.authority || absObj.authority, - hasPath = relObj.pathname !== "", - pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ), - search = relObj.search || ( !hasPath && absObj.search ) || "", - hash = relObj.hash; - - return protocol + doubleSlash + authority + pathname + search + hash; - }, - - //Add search (aka query) params to the specified url. - addSearchParams: function( url, params ) { - var u = path.parseUrl( url ), - p = ( typeof params === "object" ) ? $.param( params ) : params, - s = u.search || "?"; - return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" ); - }, - - convertUrlToDataUrl: function( absUrl ) { - var u = path.parseUrl( absUrl ); - if ( path.isEmbeddedPage( u ) ) { - // For embedded pages, remove the dialog hash key as in getFilePath(), - // and remove otherwise the Data Url won't match the id of the embedded Page. - return u.hash - .split( dialogHashKey )[0] - .replace( /^#/, "" ) - .replace( /\?.*$/, "" ); - } else if ( path.isSameDomain( u, this.documentBase ) ) { - return u.hrefNoHash.replace( this.documentBase.domain, "" ).split( dialogHashKey )[0]; - } - - return window.decodeURIComponent(absUrl); - }, - - //get path from current hash, or from a file path - get: function( newPath ) { - if ( newPath === undefined ) { - newPath = path.parseLocation().hash; - } - return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' ); - }, - - //set location hash to path - set: function( path ) { - location.hash = path; - }, - - //test if a given url (string) is a path - //NOTE might be exceptionally naive - isPath: function( url ) { - return ( /\// ).test( url ); - }, - - //return a url path with the window's location protocol/hostname/pathname removed - clean: function( url ) { - return url.replace( this.documentBase.domain, "" ); - }, - - //just return the url without an initial # - stripHash: function( url ) { - return url.replace( /^#/, "" ); - }, - - stripQueryParams: function( url ) { - return url.replace( /\?.*$/, "" ); - }, - - //remove the preceding hash, any query params, and dialog notations - cleanHash: function( hash ) { - return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) ); - }, - - isHashValid: function( hash ) { - return ( /^#[^#]+$/ ).test( hash ); - }, - - //check whether a url is referencing the same domain, or an external domain or different protocol - //could be mailto, etc - isExternal: function( url ) { - var u = path.parseUrl( url ); - return u.protocol && u.domain !== this.documentUrl.domain ? true : false; - }, - - hasProtocol: function( url ) { - return ( /^(:?\w+:)/ ).test( url ); - }, - - isEmbeddedPage: function( url ) { - var u = path.parseUrl( url ); - - //if the path is absolute, then we need to compare the url against - //both the this.documentUrl and the documentBase. The main reason for this - //is that links embedded within external documents will refer to the - //application document, whereas links embedded within the application - //document will be resolved against the document base. - if ( u.protocol !== "" ) { - return ( !this.isPath(u.hash) && u.hash && ( u.hrefNoHash === this.documentUrl.hrefNoHash || ( this.documentBaseDiffers && u.hrefNoHash === this.documentBase.hrefNoHash ) ) ); - } - return ( /^#/ ).test( u.href ); - }, - - squash: function( url, resolutionUrl ) { - var state, href, cleanedUrl, search, stateIndex, - isPath = this.isPath( url ), - uri = this.parseUrl( url ), - preservedHash = uri.hash, - uiState = ""; - - // produce a url against which we can resole the provided path - resolutionUrl = resolutionUrl || (path.isPath(url) ? path.getLocation() : path.getDocumentUrl()); - - // If the url is anything but a simple string, remove any preceding hash - // eg #foo/bar -> foo/bar - // #foo -> #foo - cleanedUrl = isPath ? path.stripHash( url ) : url; - - // If the url is a full url with a hash check if the parsed hash is a path - // if it is, strip the #, and use it otherwise continue without change - cleanedUrl = path.isPath( uri.hash ) ? path.stripHash( uri.hash ) : cleanedUrl; - - // Split the UI State keys off the href - stateIndex = cleanedUrl.indexOf( this.uiStateKey ); - - // store the ui state keys for use - if( stateIndex > -1 ){ - uiState = cleanedUrl.slice( stateIndex ); - cleanedUrl = cleanedUrl.slice( 0, stateIndex ); - } - - // make the cleanedUrl absolute relative to the resolution url - href = path.makeUrlAbsolute( cleanedUrl, resolutionUrl ); - - // grab the search from the resolved url since parsing from - // the passed url may not yield the correct result - search = this.parseUrl( href ).search; - - // TODO all this crap is terrible, clean it up - if ( isPath ) { - // reject the hash if it's a path or it's just a dialog key - if( path.isPath( preservedHash ) || preservedHash.replace("#", "").indexOf( this.uiStateKey ) === 0) { - preservedHash = ""; - } - - // Append the UI State keys where it exists and it's been removed - // from the url - if( uiState && preservedHash.indexOf( this.uiStateKey ) === -1){ - preservedHash += uiState; - } - - // make sure that pound is on the front of the hash - if( preservedHash.indexOf( "#" ) === -1 && preservedHash !== "" ){ - preservedHash = "#" + preservedHash; - } - - // reconstruct each of the pieces with the new search string and hash - href = path.parseUrl( href ); - href = href.protocol + "//" + href.host + href.pathname + search + preservedHash; - } else { - href += href.indexOf( "#" ) > -1 ? uiState : "#" + uiState; - } - - return href; - }, - - isPreservableHash: function( hash ) { - return hash.replace( "#", "" ).indexOf( this.uiStateKey ) === 0; - } - }; - - path.documentUrl = path.parseLocation(); - - $base = $( "head" ).find( "base" ); - - path.documentBase = $base.length ? - path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), path.documentUrl.href ) ) : - path.documentUrl; - - path.documentBaseDiffers = (path.documentUrl.hrefNoHash !== path.documentBase.hrefNoHash); - - //return the original document url - path.getDocumentUrl = function( asParsedObject ) { - return asParsedObject ? $.extend( {}, path.documentUrl ) : path.documentUrl.href; - }; - - //return the original document base url - path.getDocumentBase = function( asParsedObject ) { - return asParsedObject ? $.extend( {}, path.documentBase ) : path.documentBase.href; - }; -})( jQuery ); - - - -(function( $, undefined ) { - var path = $.mobile.path; - - $.mobile.History = function( stack, index ) { - this.stack = stack || []; - this.activeIndex = index || 0; - }; - - $.extend($.mobile.History.prototype, { - getActive: function() { - return this.stack[ this.activeIndex ]; - }, - - getLast: function() { - return this.stack[ this.previousIndex ]; - }, - - getNext: function() { - return this.stack[ this.activeIndex + 1 ]; - }, - - getPrev: function() { - return this.stack[ this.activeIndex - 1 ]; - }, - - // addNew is used whenever a new page is added - add: function( url, data ){ - data = data || {}; - - //if there's forward history, wipe it - if ( this.getNext() ) { - this.clearForward(); - } - - // if the hash is included in the data make sure the shape - // is consistent for comparison - if( data.hash && data.hash.indexOf( "#" ) === -1) { - data.hash = "#" + data.hash; - } - - data.url = url; - this.stack.push( data ); - this.activeIndex = this.stack.length - 1; - }, - - //wipe urls ahead of active index - clearForward: function() { - this.stack = this.stack.slice( 0, this.activeIndex + 1 ); - }, - - find: function( url, stack, earlyReturn ) { - stack = stack || this.stack; - - var entry, i, length = stack.length, index; - - for ( i = 0; i < length; i++ ) { - entry = stack[i]; - - if ( decodeURIComponent(url) === decodeURIComponent(entry.url) || - decodeURIComponent(url) === decodeURIComponent(entry.hash) ) { - index = i; - - if( earlyReturn ) { - return index; - } - } - } - - return index; - }, - - closest: function( url ) { - var closest, a = this.activeIndex; - - // First, take the slice of the history stack before the current index and search - // for a url match. If one is found, we'll avoid avoid looking through forward history - // NOTE the preference for backward history movement is driven by the fact that - // most mobile browsers only have a dedicated back button, and users rarely use - // the forward button in desktop browser anyhow - closest = this.find( url, this.stack.slice(0, a) ); - - // If nothing was found in backward history check forward. The `true` - // value passed as the third parameter causes the find method to break - // on the first match in the forward history slice. The starting index - // of the slice must then be added to the result to get the element index - // in the original history stack :( :( - // - // TODO this is hyper confusing and should be cleaned up (ugh so bad) - if( closest === undefined ) { - closest = this.find( url, this.stack.slice(a), true ); - closest = closest === undefined ? closest : closest + a; - } - - return closest; - }, - - direct: function( opts ) { - var newActiveIndex = this.closest( opts.url ), a = this.activeIndex; - - // save new page index, null check to prevent falsey 0 result - // record the previous index for reference - if( newActiveIndex !== undefined ) { - this.activeIndex = newActiveIndex; - this.previousIndex = a; - } - - // invoke callbacks where appropriate - // - // TODO this is also convoluted and confusing - if ( newActiveIndex < a ) { - ( opts.present || opts.back || $.noop )( this.getActive(), 'back' ); - } else if ( newActiveIndex > a ) { - ( opts.present || opts.forward || $.noop )( this.getActive(), 'forward' ); - } else if ( newActiveIndex === undefined && opts.missing ){ - opts.missing( this.getActive() ); - } - } - }); -})( jQuery ); - - -(function( $, undefined ) { - var path = $.mobile.path, - initialHref = location.href; - - $.mobile.Navigator = function( history ) { - this.history = history; - this.ignoreInitialHashChange = true; - - $.mobile.window.bind({ - "popstate.history": $.proxy( this.popstate, this ), - "hashchange.history": $.proxy( this.hashchange, this ) - }); - }; - - $.extend($.mobile.Navigator.prototype, { - squash: function( url, data ) { - var state, href, hash = path.isPath(url) ? path.stripHash(url) : url; - - href = path.squash( url ); - - // make sure to provide this information when it isn't explicitly set in the - // data object that was passed to the squash method - state = $.extend({ - hash: hash, - url: href - }, data); - - // replace the current url with the new href and store the state - // Note that in some cases we might be replacing an url with the - // same url. We do this anyways because we need to make sure that - // all of our history entries have a state object associated with - // them. This allows us to work around the case where $.mobile.back() - // is called to transition from an external page to an embedded page. - // In that particular case, a hashchange event is *NOT* generated by the browser. - // Ensuring each history entry has a state object means that onPopState() - // will always trigger our hashchange callback even when a hashchange event - // is not fired. - window.history.replaceState( state, state.title || document.title, href ); - - return state; - }, - - hash: function( url, href ) { - var parsed, loc, hash; - - // Grab the hash for recording. If the passed url is a path - // we used the parsed version of the squashed url to reconstruct, - // otherwise we assume it's a hash and store it directly - parsed = path.parseUrl( url ); - loc = path.parseLocation(); - - if( loc.pathname + loc.search === parsed.pathname + parsed.search ) { - // If the pathname and search of the passed url is identical to the current loc - // then we must use the hash. Otherwise there will be no event - // eg, url = "/foo/bar?baz#bang", location.href = "http://example.com/foo/bar?baz" - hash = parsed.hash ? parsed.hash : parsed.pathname + parsed.search; - } else if ( path.isPath(url) ) { - var resolved = path.parseUrl( href ); - // If the passed url is a path, make it domain relative and remove any trailing hash - hash = resolved.pathname + resolved.search + (path.isPreservableHash( resolved.hash )? resolved.hash.replace( "#", "" ) : ""); - } else { - hash = url; - } - - return hash; - }, - - // TODO reconsider name - go: function( url, data, noEvents ) { - var state, href, hash, popstateEvent, - isPopStateEvent = $.event.special.navigate.isPushStateEnabled(); - - // Get the url as it would look squashed on to the current resolution url - href = path.squash( url ); - - // sort out what the hash sould be from the url - hash = this.hash( url, href ); - - // Here we prevent the next hash change or popstate event from doing any - // history management. In the case of hashchange we don't swallow it - // if there will be no hashchange fired (since that won't reset the value) - // and will swallow the following hashchange - if( noEvents && hash !== path.stripHash(path.parseLocation().hash) ) { - this.preventNextHashChange = noEvents; - } - - // IMPORTANT in the case where popstate is supported the event will be triggered - // directly, stopping further execution - ie, interupting the flow of this - // method call to fire bindings at this expression. Below the navigate method - // there is a binding to catch this event and stop its propagation. - // - // We then trigger a new popstate event on the window with a null state - // so that the navigate events can conclude their work properly - // - // if the url is a path we want to preserve the query params that are available on - // the current url. - this.preventHashAssignPopState = true; - window.location.hash = hash; - - // If popstate is enabled and the browser triggers `popstate` events when the hash - // is set (this often happens immediately in browsers like Chrome), then the - // this flag will be set to false already. If it's a browser that does not trigger - // a `popstate` on hash assignement or `replaceState` then we need avoid the branch - // that swallows the event created by the popstate generated by the hash assignment - // At the time of this writing this happens with Opera 12 and some version of IE - this.preventHashAssignPopState = false; - - state = $.extend({ - url: href, - hash: hash, - title: document.title - }, data); - - if( isPopStateEvent ) { - popstateEvent = new $.Event( "popstate" ); - popstateEvent.originalEvent = { - type: "popstate", - state: null - }; - - this.squash( url, state ); - - // Trigger a new faux popstate event to replace the one that we - // caught that was triggered by the hash setting above. - if( !noEvents ) { - this.ignorePopState = true; - $.mobile.window.trigger( popstateEvent ); - } - } - - // record the history entry so that the information can be included - // in hashchange event driven navigate events in a similar fashion to - // the state that's provided by popstate - this.history.add( state.url, state ); - }, - - - // This binding is intended to catch the popstate events that are fired - // when execution of the `$.navigate` method stops at window.location.hash = url; - // and completely prevent them from propagating. The popstate event will then be - // retriggered after execution resumes - // - // TODO grab the original event here and use it for the synthetic event in the - // second half of the navigate execution that will follow this binding - popstate: function( event ) { - var active, hash, state, closestIndex; - - // Partly to support our test suite which manually alters the support - // value to test hashchange. Partly to prevent all around weirdness - if( !$.event.special.navigate.isPushStateEnabled() ){ - return; - } - - // If this is the popstate triggered by the actual alteration of the hash - // prevent it completely. History is tracked manually - if( this.preventHashAssignPopState ) { - this.preventHashAssignPopState = false; - event.stopImmediatePropagation(); - return; - } - - // if this is the popstate triggered after the `replaceState` call in the go - // method, then simply ignore it. The history entry has already been captured - if( this.ignorePopState ) { - this.ignorePopState = false; - return; - } - - // If there is no state, and the history stack length is one were - // probably getting the page load popstate fired by browsers like chrome - // avoid it and set the one time flag to false. - // TODO: Do we really need all these conditions? Comparing location hrefs - // should be sufficient. - if( !event.originalEvent.state && - this.history.stack.length === 1 && - this.ignoreInitialHashChange ) { - this.ignoreInitialHashChange = false; - - if ( location.href === initialHref ) { - event.preventDefault(); - return; - } - } - - // account for direct manipulation of the hash. That is, we will receive a popstate - // when the hash is changed by assignment, and it won't have a state associated. We - // then need to squash the hash. See below for handling of hash assignment that - // matches an existing history entry - // TODO it might be better to only add to the history stack - // when the hash is adjacent to the active history entry - hash = path.parseLocation().hash; - if( !event.originalEvent.state && hash ) { - // squash the hash that's been assigned on the URL with replaceState - // also grab the resulting state object for storage - state = this.squash( hash ); - - // record the new hash as an additional history entry - // to match the browser's treatment of hash assignment - this.history.add( state.url, state ); - - // pass the newly created state information - // along with the event - event.historyState = state; - - // do not alter history, we've added a new history entry - // so we know where we are - return; - } - - // If all else fails this is a popstate that comes from the back or forward buttons - // make sure to set the state of our history stack properly, and record the directionality - this.history.direct({ - url: (event.originalEvent.state || {}).url || hash, - - // When the url is either forward or backward in history include the entry - // as data on the event object for merging as data in the navigate event - present: function( historyEntry, direction ) { - // make sure to create a new object to pass down as the navigate event data - event.historyState = $.extend({}, historyEntry); - event.historyState.direction = direction; - } - }); - }, - - // NOTE must bind before `navigate` special event hashchange binding otherwise the - // navigation data won't be attached to the hashchange event in time for those - // bindings to attach it to the `navigate` special event - // TODO add a check here that `hashchange.navigate` is bound already otherwise it's - // broken (exception?) - hashchange: function( event ) { - var history, hash; - - // If hashchange listening is explicitly disabled or pushstate is supported - // avoid making use of the hashchange handler. - if(!$.event.special.navigate.isHashChangeEnabled() || - $.event.special.navigate.isPushStateEnabled() ) { - return; - } - - // On occasion explicitly want to prevent the next hash from propogating because we only - // with to alter the url to represent the new state do so here - if( this.preventNextHashChange ){ - this.preventNextHashChange = false; - event.stopImmediatePropagation(); - return; - } - - history = this.history; - hash = path.parseLocation().hash; - - // If this is a hashchange caused by the back or forward button - // make sure to set the state of our history stack properly - this.history.direct({ - url: hash, - - // When the url is either forward or backward in history include the entry - // as data on the event object for merging as data in the navigate event - present: function( historyEntry, direction ) { - // make sure to create a new object to pass down as the navigate event data - event.hashchangeState = $.extend({}, historyEntry); - event.hashchangeState.direction = direction; - }, - - // When we don't find a hash in our history clearly we're aiming to go there - // record the entry as new for future traversal - // - // NOTE it's not entirely clear that this is the right thing to do given that we - // can't know the users intention. It might be better to explicitly _not_ - // support location.hash assignment in preference to $.navigate calls - // TODO first arg to add should be the href, but it causes issues in identifying - // embeded pages - missing: function() { - history.add( hash, { - hash: hash, - title: document.title - }); - } - }); - } - }); -})( jQuery ); - - - -(function( $, undefined ) { - // TODO consider queueing navigation activity until previous activities have completed - // so that end users don't have to think about it. Punting for now - // TODO !! move the event bindings into callbacks on the navigate event - $.mobile.navigate = function( url, data, noEvents ) { - $.mobile.navigate.navigator.go( url, data, noEvents ); - }; - - // expose the history on the navigate method in anticipation of full integration with - // existing navigation functionalty that is tightly coupled to the history information - $.mobile.navigate.history = new $.mobile.History(); - - // instantiate an instance of the navigator for use within the $.navigate method - $.mobile.navigate.navigator = new $.mobile.Navigator( $.mobile.navigate.history ); - - var loc = $.mobile.path.parseLocation(); - $.mobile.navigate.history.add( loc.href, {hash: loc.hash} ); -})( jQuery ); - - -// This plugin is an experiment for abstracting away the touch and mouse -// events so that developers don't have to worry about which method of input -// the device their document is loaded on supports. -// -// The idea here is to allow the developer to register listeners for the -// basic mouse events, such as mousedown, mousemove, mouseup, and click, -// and the plugin will take care of registering the correct listeners -// behind the scenes to invoke the listener at the fastest possible time -// for that device, while still retaining the order of event firing in -// the traditional mouse environment, should multiple handlers be registered -// on the same element for different events. -// -// The current version exposes the following virtual events to jQuery bind methods: -// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" - -(function( $, window, document, undefined ) { - -var dataPropertyName = "virtualMouseBindings", - touchTargetPropertyName = "virtualTouchID", - virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), - touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), - mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], - mouseEventProps = $.event.props.concat( mouseHookProps ), - activeDocHandlers = {}, - resetTimerID = 0, - startX = 0, - startY = 0, - didScroll = false, - clickBlockList = [], - blockMouseTriggers = false, - blockTouchTriggers = false, - eventCaptureSupported = "addEventListener" in document, - $document = $( document ), - nextTouchID = 1, - lastTouchID = 0, threshold; - -$.vmouse = { - moveDistanceThreshold: 10, - clickDistanceThreshold: 10, - resetTimerDuration: 1500 -}; - -function getNativeEvent( event ) { - - while ( event && typeof event.originalEvent !== "undefined" ) { - event = event.originalEvent; - } - return event; -} - -function createVirtualEvent( event, eventType ) { - - var t = event.type, - oe, props, ne, prop, ct, touch, i, j, len; - - event = $.Event( event ); - event.type = eventType; - - oe = event.originalEvent; - props = $.event.props; - - // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 - // https://github.com/jquery/jquery-mobile/issues/3280 - if ( t.search( /^(mouse|click)/ ) > -1 ) { - props = mouseEventProps; - } - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if ( oe ) { - for ( i = props.length, prop; i; ) { - prop = props[ --i ]; - event[ prop ] = oe[ prop ]; - } - } - - // make sure that if the mouse and click virtual events are generated - // without a .which one is defined - if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) { - event.which = 1; - } - - if ( t.search(/^touch/) !== -1 ) { - ne = getNativeEvent( oe ); - t = ne.touches; - ct = ne.changedTouches; - touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined ); - - if ( touch ) { - for ( j = 0, len = touchEventProps.length; j < len; j++) { - prop = touchEventProps[ j ]; - event[ prop ] = touch[ prop ]; - } - } - } - - return event; -} - -function getVirtualBindingFlags( element ) { - - var flags = {}, - b, k; - - while ( element ) { - - b = $.data( element, dataPropertyName ); - - for ( k in b ) { - if ( b[ k ] ) { - flags[ k ] = flags.hasVirtualBinding = true; - } - } - element = element.parentNode; - } - return flags; -} - -function getClosestElementWithVirtualBinding( element, eventType ) { - var b; - while ( element ) { - - b = $.data( element, dataPropertyName ); - - if ( b && ( !eventType || b[ eventType ] ) ) { - return element; - } - element = element.parentNode; - } - return null; -} - -function enableTouchBindings() { - blockTouchTriggers = false; -} - -function disableTouchBindings() { - blockTouchTriggers = true; -} - -function enableMouseBindings() { - lastTouchID = 0; - clickBlockList.length = 0; - blockMouseTriggers = false; - - // When mouse bindings are enabled, our - // touch bindings are disabled. - disableTouchBindings(); -} - -function disableMouseBindings() { - // When mouse bindings are disabled, our - // touch bindings are enabled. - enableTouchBindings(); -} - -function startResetTimer() { - clearResetTimer(); - resetTimerID = setTimeout( function() { - resetTimerID = 0; - enableMouseBindings(); - }, $.vmouse.resetTimerDuration ); -} - -function clearResetTimer() { - if ( resetTimerID ) { - clearTimeout( resetTimerID ); - resetTimerID = 0; - } -} - -function triggerVirtualEvent( eventType, event, flags ) { - var ve; - - if ( ( flags && flags[ eventType ] ) || - ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { - - ve = createVirtualEvent( event, eventType ); - - $( event.target).trigger( ve ); - } - - return ve; -} - -function mouseEventCallback( event ) { - var touchID = $.data( event.target, touchTargetPropertyName ); - - if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) { - var ve = triggerVirtualEvent( "v" + event.type, event ); - if ( ve ) { - if ( ve.isDefaultPrevented() ) { - event.preventDefault(); - } - if ( ve.isPropagationStopped() ) { - event.stopPropagation(); - } - if ( ve.isImmediatePropagationStopped() ) { - event.stopImmediatePropagation(); - } - } - } -} - -function handleTouchStart( event ) { - - var touches = getNativeEvent( event ).touches, - target, flags; - - if ( touches && touches.length === 1 ) { - - target = event.target; - flags = getVirtualBindingFlags( target ); - - if ( flags.hasVirtualBinding ) { - - lastTouchID = nextTouchID++; - $.data( target, touchTargetPropertyName, lastTouchID ); - - clearResetTimer(); - - disableMouseBindings(); - didScroll = false; - - var t = getNativeEvent( event ).touches[ 0 ]; - startX = t.pageX; - startY = t.pageY; - - triggerVirtualEvent( "vmouseover", event, flags ); - triggerVirtualEvent( "vmousedown", event, flags ); - } - } -} - -function handleScroll( event ) { - if ( blockTouchTriggers ) { - return; - } - - if ( !didScroll ) { - triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); - } - - didScroll = true; - startResetTimer(); -} - -function handleTouchMove( event ) { - if ( blockTouchTriggers ) { - return; - } - - var t = getNativeEvent( event ).touches[ 0 ], - didCancel = didScroll, - moveThreshold = $.vmouse.moveDistanceThreshold, - flags = getVirtualBindingFlags( event.target ); - - didScroll = didScroll || - ( Math.abs( t.pageX - startX ) > moveThreshold || - Math.abs( t.pageY - startY ) > moveThreshold ); - - - if ( didScroll && !didCancel ) { - triggerVirtualEvent( "vmousecancel", event, flags ); - } - - triggerVirtualEvent( "vmousemove", event, flags ); - startResetTimer(); -} - -function handleTouchEnd( event ) { - if ( blockTouchTriggers ) { - return; - } - - disableTouchBindings(); - - var flags = getVirtualBindingFlags( event.target ), - t; - triggerVirtualEvent( "vmouseup", event, flags ); - - if ( !didScroll ) { - var ve = triggerVirtualEvent( "vclick", event, flags ); - if ( ve && ve.isDefaultPrevented() ) { - // The target of the mouse events that follow the touchend - // event don't necessarily match the target used during the - // touch. This means we need to rely on coordinates for blocking - // any click that is generated. - t = getNativeEvent( event ).changedTouches[ 0 ]; - clickBlockList.push({ - touchID: lastTouchID, - x: t.clientX, - y: t.clientY - }); - - // Prevent any mouse events that follow from triggering - // virtual event notifications. - blockMouseTriggers = true; - } - } - triggerVirtualEvent( "vmouseout", event, flags); - didScroll = false; - - startResetTimer(); -} - -function hasVirtualBindings( ele ) { - var bindings = $.data( ele, dataPropertyName ), - k; - - if ( bindings ) { - for ( k in bindings ) { - if ( bindings[ k ] ) { - return true; - } - } - } - return false; -} - -function dummyMouseHandler() {} - -function getSpecialEventObject( eventType ) { - var realType = eventType.substr( 1 ); - - return { - setup: function( data, namespace ) { - // If this is the first virtual mouse binding for this element, - // add a bindings object to its data. - - if ( !hasVirtualBindings( this ) ) { - $.data( this, dataPropertyName, {} ); - } - - // If setup is called, we know it is the first binding for this - // eventType, so initialize the count for the eventType to zero. - var bindings = $.data( this, dataPropertyName ); - bindings[ eventType ] = true; - - // If this is the first virtual mouse event for this type, - // register a global handler on the document. - - activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; - - if ( activeDocHandlers[ eventType ] === 1 ) { - $document.bind( realType, mouseEventCallback ); - } - - // Some browsers, like Opera Mini, won't dispatch mouse/click events - // for elements unless they actually have handlers registered on them. - // To get around this, we register dummy handlers on the elements. - - $( this ).bind( realType, dummyMouseHandler ); - - // For now, if event capture is not supported, we rely on mouse handlers. - if ( eventCaptureSupported ) { - // If this is the first virtual mouse binding for the document, - // register our touchstart handler on the document. - - activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; - - if ( activeDocHandlers[ "touchstart" ] === 1 ) { - $document.bind( "touchstart", handleTouchStart ) - .bind( "touchend", handleTouchEnd ) - - // On touch platforms, touching the screen and then dragging your finger - // causes the window content to scroll after some distance threshold is - // exceeded. On these platforms, a scroll prevents a click event from being - // dispatched, and on some platforms, even the touchend is suppressed. To - // mimic the suppression of the click event, we need to watch for a scroll - // event. Unfortunately, some platforms like iOS don't dispatch scroll - // events until *AFTER* the user lifts their finger (touchend). This means - // we need to watch both scroll and touchmove events to figure out whether - // or not a scroll happenens before the touchend event is fired. - - .bind( "touchmove", handleTouchMove ) - .bind( "scroll", handleScroll ); - } - } - }, - - teardown: function( data, namespace ) { - // If this is the last virtual binding for this eventType, - // remove its global handler from the document. - - --activeDocHandlers[ eventType ]; - - if ( !activeDocHandlers[ eventType ] ) { - $document.unbind( realType, mouseEventCallback ); - } - - if ( eventCaptureSupported ) { - // If this is the last virtual mouse binding in existence, - // remove our document touchstart listener. - - --activeDocHandlers[ "touchstart" ]; - - if ( !activeDocHandlers[ "touchstart" ] ) { - $document.unbind( "touchstart", handleTouchStart ) - .unbind( "touchmove", handleTouchMove ) - .unbind( "touchend", handleTouchEnd ) - .unbind( "scroll", handleScroll ); - } - } - - var $this = $( this ), - bindings = $.data( this, dataPropertyName ); - - // teardown may be called when an element was - // removed from the DOM. If this is the case, - // jQuery core may have already stripped the element - // of any data bindings so we need to check it before - // using it. - if ( bindings ) { - bindings[ eventType ] = false; - } - - // Unregister the dummy event handler. - - $this.unbind( realType, dummyMouseHandler ); - - // If this is the last virtual mouse binding on the - // element, remove the binding data from the element. - - if ( !hasVirtualBindings( this ) ) { - $this.removeData( dataPropertyName ); - } - } - }; -} - -// Expose our custom events to the jQuery bind/unbind mechanism. - -for ( var i = 0; i < virtualEventNames.length; i++ ) { - $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); -} - -// Add a capture click handler to block clicks. -// Note that we require event capture support for this so if the device -// doesn't support it, we punt for now and rely solely on mouse events. -if ( eventCaptureSupported ) { - document.addEventListener( "click", function( e ) { - var cnt = clickBlockList.length, - target = e.target, - x, y, ele, i, o, touchID; - - if ( cnt ) { - x = e.clientX; - y = e.clientY; - threshold = $.vmouse.clickDistanceThreshold; - - // The idea here is to run through the clickBlockList to see if - // the current click event is in the proximity of one of our - // vclick events that had preventDefault() called on it. If we find - // one, then we block the click. - // - // Why do we have to rely on proximity? - // - // Because the target of the touch event that triggered the vclick - // can be different from the target of the click event synthesized - // by the browser. The target of a mouse/click event that is syntehsized - // from a touch event seems to be implementation specific. For example, - // some browsers will fire mouse/click events for a link that is near - // a touch event, even though the target of the touchstart/touchend event - // says the user touched outside the link. Also, it seems that with most - // browsers, the target of the mouse/click event is not calculated until the - // time it is dispatched, so if you replace an element that you touched - // with another element, the target of the mouse/click will be the new - // element underneath that point. - // - // Aside from proximity, we also check to see if the target and any - // of its ancestors were the ones that blocked a click. This is necessary - // because of the strange mouse/click target calculation done in the - // Android 2.1 browser, where if you click on an element, and there is a - // mouse/click handler on one of its ancestors, the target will be the - // innermost child of the touched element, even if that child is no where - // near the point of touch. - - ele = target; - - while ( ele ) { - for ( i = 0; i < cnt; i++ ) { - o = clickBlockList[ i ]; - touchID = 0; - - if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || - $.data( ele, touchTargetPropertyName ) === o.touchID ) { - // XXX: We may want to consider removing matches from the block list - // instead of waiting for the reset timer to fire. - e.preventDefault(); - e.stopPropagation(); - return; - } - } - ele = ele.parentNode; - } - } - }, true); -} -})( jQuery, window, document ); - - -(function( $, window, undefined ) { - var $document = $( document ); - - // add new event shortcuts - $.each( ( "touchstart touchmove touchend " + - "tap taphold " + - "swipe swipeleft swiperight " + - "scrollstart scrollstop" ).split( " " ), function( i, name ) { - - $.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - // jQuery < 1.8 - if ( $.attrFn ) { - $.attrFn[ name ] = true; - } - }); - - var supportTouch = $.mobile.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.dispatch.call( obj, event ); - event.type = originalType; - } - - // also handles scrollstop - $.event.special.scrollstart = { - - enabled: true, - - setup: function() { - - var thisObject = this, - $this = $( thisObject ), - scrolling, - timer; - - function trigger( event, state ) { - scrolling = state; - triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); - } - - // iPhone triggers scroll after a small delay; use touchmove instead - $this.bind( scrollEvent, function( event ) { - - if ( !$.event.special.scrollstart.enabled ) { - return; - } - - if ( !scrolling ) { - trigger( event, true ); - } - - clearTimeout( timer ); - timer = setTimeout( function() { - trigger( event, false ); - }, 50 ); - }); - } - }; - - // also handles taphold - $.event.special.tap = { - tapholdThreshold: 750, - - 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 } ) ); - }, $.event.special.tap.tapholdThreshold ); - }); - } - }; - - // also handles swipeleft, swiperight - $.event.special.swipe = { - scrollSupressionThreshold: 30, // 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. - - start: function( event ) { - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event; - return { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ], - origin: $( event.target ) - }; - }, - - stop: function( event ) { - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event; - return { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ] - }; - }, - - handleSwipe: function( 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" ); - } - }, - - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( touchStartEvent, function( event ) { - var start = $.event.special.swipe.start( event ), - stop; - - function moveHandler( event ) { - if ( !start ) { - return; - } - - stop = $.event.special.swipe.stop( event ); - - // prevent scrolling - if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { - event.preventDefault(); - } - } - - $this.bind( touchMoveEvent, moveHandler ) - .one( touchStopEvent, function() { - $this.unbind( touchMoveEvent, moveHandler ); - - if ( start && stop ) { - $.event.special.swipe.handleSwipe( start, stop ); - } - start = stop = undefined; - }); - }); - } - }; - $.each({ - scrollstop: "scrollstart", - taphold: "tap", - swipeleft: "swipe", - swiperight: "swipe" - }, function( event, sourceEvent ) { - - $.event.special[ event ] = { - setup: function() { - $( this ).bind( sourceEvent, $.noop ); - } - }; - }); - -})( jQuery, this ); - - - // throttled resize event - (function( $ ) { - $.event.special.throttledresize = { - setup: function() { - $( this ).bind( "resize", handler ); - }, - teardown: function() { - $( this ).unbind( "resize", handler ); - } - }; - - var throttle = 250, - handler = function() { - curr = ( new Date() ).getTime(); - diff = curr - lastCall; - - if ( diff >= throttle ) { - - lastCall = curr; - $( this ).trigger( "throttledresize" ); - - } else { - - if ( heldCall ) { - clearTimeout( heldCall ); - } - - // Promise a held call will still execute - heldCall = setTimeout( handler, throttle - diff ); - } - }, - lastCall = 0, - heldCall, - curr, - diff; - })( jQuery ); - -(function( $, window ) { - var win = $( window ), - event_name = "orientationchange", - 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 || win.width(), - wh = window.innerHeight || win.height(), - landscape_threshold = 50; - - initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; - - - // Now check to see if the current window.orientation is 0 or 180. - initial_orientation_is_default = portrait_map[ window.orientation ]; - - // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* - // if the initial orientation is portrait, but window.orientation reports 90 or -90, we - // need to flip our portrait_map values because landscape is the default orientation for - // this device/browser. - if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { - portrait_map = { "-90": true, "90": true }; - } - } - - $.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, { - setup: function() { - // If the event is supported natively, return false so that jQuery - // will bind to the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Get the current orientation to avoid initial double-triggering. - last_orientation = get_orientation(); - - // Because the orientationchange event doesn't exist, simulate the - // event by testing window dimensions on resize. - win.bind( "throttledresize", handler ); - }, - teardown: function() { - // If the event is not supported natively, return false so that - // jQuery will unbind the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Because the orientationchange event doesn't exist, unbind the - // resize event handler. - win.unbind( "throttledresize", handler ); - }, - add: function( handleObj ) { - // Save a reference to the bound event handler. - var old_handler = handleObj.handler; - - - handleObj.handler = function( event ) { - // Modify event object, adding the .orientation property. - event.orientation = get_orientation(); - - // Call the originally-bound event handler and return its result. - return old_handler.apply( this, arguments ); - }; - } - }); - - // If the event is not supported natively, this handler will be bound to - // the window resize event to simulate the orientationchange event. - function handler() { - // Get the current orientation. - var orientation = get_orientation(); - - if ( orientation !== last_orientation ) { - // The orientation has changed, so trigger the orientationchange event. - last_orientation = orientation; - win.trigger( event_name ); - } - } - - // Get the current page orientation. This method is exposed publicly, should it - // be needed, as jQuery.event.special.orientationchange.orientation() - $.event.special.orientationchange.orientation = get_orientation = function() { - var isPortrait = true, elem = document.documentElement; - - // prefer window orientation to the calculation based on screensize as - // the actual screen resize takes place before or after the orientation change event - // has been fired depending on implementation (eg android 2.3 is before, iphone after). - // More testing is required to determine if a more reliable method of determining the new screensize - // is possible when orientationchange is fired. (eg, use media queries + element + opacity) - if ( $.support.orientation ) { - // if the window orientation registers as 0 or 180 degrees report - // portrait, otherwise landscape - isPortrait = portrait_map[ window.orientation ]; - } else { - isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; - } - - return isPortrait ? "portrait" : "landscape"; - }; - - $.fn[ event_name ] = function( fn ) { - return fn ? this.bind( event_name, fn ) : this.trigger( event_name ); - }; - - // jQuery < 1.8 - if ( $.attrFn ) { - $.attrFn[ event_name ] = true; - } - -}( jQuery, this )); - - - -(function( $, undefined ) { - -$.widget( "mobile.page", $.mobile.widget, { - options: { - theme: "c", - domCache: false, - keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" - }, - - _create: function() { - // if false is returned by the callbacks do not create the page - if ( this._trigger( "beforecreate" ) === false ) { - return false; - } - - this.element - .attr( "tabindex", "0" ) - .addClass( "ui-page ui-body-" + this.options.theme ); - - this._on( this.element, { - pagebeforehide: "removeContainerBackground", - pagebeforeshow: "_handlePageBeforeShow" - }); - }, - - _handlePageBeforeShow: function( e ) { - this.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 && $.mobile.window.width() > $.mobile.maxTransitionWidth, - none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none" || Math.max( $.mobile.window.scrollTop(), toScroll ) > $.mobile.getMaxScrollForTransition(), - toPreClass = " ui-page-pre-in", - 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 + $.mobile.window.scrollTop() ) - .addClass( name + " out" + reverseClass ); - }, - - doneOut = function() { - - if ( $from && sequential ) { - cleanFrom(); - } - - startIn(); - }, - - startIn = function() { - - // Prevent flickering in phonegap container: see comments at #4024 regarding iOS - $to.css( "z-index", -10 ); - - $to.addClass( $.mobile.activePageClass + toPreClass ); - - // Send focus to page as it is now display: block - $.mobile.focusPage( $to ); - - // Set to page height - $to.height( screenHeight + toScroll ); - - scrollPage(); - - // Restores visibility of the new page: added together with $to.css( "z-index", -10 ); - $to.css( "z-index", "" ); - - if ( !none ) { - $to.animationComplete( doneIn ); - } - - $to - .removeClass( toPreClass ) - .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 ( $.mobile.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 ), - defaultGetMaxScrollForTransition = function() { - return $.mobile.getScreenHeight() * 3; - }; - -// 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 = {}; - -// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified -$.mobile._maybeDegradeTransition = function( transition ) { - if ( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ) { - transition = $.mobile.transitionFallbacks[ transition ]; - } - - return transition; -}; - -// Set the getMaxScrollForTransition to default if no implementation was set by user -$.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defaultGetMaxScrollForTransition; -})( jQuery, this ); - -(function( $, undefined ) { - - //define vars for interal use - var $window = $.mobile.window, - $html = $( 'html' ), - $head = $( 'head' ), - - // NOTE: path extensions dependent on core attributes. Moved here to remove deps from - // $.mobile.path definition - path = $.extend($.mobile.path, { - - //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]; - }, - - //check if the specified url refers to the first page in the main application document. - isFirstPageUrl: function( url ) { - // We only deal with absolute paths. - var u = path.parseUrl( path.makeUrlAbsolute( url, this.documentBase ) ), - - // Does the url have the same path as the document? - samePath = u.hrefNoHash === this.documentUrl.hrefNoHash || ( this.documentBaseDiffers && u.hrefNoHash === this.documentBase.hrefNoHash ), - - // Get the first page element. - fp = $.mobile.firstPage, - - // Get the id of the first page element if it has one. - fpId = fp && fp[0] ? fp[0].id : undefined; - - // The url refers to the first page if the path matches the document and - // it either has no hash value, or the hash is exactly equal to the id of the - // first page element. - return samePath && ( !u.hash || u.hash === "#" || ( fpId && u.hash.replace( /^#/, "" ) === fpId ) ); - }, - - // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR - // requests if the document doing the request was loaded via the file:// protocol. - // This is usually to allow the application to "phone home" and fetch app specific - // data. We normally let the browser handle external/cross-domain urls, but if the - // allowCrossDomainPages option is true, we will allow cross-domain http/https - // requests to go through our page loading logic. - isPermittedCrossDomainRequest: function( docUrl, reqUrl ) { - return $.mobile.allowCrossDomainPages && - docUrl.protocol === "file:" && - reqUrl.search( /^https?:/ ) !== -1; - } - }), - - // used to track last vclicked element to make sure its value is added to form data - $lastVClicked = null, - - //will be defined when a link is clicked and given an active class - $activeClickedLink = null, - - // resolved on domready - domreadyDeferred = $.Deferred(), - - //urlHistory is purely here to make guesses at whether the back or forward button was clicked - //and provide an appropriate transition - urlHistory = $.mobile.navigate.history, - - //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.documentUrl, - - //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 = path.documentBase, - - //cache the comparison once. - documentBaseDiffers = path.documentBaseDiffers, - - getScreenHeight = $.mobile.getScreenHeight; - - //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 ) { - href = path.parseUrl(href).hrefNoHash; - 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.hrefNoSearch ); - } - - } : undefined; - - - //return the original document url - $.mobile.getDocumentUrl = path.getDocumentUrl; - - //return the original document base url - $.mobile.getDocumentBase = path.getDocumentBase; - - /* internal utility functions */ - - // NOTE Issue #4950 Android phonegap doesn't navigate back properly - // when a full page refresh has taken place. It appears that hashchange - // and replacestate history alterations work fine but we need to support - // both forms of history traversal in our code that uses backward history - // movement - $.mobile.back = function() { - var nav = window.navigator; - - // if the setting is on and the navigator object is - // available use the phonegap navigation capability - if( this.phonegapNavigationEnabled && - nav && - nav.app && - nav.app.backHistory ){ - nav.app.backHistory(); - } else { - window.history.back(); - } - }; - - //direct focus to the page title, or otherwise first focusable element - $.mobile.focusPage = function ( page ) { - var autofocus = page.find( "[autofocus]" ), - pageTitle = page.find( ".ui-title:eq(0)" ); - - if ( autofocus.length ) { - autofocus.focus(); - return; - } - - if ( pageTitle.length ) { - pageTitle.focus(); - } else{ - page.focus(); - } - }; - - //remove active classes after page transition or error - function removeActiveLinkClass( forceRemoval ) { - if ( !!$activeClickedLink && ( !$activeClickedLink.closest( "." + $.mobile.activePageClass ).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 ); - - // No-op implementation of transition degradation - $.mobile._maybeDegradeTransition = $.mobile._maybeDegradeTransition || function( transition ) { - return transition; - }; - - //function for transitioning between two existing pages - function transitionPages( toPage, fromPage, transition, reverse ) { - if ( fromPage ) { - //trigger before show/hide events - fromPage.data( "mobile-page" )._trigger( "beforehide", null, { nextPage: toPage } ); - } - - toPage.data( "mobile-page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); - - //clear page loader - $.mobile.hidePageLoadingMsg(); - - transition = $.mobile._maybeDegradeTransition( transition ); - - //find the transition handler for the specified transition. If there - //isn't one in our transitionHandlers dictionary, use the default one. - //call the handler immediately to kick-off the transition. - 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( "mobile-page" )._trigger( "hide", null, { nextPage: toPage } ); - } - - //trigger pageshow, define prevPage as either fromPage or empty jQuery obj - toPage.data( "mobile-page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); - }); - - return promise; - } - - //simply set the active page's minimum height to screen height, depending on orientation - $.mobile.resetActivePageHeight = function resetActivePageHeight( height ) { - var aPage = $( "." + $.mobile.activePageClass ), - aPagePadT = parseFloat( aPage.css( "padding-top" ) ), - aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ), - aPageBorderT = parseFloat( aPage.css( "border-top-width" ) ), - aPageBorderB = parseFloat( aPage.css( "border-bottom-width" ) ); - - height = ( typeof height === "number" )? height : getScreenHeight(); - - aPage.css( "min-height", height - aPagePadT - aPagePadB - aPageBorderT - aPageBorderB ); - }; - - //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(); - } - - // determine the current base url - function findBaseWithDefault() { - var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) ); - return closestBase || documentBase.hrefNoHash; - } - - /* 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; - - $.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( "mobile-page" ).options.domCache && - page.is( ":jqmData(external-page='true')" ) ) { - - page.bind( 'pagehide.remove', function( e ) { - 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, - - // 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. - // NOTE do _not_ use the :jqmData psuedo selector because parenthesis - // are a valid url char and it breaks on the first occurence - page = settings.pageContainer.children( "[data-" + $.mobile.ns +"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 ) - .jqmData( "url", dataUrl ); - } - - - // If we failed to find a page in the DOM, check the URL to see if it - // refers to the first page in the application. 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(); - } - } - - // 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 ); - //if we are reloading the page make sure we update the base if its not a prefetch - if( base && !options.prefetch ){ - base.set(url); - } - 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(); - }; - } - // Reset base to the default document base. - // only reset if we are not prefetching - if ( base && typeof options.prefetch === "undefined" ) { - base.reset(); - } - - 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, - contentType: settings.contentType, - 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 + "
" ).text() ); - } - //dont update the base tag if we are prefetching - if ( base && typeof options.prefetch === "undefined") { - 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( "[data-" + $.mobile.ns +"url='" + dataUrl + "']" ); - } - - // 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 ), isToPageString; - - // 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; - - isToPageString = (typeof toPage === "string"); - - var mpc = settings.pageContainer, - pbcEvent = new $.Event( "pagebeforechange" ), - triggerData = { toPage: toPage, options: settings }; - - // NOTE: preserve the original target as the dataUrl value will be simplified - // eg, removing ui-state, and removing query params from the hash - // this is so that users who want to use query params have access to them - // in the event bindings for the page life cycle See issue #5085 - if ( isToPageString ) { - // if the toPage is a string simply convert it - triggerData.absUrl = path.makeUrlAbsolute( toPage, findBaseWithDefault() ); - } else { - // if the toPage is a jQuery object grab the absolute url stored - // in the loadPage callback where it exists - triggerData.absUrl = toPage.data( 'absUrl' ); - } - - // 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. - // - // We also need to re-evaluate whether it is a string, because an object can - // also be replaced by a string - - toPage = triggerData.toPage; - isToPageString = (typeof toPage === "string"); - - // Set the isPageTransitioning flag to prevent any requests from - // entering this method while we are in the midst of loading a page - // or transitioning. - isPageTransitioning = true; - - // 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 ( isToPageString ) { - // preserve the original target as the dataUrl value will be simplified - // eg, removing ui-state, and removing query params from the hash - // this is so that users who want to use query params have access to them - // in the event bindings for the page life cycle See issue #5085 - settings.target = toPage; - - $.mobile.loadPage( toPage, settings ) - .done(function( url, options, newPage, dupCachedPage ) { - isPageTransitioning = false; - options.duplicateCachedPage = dupCachedPage; - - // store the original absolute url so that it can be provided - // to events in the triggerData of the subsequent changePage call - newPage.data( 'absUrl', triggerData.absUrl ); - $.mobile.changePage( newPage, options ); - }) - .fail(function( url, options ) { - - //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 ); - - // Even if there is no page change to be done, we should keep the urlHistory in sync with the hash changes - if ( settings.fromHashChange ) { - urlHistory.direct({ url: url }); - } - - 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 ) { - historyDir = options.direction === "back" ? -1 : 1; - } - - // Kill the keyboard. - // XXX_jblas: We need to stop crawling the entire document to kill focus. Instead, - // we should be tracking focus with a delegate() handler so we already have - // the element in hand at this point. - // Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement - // is undefined when we are in an IFrame. - try { - if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== 'body' ) { - $( document.activeElement ).blur(); - } else { - $( "input:focus, textarea:focus, select:focus" ).blur(); - } - } catch( e ) {} - - // Record whether we are at a place in history where a dialog used to be - if so, do not add a new history entry and do not change the hash either - var alreadyThere = false; - - // If we're displaying the page as a dialog, we don't want the url - // for the dialog content to be used in the hash. Instead, we want - // to append the dialogHashKey to the url of the current page. - if ( isDialog && active ) { - // on the initial page load active.url is undefined and in that case should - // be an empty string. Moving the undefined -> empty string back into - // urlHistory.addNew seemed imprudent given undefined better represents - // the url state - - // If we are at a place in history that once belonged to a dialog, reuse - // this state without adding to urlHistory and without modifying the hash. - // However, if a dialog is already displayed at this point, and we're - // about to display another dialog, then we must add another hash and - // history entry on top so that one may navigate back to the original dialog - if ( active.url && - active.url.indexOf( dialogHashKey ) > -1 && - $.mobile.activePage && - !$.mobile.activePage.is( ".ui-dialog" ) && - urlHistory.activeIndex > 0 ) { - settings.changeHash = false; - alreadyThere = true; - } - - // Normally, we tack on a dialog hash key, but if this is the location of a stale dialog, - // we reuse the URL from the entry - url = ( active.url || "" ); - - // account for absolute urls instead of just relative urls use as hashes - if( !alreadyThere && url.indexOf("#") > -1 ) { - url += dialogHashKey; - } else { - url += "#" + dialogHashKey; - } - - // tack on another dialogHashKey if this is the same as the initial hash - // this makes sure that a history entry is created for this dialog - if ( urlHistory.activeIndex === 0 && url === urlHistory.initialDst ) { - url += dialogHashKey; - } - } - - // if title element wasn't found, try the page div data attr too - // If this is a deep-link or a reload ( active === undefined ) then just use pageTitle - var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children( ":jqmData(role='header')" ).find( ".ui-title" ).text(); - if ( !!newPageTitle && pageTitle === document.title ) { - pageTitle = newPageTitle; - } - if ( !toPage.jqmData( "title" ) ) { - toPage.jqmData( "title", pageTitle ); - } - - // Make sure we have a transition defined. - settings.transition = settings.transition || - ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) || - ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition ); - - //add page to history stack if it's not back or forward - if ( !historyDir && alreadyThere ) { - urlHistory.getActive().pageUrl = pageUrl; - } - - // Set the location hash. - if ( url && !settings.fromHashChange ) { - var params; - - // rebuilding the hash here since we loose it earlier on - // TODO preserve the originally passed in path - if( !path.isPath( url ) && url.indexOf( "#" ) < 0 ) { - url = "#" + url; - } - - // TODO the property names here are just silly - params = { - transition: settings.transition, - title: pageTitle, - pageUrl: pageUrl, - role: settings.role - }; - - if ( settings.changeHash !== false && $.mobile.hashListeningEnabled ) { - $.mobile.navigate( url, params, true); - } else if ( toPage[ 0 ] !== $.mobile.firstPage[ 0 ] ) { - $.mobile.navigate.history.add( url, params ); - } - } - - //set page title - document.title = pageTitle; - - //set "toPage" as activePage - $.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(); - 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 deferred is resolved in the init file - $.mobile.navreadyDeferred = $.Deferred(); - $.mobile._registerInternalEvents = function() { - var getAjaxFormData = function( $form, calculateOnly ) { - var url, ret = true, formData, vclickedName, method; - - if ( !$.mobile.ajaxEnabled || - // test that the form is, itself, ajax false - $form.is( ":jqmData(ajax='false')" ) || - // test that $.mobile.ignoreContentEnabled is set and - // the form or one of it's parents is ajax=false - !$form.jqmHijackable().length || - $form.attr( "target" ) ) { - return false; - } - - url = $form.attr( "action" ); - method = ( $form.attr( "method" ) || "get" ).toLowerCase(); - - // If no action is specified, browsers default to using the - // URL of the document containing the form. Since we dynamically - // pull in pages from external documents, the form should submit - // to the URL for the source document of the page containing - // the form. - if ( !url ) { - // Get the @data-url for the page containing the form. - url = getClosestBaseUrl( $form ); - - // NOTE: If the method is "get", we need to strip off the query string - // because it will get replaced with the new form data. See issue #5710. - if ( method === "get" ) { - url = path.parseUrl( url ).hrefNoSearch; - } - - 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( $form ) ); - - if ( ( path.isExternal( url ) && !path.isPermittedCrossDomainRequest( documentUrl, url ) ) ) { - return false; - } - - if ( !calculateOnly ) { - formData = $form.serializeArray(); - - if ( $lastVClicked && $lastVClicked[ 0 ].form === $form[ 0 ] ) { - vclickedName = $lastVClicked.attr( "name" ); - if ( vclickedName ) { - // Make sure the last clicked element is included in the form - $.each( formData, function( key, value ) { - if ( value.name === vclickedName ) { - // Unset vclickedName - we've found it in the serialized data already - vclickedName = ""; - return false; - } - }); - if ( vclickedName ) { - formData.push( { name: vclickedName, value: $lastVClicked.attr( "value" ) } ); - } - } - } - - ret = { - url: url, - options: { - type: method, - data: $.param( formData ), - transition: $form.jqmData( "transition" ), - reverse: $form.jqmData( "direction" ) === "reverse", - reloadPage: true - } - }; - } - - return ret; - }; - - //bind to form submit events, handle with Ajax - $.mobile.document.delegate( "form", "submit", function( event ) { - var formData = getAjaxFormData( $( this ) ); - - if ( formData ) { - $.mobile.changePage( formData.url, formData.options ); - event.preventDefault(); - } - }); - - //add active state on vclick - $.mobile.document.bind( "vclick", function( event ) { - var $btn, btnEls, target = event.target, needClosest = false; - // if this isn't a left click we don't care. Its important to note - // that when the virtual event is generated it will create the which attr - if ( event.which > 1 || !$.mobile.linkBindingEnabled ) { - return; - } - - // Record that this element was clicked, in case we need it for correct - // form submission during the "submit" handler above - $lastVClicked = $( target ); - - // Try to find a target element to which the active class will be applied - if ( $.data( target, "mobile-button" ) ) { - // If the form will not be submitted via AJAX, do not add active class - if ( !getAjaxFormData( $( target ).closest( "form" ), true ) ) { - return; - } - // We will apply the active state to this button widget - the parent - // of the input that was clicked will have the associated data - if ( target.parentNode ) { - target = target.parentNode; - } - } else { - target = findClosestLink( target ); - if ( !( target && path.parseUrl( target.getAttribute( "href" ) || "#" ).hash !== "#" ) ) { - return; - } - - // TODO teach $.mobile.hijackable to operate on raw dom elements so the - // link wrapping can be avoided - if ( !$( target ).jqmHijackable().length ) { - return; - } - } - - // Avoid calling .closest by using the data set during .buttonMarkup() - // List items have the button data in the parent of the element clicked - if ( !!~target.className.indexOf( "ui-link-inherit" ) ) { - if ( target.parentNode ) { - btnEls = $.data( target.parentNode, "buttonElements" ); - } - // Otherwise, look for the data on the target itself - } else { - btnEls = $.data( target, "buttonElements" ); - } - // If found, grab the button's outer element - if ( btnEls ) { - target = btnEls.outer; - } else { - needClosest = true; - } - - $btn = $( target ); - // If the outer element wasn't found by the our heuristics, use .closest() - if ( needClosest ) { - $btn = $btn.closest( ".ui-btn" ); - } - - if ( $btn.length > 0 && !$btn.hasClass( "ui-disabled" ) ) { - removeActiveLinkClass( true ); - $activeClickedLink = $btn; - $activeClickedLink.addClass( $.mobile.activeBtnClass ); - } - }); - - // click routing - direct to HTTP or Ajax, accordingly - $.mobile.document.bind( "click", function( event ) { - if ( !$.mobile.linkBindingEnabled || event.isDefaultPrevented() ) { - return; - } - - var link = findClosestLink( event.target ), $link = $( link ), 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 a data-rel=back attr, go back in history - if ( $link.is( ":jqmData(rel='back')" ) ) { - $.mobile.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. - - //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 ) && !path.isPermittedCrossDomainRequest( documentUrl, href ) ); - - if ( isExternal ) { - httpCleanup(); - //use default click handling - return; - } - - //use ajax - var transition = $link.jqmData( "transition" ), - reverse = $link.jqmData( "direction" ) === "reverse" || - // deprecated - remove by 1.0 - $link.jqmData( "back" ), - - //this may need to be more specific as we use data-rel more - role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined; - - $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role, link: $link } ); - event.preventDefault(); - }); - - //prefetch pages when anchors with data-prefetch are encountered - $.mobile.document.delegate( ".ui-page", "pageshow.prefetch", function() { - var urls = []; - $( this ).find( "a:jqmData(prefetch)" ).each(function() { - var $link = $( this ), - url = $link.attr( "href" ); - - if ( url && $.inArray( url, urls ) === -1 ) { - urls.push( url ); - - $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ),prefetch: true } ); - } - }); - }); - - $.mobile._handleHashChange = function( url, data ) { - //find first page via hash - var to = path.stripHash(url), - //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, NOTE that the transition is derived from the previous - // history entry - changePageOptions = { - changeHash: false, - fromHashChange: true, - reverse: data.direction === "back" - }; - - $.extend( changePageOptions, data, { - transition: (urlHistory.getLast() || {}).transition || transition - }); - - // special case for dialogs - if ( urlHistory.activeIndex > 0 && to.indexOf( dialogHashKey ) > -1 && urlHistory.initialDst !== to ) { - - // If current active page is not a dialog skip the dialog and continue - // in the same direction - if ( $.mobile.activePage && !$.mobile.activePage.is( ".ui-dialog" ) ) { - //determine if we're heading forward or backward and continue accordingly past - //the current dialog - if( data.direction === "back" ) { - $.mobile.back(); - } else { - window.history.forward(); - } - - // prevent changePage call - 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 - to = data.pageUrl; - var active = $.mobile.urlHistory.getActive(); - - // 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: data.direction === "back" - }); - } - } - - //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 = !path.isPath( to ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to; - - // If we're about to go to an initial URL that contains a reference to a non-existent - // internal page, go to the first page instead. We know that the initial hash refers to a - // non-existent page, because the initial hash did not end up in the initial urlHistory entry - if ( to === path.makeUrlAbsolute( '#' + urlHistory.initialDst, documentBase ) && - urlHistory.stack.length && urlHistory.stack[0].url !== urlHistory.initialDst.replace( dialogHashKey, "" ) ) { - to = $.mobile.firstPage; - } - - $.mobile.changePage( to, changePageOptions ); - } else { - - //there's no hash, go to the first page in the dom - $.mobile.changePage( $.mobile.firstPage, changePageOptions ); - } - }; - - // TODO roll the logic here into the handleHashChange method - $window.bind( "navigate", function( e, data ) { - var url; - - if ( e.originalEvent && e.originalEvent.isDefaultPrevented() ) { - return; - } - - url = $.event.special.navigate.originalEventName.indexOf( "hashchange" ) > -1 ? data.state.hash : data.state.url; - - if( !url ) { - url = $.mobile.path.parseLocation().hash; - } - - if( !url || url === "#" || url.indexOf( "#" + $.mobile.path.uiStateKey ) === 0 ){ - url = location.href; - } - - $.mobile._handleHashChange( url, data.state ); - }); - - //set page min-heights to be device specific - $.mobile.document.bind( "pageshow", $.mobile.resetActivePageHeight ); - $.mobile.window.bind( "throttledresize", $.mobile.resetActivePageHeight ); - - };//navreadyDeferred done callback - - $( function() { domreadyDeferred.resolve(); } ); - - $.when( domreadyDeferred, $.mobile.navreadyDeferred ).done( function() { $.mobile._registerInternalEvents(); } ); -})( jQuery ); - -/* -* fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.flip = "fade"; - -})( jQuery, this ); -/* -* fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.flow = "fade"; - -})( jQuery, this ); -/* -* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.pop = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -// Use the simultaneous transitions handler for slide transitions -$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; - -// Set the slide transitions's fallback to "fade" -$.mobile.transitionFallbacks.slide = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slidedown = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slidefade in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -// Set the slide transitions's fallback to "fade" -$.mobile.transitionFallbacks.slidefade = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slideup = "fade"; - -})( jQuery, this ); -/* -* fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.turn = "fade"; - -})( jQuery, this ); - -(function( $, undefined ) { - -$.mobile.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 -$.mobile.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: { - closeBtn: "left", - closeBtnText: "Close", - overlayTheme: "a", - corners: true, - initSelector: ":jqmData(role='dialog')" - }, - - // Override the theme set by the page plugin on pageshow - _handlePageBeforeShow: function() { - this._isCloseable = true; - if ( this.options.overlayTheme ) { - this.element - .page( "removeContainerBackground" ) - .page( "setContainerBackground", this.options.overlayTheme ); - } - }, - - _create: function() { - var self = this, - $el = this.element, - cornerClass = !!this.options.corners ? " ui-corner-all" : "", - dialogWrap = $( "
", { - "role" : "dialog", - "class" : "ui-dialog-contain ui-overlay-shadow" + cornerClass - }); - - $el.addClass( "ui-dialog ui-overlay-" + this.options.overlayTheme ); - - // Class the markup for dialog styling - // Set aria role - $el.wrapInner( dialogWrap ); - - /* 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" ); - } - }); - - this._on( $el, { - pagebeforeshow: "_handlePageBeforeShow" - }); - - $.extend( this, { - _createComplete: false - }); - - this._setCloseBtn( this.options.closeBtn ); - }, - - _setCloseBtn: function( value ) { - var self = this, btn, location; - - if ( this._headerCloseButton ) { - this._headerCloseButton.remove(); - this._headerCloseButton = null; - } - if ( value !== "none" ) { - // Sanitize value - location = ( value === "left" ? "left" : "right" ); - btn = $( ""+ this.options.closeBtnText + "" ); - this.element.children().find( ":jqmData(role='header')" ).first().prepend( btn ); - if ( this._createComplete && $.fn.buttonMarkup ) { - btn.buttonMarkup(); - } - this._createComplete = true; - - // 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. - btn.bind( "click", function() { - self.close(); - }); - - this._headerCloseButton = btn; - } - }, - - _setOption: function( key, value ) { - if ( key === "closeBtn" ) { - this._setCloseBtn( value ); - } - this._super( key, value ); - }, - - // Close method goes back in history - close: function() { - var idx, dst, hist = $.mobile.navigate.history; - - if ( this._isCloseable ) { - this._isCloseable = false; - // If the hash listening is enabled and there is at least one preceding history - // entry it's ok to go back. Initial pages with the dialog hash state are an example - // where the stack check is necessary - if ( $.mobile.hashListeningEnabled && hist.activeIndex > 0 ) { - $.mobile.back(); - } else { - idx = Math.max( 0, hist.activeIndex - 1 ); - dst = hist.stack[ idx ].pageUrl || hist.stack[ idx ].url; - hist.previousIndex = hist.activeIndex; - hist.activeIndex = idx; - if ( !$.mobile.path.isPath( dst ) ) { - dst = $.mobile.path.makeUrlAbsolute( "#" + dst ); - } - - $.mobile.changePage( dst, { direction: "back", changeHash: false, fromHashChange: true } ); - } - } - } -}); - -//auto self-init widgets -$.mobile.document.delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function() { - $.mobile.dialog.prototype.enhance( this ); -}); - -})( jQuery, this ); - -(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; - -// NOTE bind used to force this binding to run before the buttonMarkup binding -// which expects .ui-footer top be applied in its gigantic selector -// TODO remove the buttonMarkup giant selector and move it to the various modules -// on which it depends -$.mobile.document.bind( "pagecreate", function( e ) { - var $page = $( e.target ), - o = $page.data( "mobile-page" ).options, - pageRole = $page.jqmData( "role" ), - pageTheme = o.theme; - - $( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", $page ) - .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, button" ); - 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 ) { - -// This function calls getAttribute, which should be safe for data-* attributes -var getAttrFixed = function( e, key ) { - var value = e.getAttribute( key ); - - return value === "true" ? true : - value === "false" ? false : - value === null ? undefined : value; -}; - -$.fn.buttonMarkup = function( options ) { - var $workingSet = this, - nsKey = "data-" + $.mobile.ns, - key; - - // 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 : getAttrFixed( e, nsKey + "icon" ), - iconpos: options.iconpos !== undefined ? options.iconpos : getAttrFixed( e, nsKey + "iconpos" ), - theme: options.theme !== undefined ? options.theme : getAttrFixed( e, nsKey + "theme" ) || $.mobile.getInheritedTheme( el, "c" ), - inline: options.inline !== undefined ? options.inline : getAttrFixed( e, nsKey + "inline" ), - shadow: options.shadow !== undefined ? options.shadow : getAttrFixed( e, nsKey + "shadow" ), - corners: options.corners !== undefined ? options.corners : getAttrFixed( e, nsKey + "corners" ), - iconshadow: options.iconshadow !== undefined ? options.iconshadow : getAttrFixed( e, nsKey + "iconshadow" ), - mini: options.mini !== undefined ? options.mini : getAttrFixed( e, nsKey + "mini" ) - }, options ), - - // Classes Defined - innerClass = "ui-btn-inner", - textClass = "ui-btn-text", - buttonClass, iconClass, - hover = false, - state = "up", - // Button inner markup - buttonInner, - buttonText, - buttonIcon, - buttonElements; - - for ( key in o ) { - if ( o[ key ] === undefined || o[ key ] === null ) { - el.removeAttr( nsKey + key ); - } else { - e.setAttribute( nsKey + key, o[ key ] ); - } - } - - if ( getAttrFixed( e, nsKey + "rel" ) === "popup" && el.attr( "href" ) ) { - e.setAttribute( "aria-haspopup", true ); - e.setAttribute( "aria-owns", el.attr( "href" ) ); - } - - // 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; - hover = buttonElements.hover; - state = buttonElements.state; - } - 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 "; - buttonClass += ( hover ? "ui-btn-hover-" + o.theme : "" ); - buttonClass += ( state ? " ui-btn-" + state + "-" + o.theme : "" ); - 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 === true ? " ui-mini" : " ui-fullsize"; - } - - if ( o.inline !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `inline` style. - buttonClass += o.inline === true ? " ui-btn-inline" : " ui-btn-block"; - } - - 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() ); - } - } - - 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.innerHTML = " "; - 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 = { - hover : hover, - state : state, - 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; -} - -function updateButtonClass( $btn, classToRemove, classToAdd, hover, state ) { - var buttonElements = $.data( $btn[ 0 ], "buttonElements" ); - $btn.removeClass( classToRemove ).addClass( classToAdd ); - if ( buttonElements ) { - buttonElements.bcls = $( document.createElement( "div" ) ) - .addClass( buttonElements.bcls + " " + classToAdd ) - .removeClass( classToRemove ) - .attr( "class" ); - if ( hover !== undefined ) { - buttonElements.hover = hover; - } - buttonElements.state = state; - } -} - -var attachEvents = function() { - var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc; - - $.mobile.document.bind( { - "vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) { - var theme, - $btn = $( closestEnabledButton( event.target ) ), - isTouchEvent = event.originalEvent && /^touch/.test( event.originalEvent.type ), - evt = event.type; - - if ( $btn.length ) { - theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - - if ( evt === "vmousedown" ) { - if ( isTouchEvent ) { - // Use a short delay to determine if the user is scrolling before highlighting - hov = setTimeout( function() { - updateButtonClass( $btn, "ui-btn-up-" + theme, "ui-btn-down-" + theme, undefined, "down" ); - }, hoverDelay ); - } else { - updateButtonClass( $btn, "ui-btn-up-" + theme, "ui-btn-down-" + theme, undefined, "down" ); - } - } else if ( evt === "vmousecancel" || evt === "vmouseup" ) { - updateButtonClass( $btn, "ui-btn-down-" + theme, "ui-btn-up-" + theme, undefined, "up" ); - } else if ( evt === "vmouseover" || evt === "focus" ) { - if ( isTouchEvent ) { - // Use a short delay to determine if the user is scrolling before highlighting - foc = setTimeout( function() { - updateButtonClass( $btn, "ui-btn-up-" + theme, "ui-btn-hover-" + theme, true, "" ); - }, hoverDelay ); - } else { - updateButtonClass( $btn, "ui-btn-up-" + theme, "ui-btn-hover-" + theme, true, "" ); - } - } else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) { - updateButtonClass( $btn, "ui-btn-hover-" + theme + " ui-btn-down-" + theme, "ui-btn-up-" + theme, false, "up" ); - 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 -$.mobile.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 ) - .jqmEnhanceable() - .not( "button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) - .buttonMarkup(); -}); - -})( 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", - collapsedIcon: "plus", - expandedIcon: "minus", - iconpos: "left", - theme: null, - contentTheme: null, - inset: true, - corners: true, - 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( "
" ).children( ".ui-collapsible-content" ), - collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ), - collapsibleClasses = ""; - - // 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" ); - } - - // Get the preference for collapsed icon in the set, but override with data- attribute on the individual collapsible - o.collapsedIcon = $el.jqmData( "collapsed-icon" ) || collapsibleSet.jqmData( "collapsed-icon" ) || o.collapsedIcon; - - // Get the preference for expanded icon in the set, but override with data- attribute on the individual collapsible - o.expandedIcon = $el.jqmData( "expanded-icon" ) || collapsibleSet.jqmData( "expanded-icon" ) || o.expandedIcon; - - // Gets the preference icon position in the set, but override with data- attribute on the individual collapsible - o.iconpos = $el.jqmData( "iconpos" ) || collapsibleSet.jqmData( "iconpos" ) || o.iconpos; - - // Inherit the preference for inset from collapsible-set or set the default value to ensure equalty within a set - if ( collapsibleSet.jqmData( "inset" ) !== undefined ) { - o.inset = collapsibleSet.jqmData( "inset" ); - } else { - o.inset = true; - } - // Set corners for individual collapsibles to false when in a collapsible-set - o.corners = false; - // Gets the preference for mini in the set - if ( !o.mini ) { - o.mini = collapsibleSet.jqmData( "mini" ); - } - } else { - // get inherited theme if not a set and no theme has been set - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( $el, "c" ); - } - } - - if ( !!o.inset ) { - collapsibleClasses += " ui-collapsible-inset"; - if ( !!o.corners ) { - collapsibleClasses += " ui-corner-all" ; - } - } - if ( o.contentTheme ) { - collapsibleClasses += " ui-collapsible-themed-content"; - collapsibleContent.addClass( "ui-body-" + o.contentTheme ); - } - if ( collapsibleClasses !== "" ) { - collapsible.addClass( collapsibleClasses ); - } - - 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: o.iconpos, - icon: o.collapsedIcon, - mini: o.mini, - theme: o.theme - }); - - //events - collapsible - .bind( "expand collapse", function( event ) { - if ( !event.isDefaultPrevented() ) { - var $this = $( this ), - isCollapse = ( event.type === "collapse" ); - - event.preventDefault(); - - 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-" + o.expandedIcon, !isCollapse ) - // logic or cause same icon for expanded/collapsed state would remove the ui-icon-class - .toggleClass( "ui-icon-" + o.collapsedIcon, ( isCollapse || o.expandedIcon === o.collapsedIcon ) ) - .end() - .find( "a" ).first().removeClass( $.mobile.activeBtnClass ); - - $this.toggleClass( "ui-collapsible-collapsed", isCollapse ); - collapsibleContent.toggleClass( "ui-collapsible-content-collapsed", isCollapse ).attr( "aria-hidden", isCollapse ); - - collapsibleContent.trigger( "updatelayout" ); - } - }) - .trigger( o.collapsed ? "collapse" : "expand" ); - - collapsibleHeading - .bind( "tap", function( event ) { - collapsibleHeading.find( "a" ).first().addClass( $.mobile.activeBtnClass ); - }) - .bind( "click", function( event ) { - - var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? "expand" : "collapse"; - - collapsible.trigger( type ); - - event.preventDefault(); - event.stopPropagation(); - }); - } -}); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.collapsible.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.behaviors.addFirstLastClasses = { - _getVisibles: function( $els, create ) { - var visibles; - - if ( create ) { - visibles = $els.not( ".ui-screen-hidden" ); - } else { - visibles = $els.filter( ":visible" ); - if ( visibles.length === 0 ) { - visibles = $els.not( ".ui-screen-hidden" ); - } - } - - return visibles; - }, - - _addFirstLastClasses: function( $els, $visibles, create ) { - $els.removeClass( "ui-first-child ui-last-child" ); - $visibles.eq( 0 ).addClass( "ui-first-child" ).end().last().addClass( "ui-last-child" ); - if ( !create ) { - this.element.trigger( "updatelayout" ); - } - } -}; - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.collapsibleset", $.mobile.widget, $.extend( { - 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" ); - } - // Inherit the corner styling from collapsible-set - if ( !o.corners ) { - o.corners = $el.jqmData( "corners" ); - } - - if ( $el.jqmData( "inset" ) !== undefined ) { - o.inset = $el.jqmData( "inset" ); - } - o.inset = o.inset !== undefined ? o.inset : true; - o.corners = o.corners !== undefined ? o.corners : true; - - if ( !!o.corners && !!o.inset ) { - $el.addClass( "ui-corner-all" ); - } - - // Initialize the collapsible set if it's not already initialized - if ( !$el.jqmData( "collapsiblebound" ) ) { - $el - .jqmData( "collapsiblebound", true ) - .bind( "expand", function( event ) { - var closestCollapsible = $( event.target ) - .closest( ".ui-collapsible" ); - if ( closestCollapsible.parent().is( ":jqmData(role='collapsible-set')" ) ) { - closestCollapsible - .siblings( ".ui-collapsible" ) - .trigger( "collapse" ); - } - }); - } - }, - - _init: function() { - var $el = this.element, - collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" ), - expanded = collapsiblesInSet.filter( ":jqmData(collapsed='false')" ); - this._refresh( "true" ); - - // Because the corners are handled by the collapsible itself and the default state is collapsed - // That was causing https://github.com/jquery/jquery-mobile/issues/4116 - expanded.trigger( "expand" ); - }, - - _refresh: function( create ) { - var collapsiblesInSet = this.element.children( ":jqmData(role='collapsible')" ); - - $.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) ); - - this._addFirstLastClasses( collapsiblesInSet, this._getVisibles( collapsiblesInSet, create ), create ); - }, - - refresh: function() { - this._refresh( false ); - } -}, $.mobile.behaviors.addFirstLastClasses ) ); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.collapsibleset.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -// filter function removes whitespace between label and form element so we can use inline-block (nodeType 3 = text) -$.fn.fieldcontain = function( options ) { - return this - .addClass( "ui-field-contain ui-body ui-br" ) - .contents().filter( function() { - return ( this.nodeType === 3 && !/\S/.test( this.nodeValue ) ); - }).remove(); -}; - -//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"; - $this.addClass( "ui-grid-duo" ); - } - } - iterator = gridCols[grid]; - - $this.addClass( "ui-grid-" + grid ); - - $kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" ); - - if ( iterator > 1 ) { - $kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" ); - } - if ( iterator > 2 ) { - $kids.filter( ":nth-child(" + iterator + "n+3)" ).addClass( "ui-block-c" ); - } - if ( iterator > 3 ) { - $kids.filter( ":nth-child(" + iterator + "n+4)" ).addClass( "ui-block-d" ); - } - if ( iterator > 4 ) { - $kids.filter( ":nth-child(" + iterator + "n+5)" ).addClass( "ui-block-e" ); - } - }); -}; -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.navbar", $.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 ui-mini" ) - .attr( "role", "navigation" ) - .find( "ul" ) - .jqmEnhanceable() - .grid({ grid: this.options.grid }); - - $navbtns.buttonMarkup({ - corners: false, - shadow: false, - inline: true, - iconpos: iconpos - }); - - $navbar.delegate( "a", "vclick", function( event ) { - // ui-btn-inner is returned as target - var target = $( event.target ).is( "a" ) ? $( this ) : $( this ).parent( "a" ); - - if ( !target.is( ".ui-disabled, .ui-btn-active" ) ) { - $navbtns.removeClass( $.mobile.activeBtnClass ); - $( this ).addClass( $.mobile.activeBtnClass ); - - // The code below is a workaround to fix #1181 - var activeBtn = $( this ); - - $( document ).one( "pagehide", function() { - activeBtn.removeClass( $.mobile.activeBtnClass ); - }); - } - }); - - // Buttons in the navbar with ui-state-persist class should regain their active state before page show - $navbar.closest( ".ui-page" ).bind( "pagebeforeshow", function() { - $navbtns.filter( ".ui-state-persist" ).addClass( $.mobile.activeBtnClass ); - }); - } -}); - -//auto self-init widgets -$.mobile.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, $.extend( { - - options: { - theme: null, - countTheme: "c", - headerTheme: "b", - dividerTheme: "b", - icon: "arrow-r", - splitIcon: "arrow-r", - splitTheme: "b", - corners: true, - shadow: true, - inset: false, - initSelector: ":jqmData(role='listview')" - }, - - _create: function() { - var t = this, - listviewClasses = ""; - - listviewClasses += t.options.inset ? " ui-listview-inset" : ""; - - if ( !!t.options.inset ) { - listviewClasses += t.options.corners ? " ui-corner-all" : ""; - listviewClasses += t.options.shadow ? " ui-shadow" : ""; - } - - // create listview markup - t.element.addClass(function( i, orig ) { - return orig + " ui-listview" + listviewClasses; - }); - - t.refresh( true ); - }, - - // 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" ), - listicon = $list.jqmData( "icon" ), - li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), - ol = !!$.nodeName( $list[ 0 ], "ol" ), - jsCount = !$.support.cssPseudoElement, - start = $list.attr( "start" ), - itemClassDict = {}, - item, itemClass, itemTheme, - a, last, splittheme, counter, startCount, newStartCount, countParent, icon, imgParents, img, linkIcon; - - if ( ol && jsCount ) { - $list.find( ".ui-li-dec" ).remove(); - } - - if ( ol ) { - // Check if a start attribute has been set while taking a value of 0 into account - if ( start || start === 0 ) { - if ( !jsCount ) { - startCount = parseInt( start , 10 ) - 1; - $list.css( "counter-reset", "listnumbering " + startCount ); - } else { - counter = parseInt( start , 10 ); - } - } else if ( jsCount ) { - counter = 1; - } - } - - 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" ); - var isDivider = ( item.jqmData( "role" ) === "list-divider" ); - - if ( a.length && !isDivider ) { - icon = item.jqmData( "icon" ); - - item.buttonMarkup({ - wrapperEls: "div", - shadow: false, - corners: false, - iconpos: "right", - icon: a.length > 1 || icon === false ? false : icon || listicon || o.icon, - 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", $.trim(last.getEncodedText()) ) - .addClass( "ui-li-link-alt" ) - .empty() - .buttonMarkup({ - shadow: false, - corners: false, - theme: itemTheme, - icon: false, - iconpos: "notext" - }) - .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 ( isDivider ) { - - itemClass += " ui-li-divider ui-bar-" + ( item.jqmData( "theme" ) || dividertheme ); - item.attr( "role", "heading" ); - - if ( ol ) { - //reset counter when a divider heading is encountered - if ( start || start === 0 ) { - if ( !jsCount ) { - newStartCount = parseInt( start , 10 ) - 1; - item.css( "counter-reset", "listnumbering " + newStartCount ); - } else { - counter = parseInt( start , 10 ); - } - } else if ( jsCount ) { - counter = 1; - } - } - - } else { - itemClass += " ui-li-static ui-btn-up-" + itemTheme; - } - } - - if ( ol && jsCount && itemClass.indexOf( "ui-li-divider" ) < 0 ) { - countParent = itemClass.indexOf( "ui-li-static" ) > 0 ? 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._addFirstLastClasses( li, this._getVisibles( li, create ), create ); - // autodividers binds to this to redraw dividers after the listview refresh - this._trigger( "afterrefresh" ); - }, - - //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(), - nodeElsFull = $( list.prevAll().toArray().reverse() ), - nodeEls = nodeElsFull.length ? nodeElsFull : $( "" + $.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( "mobile-page" ).options.domCache === false ) { - - var newRemove = function( e, ui ) { - var nextPage = ui.nextPage, npURL, - prEvent = new $.Event( "pageremove" ); - - if ( ui.nextPage ) { - npURL = nextPage.jqmData( "url" ); - if ( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ) { - self.childPages().remove(); - parentPage.trigger( prEvent ); - if ( !prEvent.isDefaultPrevented() ) { - parentPage.removeWithDependents(); - } - } - } - }; - - // 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 + "')" ); - } -}, $.mobile.behaviors.addFirstLastClasses ) ); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.listview.prototype.enhanceWithin( e.target ); -}); - -})( 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, - mini: false, - // 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]), input[type='file']", - clearBtn: false, - clearSearchButtonText: null, //deprecating for 1.3... - clearBtnText: "clear text", - disabled: false - }, - - _create: function() { - - var self = this, - input = this.element, - o = this.options, - theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ), - themeclass = " ui-body-" + theme, - miniclass = o.mini ? " ui-mini" : "", - isSearch = input.is( "[type='search'], :jqmData(type='search')" ), - focusedEl, - clearbtn, - clearBtnText = o.clearSearchButtonText || o.clearBtnText, - clearBtnBlacklist = input.is( "textarea, :jqmData(type='range')" ), - inputNeedsClearBtn = !!o.clearBtn && !clearBtnBlacklist, - inputNeedsWrap = input.is( "input" ) && !input.is( ":jqmData(type='range')" ); - - function toggleClear() { - setTimeout( function() { - clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); - }, 0 ); - } - - $( "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" and "text" input widgets - if ( isSearch ) { - focusedEl = input.wrap( "" ).parent(); - } else if ( inputNeedsWrap ) { - focusedEl = input.wrap( "
" ).parent(); - } - - if( inputNeedsClearBtn || isSearch ) { - clearbtn = $( "
" + clearBtnText + "" ) - .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: o.mini - }); - - if ( !isSearch ) { - focusedEl.addClass( "ui-input-has-clear" ); - } - - toggleClear(); - - input.bind( "paste cut keyup input focus change blur", toggleClear ); - } - else if ( !inputNeedsWrap && !isSearch ) { - input.addClass( "ui-corner-all ui-shadow-inset" + themeclass + miniclass ); - } - - input.focus(function() { - // In many situations, iOS will zoom into the input upon tap, this prevents that from happening - if ( o.preventFocusZoom ) { - $.mobile.zoom.disable( true ); - } - focusedEl.addClass( $.mobile.focusClass ); - }) - .blur(function() { - focusedEl.removeClass( $.mobile.focusClass ); - if ( o.preventFocusZoom ) { - $.mobile.zoom.enable( true ); - } - }); - - // Autogrow - if ( input.is( "textarea" ) ) { - var extraLineHeight = 15, - keyupTimeoutBuffer = 100, - keyupTimeout; - - this._keyup = function() { - var scrollHeight = input[ 0 ].scrollHeight, - clientHeight = input[ 0 ].clientHeight; - - if ( clientHeight < scrollHeight ) { - var paddingTop = parseFloat( input.css( "padding-top" ) ), - paddingBottom = parseFloat( input.css( "padding-bottom" ) ), - paddingHeight = paddingTop + paddingBottom; - - input.height( scrollHeight - paddingHeight + extraLineHeight ); - } - }; - - input.on( "keyup change input paste", function() { - clearTimeout( keyupTimeout ); - keyupTimeout = setTimeout( self._keyup, keyupTimeoutBuffer ); - }); - - // binding to pagechange here ensures that for pages loaded via - // ajax the height is recalculated without user input - this._on( true, $.mobile.document, { "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 - this._on( true, $.mobile.window, {"load": "_keyup"}); - } - } - if ( input.attr( "disabled" ) ) { - this.disable(); - } - }, - - disable: function() { - var $el, - isSearch = this.element.is( "[type='search'], :jqmData(type='search')" ), - inputNeedsWrap = this.element.is( "input" ) && !this.element.is( ":jqmData(type='range')" ), - parentNeedsDisabled = this.element.attr( "disabled", true ) && ( inputNeedsWrap || isSearch ); - - if ( parentNeedsDisabled ) { - $el = this.element.parent(); - } else { - $el = this.element; - } - $el.addClass( "ui-disabled" ); - return this._setOption( "disabled", true ); - }, - - enable: function() { - var $el, - isSearch = this.element.is( "[type='search'], :jqmData(type='search')" ), - inputNeedsWrap = this.element.is( "input" ) && !this.element.is( ":jqmData(type='range')" ), - parentNeedsEnabled = this.element.attr( "disabled", false ) && ( inputNeedsWrap || isSearch ); - - if ( parentNeedsEnabled ) { - $el = this.element.parent(); - } else { - $el = this.element; - } - $el.removeClass( "ui-disabled" ); - return this._setOption( "disabled", false ); - } -}); - -//auto self-init widgets -$.mobile.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.filterReveal = false; -// TODO rename callback/deprecate and default to the item itself as the first argument -var defaultFilterCallback = function( text, searchValue, item ) { - return text.toString().toLowerCase().indexOf( searchValue ) === -1; - }; - -$.mobile.listview.prototype.options.filterCallback = defaultFilterCallback; - -$.mobile.document.delegate( "ul, ol", "listviewcreate", function() { - var list = $( this ), - listview = list.data( "mobile-listview" ); - - if ( !listview || !listview.options.filter ) { - return; - } - - if ( listview.options.filterReveal ) { - list.children().addClass( "ui-screen-hidden" ); - } - - var wrapper = $( "
", { - "class": "ui-listview-filter ui-bar-" + listview.options.filterTheme, - "role": "search" - }).submit( function( e ) { - e.preventDefault(); - search.blur(); - }), - onKeyUp = function( e ) { - var $this = $( this ), - val = this.value.toLowerCase(), - listItems = null, - li = list.children(), - lastval = $this.jqmData( "lastval" ) + "", - childItems = false, - itemtext = "", - item, - // Check if a custom filter callback applies - isCustomFilterCallback = listview.options.filterCallback !== defaultFilterCallback; - - if ( lastval && lastval === val ) { - // Execute the handler only once per value change - return; - } - - listview._trigger( "beforefilter", "beforefilter", { input: this } ); - - // Change val as lastval for next execution - $this.jqmData( "lastval" , val ); - if ( isCustomFilterCallback || val.length < lastval.length || val.indexOf( lastval ) !== 0 ) { - - // Custom filter callback applies or 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 ( !listItems.length && listview.options.filterReveal ) { - listItems = list.children( ".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, item ) ) { - - //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", !!listview.options.filterReveal ); - } - listview._addFirstLastClasses( li, listview._getVisibles( li, false ), false ); - }, - search = $( "", { - placeholder: listview.options.filterPlaceholder - }) - .attr( "data-" + $.mobile.ns + "type", "search" ) - .jqmData( "lastval", "" ) - .bind( "keyup change input", onKeyUp ) - .appendTo( wrapper ) - .textinput(); - - if ( listview.options.inset ) { - wrapper.addClass( "ui-listview-filter-inset" ); - } - - wrapper.bind( "submit", function() { - return false; - }) - .insertBefore( list ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.listview.prototype.options.autodividers = false; -$.mobile.listview.prototype.options.autodividersSelector = function( elt ) { - // look for the text in the given element - var text = $.trim( elt.text() ) || null; - - if ( !text ) { - return null; - } - - // create the text for the divider (first uppercased letter) - text = text.slice( 0, 1 ).toUpperCase(); - - return text; -}; - -$.mobile.document.delegate( "ul,ol", "listviewcreate", function() { - - var list = $( this ), - listview = list.data( "mobile-listview" ); - - if ( !listview || !listview.options.autodividers ) { - return; - } - - var replaceDividers = function () { - list.find( "li:jqmData(role='list-divider')" ).remove(); - - var lis = list.find( 'li' ), - lastDividerText = null, li, dividerText; - - for ( var i = 0; i < lis.length ; i++ ) { - li = lis[i]; - dividerText = listview.options.autodividersSelector( $( li ) ); - - if ( dividerText && lastDividerText !== dividerText ) { - var divider = document.createElement( 'li' ); - divider.appendChild( document.createTextNode( dividerText ) ); - divider.setAttribute( 'data-' + $.mobile.ns + 'role', 'list-divider' ); - li.parentNode.insertBefore( divider, li ); - } - - lastDividerText = dividerText; - } - }; - - var afterListviewRefresh = function () { - list.unbind( 'listviewafterrefresh', afterListviewRefresh ); - replaceDividers(); - listview.refresh(); - list.bind( 'listviewafterrefresh', afterListviewRefresh ); - }; - - afterListviewRefresh(); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$( document ).bind( "pagecreate create", function( e ) { - $( ":jqmData(role='nojs')", e.target ).addClass( "ui-nojs" ); - -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.behaviors.formReset = { - _handleFormReset: function() { - this._on( this.element.closest( "form" ), { - reset: function() { - this._delay( "_reset" ); - } - }); - } -}; - -})( jQuery ); - -/* -* "checkboxradio" plugin -*/ - -(function( $, undefined ) { - -$.widget( "mobile.checkboxradio", $.mobile.widget, $.extend( { - options: { - theme: null, - mini: false, - initSelector: "input[type='checkbox'],input[type='radio']" - }, - _create: function() { - var self = this, - input = this.element, - o = this.options, - 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 + "']" ).first(), - inputtype = input[0].type, - mini = inheritAttr( input, "mini" ) || o.mini, - checkedState = inputtype + "-on", - uncheckedState = inputtype + "-off", - iconpos = inheritAttr( input, "iconpos" ), - checkedClass = "ui-" + checkedState, - uncheckedClass = "ui-" + uncheckedState; - - if ( inputtype !== "checkbox" && inputtype !== "radio" ) { - return; - } - - // Expose for other methods - $.extend( this, { - label: label, - inputtype: inputtype, - checkedClass: checkedClass, - uncheckedClass: uncheckedClass, - checkedicon: checkedState, - uncheckedicon: uncheckedState - }); - - // If there's no selected theme check the data attr - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - label.buttonMarkup({ - theme: o.theme, - icon: uncheckedState, - 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._handleFormReset(); - 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, :jqmData(role='page'), :jqmData(role='dialog')" ) - .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" ); - }, - - _reset: function() { - this.refresh(); - }, - - refresh: function() { - var input = this.element[ 0 ], - active = " " + $.mobile.activeBtnClass, - checkedClass = this.checkedClass + ( this.element.parents( ".ui-controlgroup-horizontal" ).length ? active : "" ), - label = this.label; - - if ( input.checked ) { - label.removeClass( this.uncheckedClass + active ).addClass( checkedClass ).buttonMarkup( { icon: this.checkedicon } ); - } else { - label.removeClass( checkedClass ).addClass( this.uncheckedClass ).buttonMarkup( { icon: 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" ); - } -}, $.mobile.behaviors.formReset ) ); - -//auto self-init widgets -$.mobile.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, - corners: true, - shadow: true, - iconshadow: true, - inline: null, - mini: null, - initSelector: "button, [type='button'], [type='submit'], [type='reset']" - }, - _create: function() { - var $el = this.element, - $button, - // create a copy of this.options we can pass to buttonMarkup - o = ( function( tdo ) { - var key, ret = {}; - - for ( key in tdo ) { - if ( tdo[ key ] !== null && key !== "initSelector" ) { - ret[ key ] = tdo[ key ]; - } - } - - return ret; - } )( this.options ), - 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" ) { - if ( !$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"; - } - - if ( $el.attr( "type" ) === "submit" || $el.attr( "type" ) === "reset" ) { - if ( classes ) { - classes += " ui-submit"; - } else { - classes = "ui-submit"; - } - } - $( "label[for='" + $el.attr( "id" ) + "']" ).addClass( "ui-submit" ); - - // Add ARIA role - this.button = $( "
" ) - [ $el.html() ? "html" : "text" ]( $el.html() || $el.val() ) - .insertBefore( $el ) - .buttonMarkup( o ) - .addClass( classes ) - .append( $el.addClass( "ui-btn-hidden" ) ); - - $button = this.button; - - $el.bind({ - focus: function() { - $button.addClass( $.mobile.focusClass ); - }, - - blur: function() { - $button.removeClass( $.mobile.focusClass ); - } - }); - - this.refresh(); - }, - - _setOption: function( key, value ) { - var op = {}; - - op[ key ] = value; - if ( key !== "initSelector" ) { - this.button.buttonMarkup( op ); - // Record the option change in the options and in the DOM data-* attributes - this.element.attr( "data-" + ( $.mobile.ns || "" ) + ( key.replace( /([A-Z])/, "-$1" ).toLowerCase() ), value ); - } - this._super( "_setOption", key, value ); - }, - - 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 )[ $el.html() ? "html" : "text" ]( $el.html() || $el.val() ); - } -}); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.button.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.slider", $.mobile.widget, $.extend( { - widgetEventPrefix: "slide", - - options: { - theme: null, - trackTheme: null, - disabled: false, - initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')", - mini: false, - highlight: 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(), - isSelect = this.isToggleSwitch = cType === "select", - isRangeslider = control.parent().is( ":jqmData(role='rangeslider')" ), - selectClass = ( this.isToggleSwitch ) ? "ui-slider-switch" : "", - controlID = control.attr( "id" ), - $label = $( "[for='" + controlID + "']" ), - labelID = $label.attr( "id" ) || controlID + "-label", - label = $label.attr( "id", labelID ), - min = !this.isToggleSwitch ? parseFloat( control.attr( "min" ) ) : 0, - max = !this.isToggleSwitch ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, - step = window.parseFloat( control.attr( "step" ) || 1 ), - miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-mini" : "", - domHandle = document.createElement( "a" ), - handle = $( domHandle ), - domSlider = document.createElement( "div" ), - slider = $( domSlider ), - valuebg = this.options.highlight && !this.isToggleSwitch ? (function() { - var bg = document.createElement( "div" ); - bg.className = "ui-slider-bg " + $.mobile.activeBtnClass + " ui-btn-corner-all"; - return $( bg ).prependTo( slider ); - })() : false, - options, - wrapper; - - domHandle.setAttribute( "href", "#" ); - domSlider.setAttribute( "role", "application" ); - domSlider.className = [this.isToggleSwitch ? "ui-slider " : "ui-slider-track ",selectClass," ui-btn-down-",trackTheme," ui-btn-corner-all", 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": this._value(), - "aria-valuetext": this._value(), - "title": this._value(), - "aria-labelledby": labelID - }); - - $.extend( this, { - slider: slider, - handle: handle, - type: cType, - step: step, - max: max, - min: min, - valuebg: valuebg, - isRangeslider: isRangeslider, - dragging: false, - beforeStart: null, - userModified: false, - mouseMoved: false - }); - - if ( this.isToggleSwitch ) { - 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( this.isToggleSwitch ? "ui-slider-switch" : "ui-slider-input" ); - - this._on( control, { - "change": "_controlChange", - "keyup": "_controlKeyup", - "blur": "_controlBlur", - "vmouseup": "_controlVMouseUp" - }); - - slider.bind( "vmousedown", $.proxy( this._sliderVMouseDown, this ) ) - .bind( "vclick", false ); - - // We have to instantiate a new function object for the unbind to work properly - // since the method itself is defined in the prototype (causing it to unbind everything) - this._on( document, { "vmousemove": "_preventDocumentDrag" }); - this._on( slider.add( document ), { "vmouseup": "_sliderVMouseUp" }); - - slider.insertAfter( control ); - - // wrap in a div for styling purposes - if ( !this.isToggleSwitch && !isRangeslider ) { - wrapper = this.options.mini ? "
" : "
"; - - control.add( slider ).wrapAll( wrapper ); - } - - // Only add focus class to toggle switch, sliders get it automatically from ui-btn - if ( this.isToggleSwitch ) { - this.handle.bind({ - focus: function() { - slider.addClass( $.mobile.focusClass ); - }, - - blur: function() { - slider.removeClass( $.mobile.focusClass ); - } - }); - } - - // bind the handle event callbacks and set the context to the widget instance - this._on( this.handle, { - "vmousedown": "_handleVMouseDown", - "keydown": "_handleKeydown", - "keyup": "_handleKeyup" - }); - - this.handle.bind( "vclick", false ); - - this._handleFormReset(); - - this.refresh( undefined, undefined, true ); - }, - - _controlChange: function( event ) { - // if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again - if ( this._trigger( "controlchange", event ) === false ) { - return false; - } - if ( !this.mouseMoved ) { - this.refresh( this._value(), true ); - } - }, - - _controlKeyup: function( event ) { // necessary? - this.refresh( this._value(), true, true ); - }, - - _controlBlur: function( event ) { - this.refresh( this._value(), true ); - }, - - // it appears the clicking the up and down buttons in chrome on - // range/number inputs doesn't trigger a change until the field is - // blurred. Here we check thif the value has changed and refresh - _controlVMouseUp: function( event ) { - this._checkedRefresh(); - }, - - // NOTE force focus on handle - _handleVMouseDown: function( event ) { - this.handle.focus(); - }, - - _handleKeydown: function( event ) { - var index = this._value(); - if ( this.options.disabled ) { - return; - } - - // In all cases prevent the default and mark the handle as active - switch ( event.keyCode ) { - case $.mobile.keyCode.HOME: - case $.mobile.keyCode.END: - case $.mobile.keyCode.PAGE_UP: - case $.mobile.keyCode.PAGE_DOWN: - case $.mobile.keyCode.UP: - case $.mobile.keyCode.RIGHT: - case $.mobile.keyCode.DOWN: - case $.mobile.keyCode.LEFT: - event.preventDefault(); - - if ( !this._keySliding ) { - this._keySliding = true; - this.handle.addClass( "ui-state-active" ); - } - - break; - } - - // move the slider according to the keypress - switch ( event.keyCode ) { - case $.mobile.keyCode.HOME: - this.refresh( this.min ); - break; - case $.mobile.keyCode.END: - this.refresh( this.max ); - break; - case $.mobile.keyCode.PAGE_UP: - case $.mobile.keyCode.UP: - case $.mobile.keyCode.RIGHT: - this.refresh( index + this.step ); - break; - case $.mobile.keyCode.PAGE_DOWN: - case $.mobile.keyCode.DOWN: - case $.mobile.keyCode.LEFT: - this.refresh( index - this.step ); - break; - } - }, // remove active mark - - _handleKeyup: function( event ) { - if ( this._keySliding ) { - this._keySliding = false; - this.handle.removeClass( "ui-state-active" ); - } - }, - - _sliderVMouseDown: function( event ) { - // NOTE: we don't do this in refresh because we still want to - // support programmatic alteration of disabled inputs - if ( this.options.disabled || !( event.which === 1 || event.which === 0 ) ) { - return false; - } - if ( this._trigger( "beforestart", event ) === false ) { - return false; - } - this.dragging = true; - this.userModified = false; - this.mouseMoved = false; - - if ( this.isToggleSwitch ) { - this.beforeStart = this.element[0].selectedIndex; - } - - - this.refresh( event ); - this._trigger( "start" ); - return false; - }, - - _sliderVMouseUp: function() { - if ( this.dragging ) { - this.dragging = false; - - if ( this.isToggleSwitch ) { - // make the handle move with a smooth transition - this.handle.addClass( "ui-slider-handle-snapping" ); - - if ( this.mouseMoved ) { - // this is a drag, change the value only if user dragged enough - if ( this.userModified ) { - this.refresh( this.beforeStart === 0 ? 1 : 0 ); - } else { - this.refresh( this.beforeStart ); - } - } else { - // this is just a click, change the value - this.refresh( this.beforeStart === 0 ? 1 : 0 ); - } - } - - this.mouseMoved = false; - this._trigger( "stop" ); - return false; - } - }, - - _preventDocumentDrag: function( event ) { - // NOTE: we don't do this in refresh because we still want to - // support programmatic alteration of disabled inputs - if ( this._trigger( "drag", event ) === false) { - return false; - } - if ( this.dragging && !this.options.disabled ) { - - // this.mouseMoved must be updated before refresh() because it will be used in the control "change" event - this.mouseMoved = true; - - if ( this.isToggleSwitch ) { - // make the handle move in sync with the mouse - this.handle.removeClass( "ui-slider-handle-snapping" ); - } - - this.refresh( event ); - - // only after refresh() you can calculate this.userModified - this.userModified = this.beforeStart !== this.element[0].selectedIndex; - return false; - } - }, - - _checkedRefresh: function() { - if ( this.value !== this._value() ) { - this.refresh( this._value() ); - } - }, - - _value: function() { - return this.isToggleSwitch ? this.element[0].selectedIndex : parseFloat( this.element.val() ) ; - }, - - - _reset: function() { - this.refresh( undefined, false, true ); - }, - - refresh: function( val, isfromControl, preventInputUpdate ) { - // NOTE: we don't return here because we want to support programmatic - // alteration of the input value, which should still update the slider - - var self = this, - parentTheme = $.mobile.getInheritedTheme( this.element, "c" ), - theme = this.options.theme || parentTheme, - trackTheme = this.options.trackTheme || parentTheme, - left, width, data, tol; - - self.slider[0].className = [ this.isToggleSwitch ? "ui-slider ui-slider-switch" : "ui-slider-track"," ui-btn-down-" + trackTheme,' ui-btn-corner-all', ( this.options.mini ) ? " ui-mini":""].join( "" ); - if ( this.options.disabled || this.element.attr( "disabled" ) ) { - this.disable(); - } - - // set the stored value for comparison later - this.value = this._value(); - if ( this.options.highlight && !this.isToggleSwitch && this.slider.find( ".ui-slider-bg" ).length === 0 ) { - this.valuebg = (function() { - var bg = document.createElement( "div" ); - bg.className = "ui-slider-bg " + $.mobile.activeBtnClass + " ui-btn-corner-all"; - return $( bg ).prependTo( self.slider ); - })(); - } - this.handle.buttonMarkup({ corners: true, theme: theme, shadow: true }); - - var pxStep, percent, - control = this.element, - isInput = !this.isToggleSwitch, - optionElements = isInput ? [] : control.find( "option" ), - min = isInput ? parseFloat( control.attr( "min" ) ) : 0, - max = isInput ? parseFloat( control.attr( "max" ) ) : optionElements.length - 1, - step = ( isInput && parseFloat( control.attr( "step" ) ) > 0 ) ? parseFloat( control.attr( "step" ) ) : 1; - - if ( typeof val === "object" ) { - data = val; - // a slight tolerance helped get to the ends of the slider - tol = 8; - - left = this.slider.offset().left; - width = this.slider.width(); - pxStep = width/((max-min)/step); - if ( !this.dragging || - data.pageX < left - tol || - data.pageX > left + width + tol ) { - return; - } - if ( pxStep > 1 ) { - percent = ( ( data.pageX - left ) / width ) * 100; - } else { - percent = Math.round( ( ( data.pageX - left ) / width ) * 100 ); - } - } else { - if ( val == null ) { - val = isInput ? parseFloat( control.val() || 0 ) : control[0].selectedIndex; - } - percent = ( parseFloat( val ) - min ) / ( max - min ) * 100; - } - - if ( isNaN( percent ) ) { - return; - } - - 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 ); - } - - var percentPerStep = 100/((max-min)/step); - // Since JavaScript has problems with large floats, round - // the final value to 5 digits after the decimal point (see jQueryUI: #4124) - newval = parseFloat( alignValue.toFixed(5) ); - - if ( typeof pxStep === "undefined" ) { - pxStep = width / ( (max-min) / step ); - } - if ( pxStep > 1 && isInput ) { - percent = ( newval - min ) * percentPerStep * ( 1 / step ); - } - if ( percent < 0 ) { - percent = 0; - } - - if ( percent > 100 ) { - percent = 100; - } - - if ( newval < min ) { - newval = min; - } - - if ( newval > max ) { - newval = max; - } - - this.handle.css( "left", percent + "%" ); - - this.handle[0].setAttribute( "aria-valuenow", isInput ? newval : optionElements.eq( newval ).attr( "value" ) ); - - this.handle[0].setAttribute( "aria-valuetext", isInput ? newval : optionElements.eq( newval ).getEncodedText() ); - - this.handle[0].setAttribute( "title", isInput ? newval : optionElements.eq( newval ).getEncodedText() ); - - if ( this.valuebg ) { - this.valuebg.css( "width", percent + "%" ); - } - - // drag the label widths - if ( this._labels ) { - 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 ( isInput ) { - valueChanged = control.val() !== newval; - control.val( newval ); - } else { - valueChanged = control[ 0 ].selectedIndex !== newval; - control[ 0 ].selectedIndex = newval; - } - if ( this._trigger( "beforechange", val ) === false) { - return false; - } - if ( !isfromControl && valueChanged ) { - control.trigger( "change" ); - } - } - }, - - 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 ); - } - -}, $.mobile.behaviors.formReset ) ); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.slider.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - $.widget( "mobile.rangeslider", $.mobile.widget, { - - options: { - theme: null, - trackTheme: null, - disabled: false, - initSelector: ":jqmData(role='rangeslider')", - mini: false, - highlight: true - }, - - _create: function() { - var secondLabel, - $el = this.element, - elClass = this.options.mini ? "ui-rangeslider ui-mini" : "ui-rangeslider", - _inputFirst = $el.find( "input" ).first(), - _inputLast = $el.find( "input" ).last(), - label = $el.find( "label" ).first(), - _sliderFirst = $.data( _inputFirst.get(0), "mobileSlider" ).slider, - _sliderLast = $.data( _inputLast.get(0), "mobileSlider" ).slider, - firstHandle = $.data( _inputFirst.get(0), "mobileSlider" ).handle, - _sliders = $( "
" ).appendTo( $el ); - - if ( $el.find( "label" ).length > 1 ) { - secondLabel = $el.find( "label" ).last().hide(); - } - - _inputFirst.addClass( "ui-rangeslider-first" ); - _inputLast.addClass( "ui-rangeslider-last" ); - $el.addClass( elClass ); - - _sliderFirst.appendTo( _sliders ); - _sliderLast.appendTo( _sliders ); - label.prependTo( $el ); - firstHandle.prependTo( _sliderLast ); - - $.extend( this, { - _inputFirst: _inputFirst, - _inputLast: _inputLast, - _sliderFirst: _sliderFirst, - _sliderLast: _sliderLast, - _targetVal: null, - _sliderTarget: false, - _sliders: _sliders, - _proxy: false - }); - - this.refresh(); - this._on( this.element.find( "input.ui-slider-input" ), { - "slidebeforestart": "_slidebeforestart", - "slidestop": "_slidestop", - "slidedrag": "_slidedrag", - "slidebeforechange": "_change", - "blur": "_change", - "keyup": "_change" - }); - this._on({ - "mousedown":"_change" - }); - this._on( this.element.closest( "form" ), { - "reset":"_handleReset" - }); - this._on( firstHandle, { - "vmousedown": "_dragFirstHandle" - }); - }, - _handleReset: function(){ - var self = this; - //we must wait for the stack to unwind before updateing other wise sliders will not have updated yet - setTimeout( function(){ - self._updateHighlight(); - },0); - }, - - _dragFirstHandle: function( event ) { - //if the first handle is dragged send the event to the first slider - $.data( this._inputFirst.get(0), "mobileSlider" ).dragging = true; - $.data( this._inputFirst.get(0), "mobileSlider" ).refresh( event ); - return false; - }, - - _slidedrag: function( event ) { - var first = $( event.target ).is( this._inputFirst ), - otherSlider = ( first ) ? this._inputLast : this._inputFirst; - - this._sliderTarget = false; - //if the drag was initiated on an extreme and the other handle is focused send the events to - //the closest handle - if ( ( this._proxy === "first" && first ) || ( this._proxy === "last" && !first ) ) { - $.data( otherSlider.get(0), "mobileSlider" ).dragging = true; - $.data( otherSlider.get(0), "mobileSlider" ).refresh( event ); - return false; - } - }, - - _slidestop: function( event ) { - var first = $( event.target ).is( this._inputFirst ); - - this._proxy = false; - //this stops dragging of the handle and brings the active track to the front - //this makes clicks on the track go the the last handle used - this.element.find( "input" ).trigger( "vmouseup" ); - this._sliderFirst.css( "z-index", first ? 1 : "" ); - }, - - _slidebeforestart: function( event ) { - this._sliderTarget = false; - //if the track is the target remember this and the original value - if ( $( event.originalEvent.target ).hasClass( "ui-slider-track" ) ) { - this._sliderTarget = true; - this._targetVal = $( event.target ).val(); - } - }, - - _setOption: function( options ) { - this._superApply( options ); - this.refresh(); - }, - - refresh: function() { - var $el = this.element, - o = this.options; - - $el.find( "input" ).slider({ - theme: o.theme, - trackTheme: o.trackTheme, - disabled: o.disabled, - mini: o.mini, - highlight: o.highlight - }).slider( "refresh" ); - this._updateHighlight(); - }, - - _change: function( event ) { - if ( event.type === "keyup" ) { - this._updateHighlight(); - return false; - } - - var self = this, - min = parseFloat( this._inputFirst.val(), 10 ), - max = parseFloat( this._inputLast.val(), 10 ), - first = $( event.target ).hasClass( "ui-rangeslider-first" ), - thisSlider = first ? this._inputFirst : this._inputLast, - otherSlider = first ? this._inputLast : this._inputFirst; - - - if( ( this._inputFirst.val() > this._inputLast.val() && event.type === "mousedown" && !$(event.target).hasClass("ui-slider-handle")) ){ - thisSlider.blur(); - } else if( event.type === "mousedown" ){ - return; - } - if ( min > max && !this._sliderTarget ) { - //this prevents min from being greater then max - thisSlider.val( first ? max: min ).slider( "refresh" ); - this._trigger( "normalize" ); - } else if ( min > max ) { - //this makes it so clicks on the target on either extreme go to the closest handle - thisSlider.val( this._targetVal ).slider( "refresh" ); - - //You must wait for the stack to unwind so first slider is updated before updating second - setTimeout( function() { - otherSlider.val( first ? min: max ).slider( "refresh" ); - $.data( otherSlider.get(0), "mobileSlider" ).handle.focus(); - self._sliderFirst.css( "z-index", first ? "" : 1 ); - self._trigger( "normalize" ); - }, 0 ); - this._proxy = ( first ) ? "first" : "last"; - } - //fixes issue where when both _sliders are at min they cannot be adjusted - if ( min === max ) { - $.data( thisSlider.get(0), "mobileSlider" ).handle.css( "z-index", 1 ); - $.data( otherSlider.get(0), "mobileSlider" ).handle.css( "z-index", 0 ); - } else { - $.data( otherSlider.get(0), "mobileSlider" ).handle.css( "z-index", "" ); - $.data( thisSlider.get(0), "mobileSlider" ).handle.css( "z-index", "" ); - } - - this._updateHighlight(); - - if ( min >= max ) { - return false; - } - }, - - _updateHighlight: function() { - var min = parseInt( $.data( this._inputFirst.get(0), "mobileSlider" ).handle.get(0).style.left, 10 ), - max = parseInt( $.data( this._inputLast.get(0), "mobileSlider" ).handle.get(0).style.left, 10 ), - width = (max - min); - - this.element.find( ".ui-slider-bg" ).css({ - "margin-left": min + "%", - "width": width + "%" - }); - }, - - _destroy: function() { - this.element.removeClass( "ui-rangeslider ui-mini" ).find( "label" ).show(); - this._inputFirst.after( this._sliderFirst ); - this._inputLast.after( this._sliderLast ); - this._sliders.remove(); - this.element.find( "input" ).removeClass( "ui-rangeslider-first ui-rangeslider-last" ).slider( "destroy" ); - } - - }); - -$.widget( "mobile.rangeslider", $.mobile.rangeslider, $.mobile.behaviors.formReset ); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { - $.mobile.rangeslider.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.selectmenu", $.mobile.widget, $.extend( { - options: { - theme: null, - disabled: false, - icon: "arrow-d", - iconpos: "right", - inline: false, - corners: true, - shadow: true, - iconshadow: true, - overlayTheme: "a", - dividerTheme: "b", - 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.removeClass( "ui-btn-left ui-btn-right" ).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" ); - } - }, - - _destroy: function() { - var wrapper = this.element.parents( ".ui-select" ); - if ( wrapper.length > 0 ) { - if ( wrapper.is( ".ui-btn-left, .ui-btn-right" ) ) { - this.element.addClass( wrapper.is( ".ui-btn-left" ) ? "ui-btn-left" : "ui-btn-right" ); - } - this.element.insertAfter( wrapper ); - wrapper.remove(); - } - }, - - _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, - - inline = options.inline || this.select.jqmData( "inline" ), - mini = options.mini || this.select.jqmData( "mini" ), - iconpos = options.icon ? ( options.iconpos || this.select.jqmData( "iconpos" ) ) : false, - - // 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 - .insertBefore( this.select ) - .buttonMarkup( { - theme: options.theme, - icon: options.icon, - iconpos: iconpos, - inline: inline, - corners: options.corners, - shadow: options.shadow, - iconshadow: options.iconshadow, - mini: mini - }); - - this.setButtonText(); - - // Opera does not properly support opacity on select elements - // In Mini, it hides the element, but not its text - // On the desktop,it seems to do the opposite - // for these reasons, using the nativeMenu option results in a full native select in Opera - if ( options.nativeMenu && window.opera && window.opera.version ) { - button.addClass( "ui-select-nativeonly" ); - } - - // Add counter for multi selects - if ( this.isMultiple ) { - this.buttonCount = $( "" ) - .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(); - - if ( !!options.nativeMenu ) { - this.blur(); - } - }); - - this._handleFormReset(); - - 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 ); - } - }); - self.label.bind( "click focus", function() { - if ( self.options.preventFocusZoom ) { - $.mobile.zoom.disable( true ); - } - }); - self.select.bind( "focus", function() { - if ( self.options.preventFocusZoom ) { - $.mobile.zoom.disable( true ); - } - }); - self.button.bind( "mouseup", function() { - if ( self.options.preventFocusZoom ) { - setTimeout(function() { - $.mobile.zoom.enable( true ); - }, 0 ); - } - }); - self.select.bind( "blur", function() { - if ( self.options.preventFocusZoom ) { - $.mobile.zoom.enable( true ); - } - }); - - }, - - selected: function() { - return this._selectOptions().filter( ":selected" ); - }, - - selectedIndices: function() { - var self = this; - - return this.selected().map(function() { - return self._selectOptions().index( this ); - }).get(); - }, - - setButtonText: function() { - var self = this, - selected = this.selected(), - text = this.placeholder, - span = $( document.createElement( "span" ) ); - - this.button.find( ".ui-btn-text" ).html(function() { - if ( selected.length ) { - text = selected.map(function() { - return $( this ).text(); - }).get().join( ", " ); - } else { - text = self.placeholder; - } - - // TODO possibly aggregate multiple select option classes - return span.text( text ) - .addClass( self.select.attr( "class" ) ) - .addClass( selected.attr( "class" ) ); - }); - }, - - setButtonCount: function() { - var selected = this.selected(); - - // multiple count inside button - if ( this.isMultiple ) { - this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length ); - } - }, - - _reset: function() { - this.refresh(); - }, - - 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" ); - } -}, $.mobile.behaviors.formReset ) ); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.selectmenu.prototype.enhanceWithin( e.target, true ); -}); -})( jQuery ); - -(function( $, undefined ) { - - function fitSegmentInsideSegment( winSize, segSize, offset, desired ) { - var ret = desired; - - if ( winSize < segSize ) { - // Center segment if it's bigger than the window - ret = offset + ( winSize - segSize ) / 2; - } else { - // Otherwise center it at the desired coordinate while keeping it completely inside the window - ret = Math.min( Math.max( offset, desired - segSize / 2 ), offset + winSize - segSize ); - } - - return ret; - } - - function windowCoords() { - var $win = $.mobile.window; - - return { - x: $win.scrollLeft(), - y: $win.scrollTop(), - cx: ( window.innerWidth || $win.width() ), - cy: ( window.innerHeight || $win.height() ) - }; - } - - $.widget( "mobile.popup", $.mobile.widget, { - options: { - theme: null, - overlayTheme: null, - shadow: true, - corners: true, - transition: "none", - positionTo: "origin", - tolerance: null, - initSelector: ":jqmData(role='popup')", - closeLinkSelector: "a:jqmData(rel='back')", - closeLinkEvents: "click.popup", - navigateEvents: "navigate.popup", - closeEvents: "navigate.popup pagebeforechange.popup", - dismissible: true, - - // NOTE Windows Phone 7 has a scroll position caching issue that - // requires us to disable popup history management by default - // https://github.com/jquery/jquery-mobile/issues/4784 - // - // NOTE this option is modified in _create! - history: !$.mobile.browser.oldIE - }, - - _eatEventAndClose: function( e ) { - e.preventDefault(); - e.stopImmediatePropagation(); - if ( this.options.dismissible ) { - this.close(); - } - return false; - }, - - // Make sure the screen size is increased beyond the page height if the popup's causes the document to increase in height - _resizeScreen: function() { - var popupHeight = this._ui.container.outerHeight( true ); - - this._ui.screen.removeAttr( "style" ); - if ( popupHeight > this._ui.screen.height() ) { - this._ui.screen.height( popupHeight ); - } - }, - - _handleWindowKeyUp: function( e ) { - if ( this._isOpen && e.keyCode === $.mobile.keyCode.ESCAPE ) { - return this._eatEventAndClose( e ); - } - }, - - _expectResizeEvent: function() { - var winCoords = windowCoords(); - - if ( this._resizeData ) { - if ( winCoords.x === this._resizeData.winCoords.x && - winCoords.y === this._resizeData.winCoords.y && - winCoords.cx === this._resizeData.winCoords.cx && - winCoords.cy === this._resizeData.winCoords.cy ) { - // timeout not refreshed - return false; - } else { - // clear existing timeout - it will be refreshed below - clearTimeout( this._resizeData.timeoutId ); - } - } - - this._resizeData = { - timeoutId: setTimeout( $.proxy( this, "_resizeTimeout" ), 200 ), - winCoords: winCoords - }; - - return true; - }, - - _resizeTimeout: function() { - if ( this._isOpen ) { - if ( !this._expectResizeEvent() ) { - if ( this._ui.container.hasClass( "ui-popup-hidden" ) ) { - // effectively rapid-open the popup while leaving the screen intact - this._ui.container.removeClass( "ui-popup-hidden" ); - this.reposition( { positionTo: "window" } ); - this._ignoreResizeEvents(); - } - - this._resizeScreen(); - this._resizeData = null; - this._orientationchangeInProgress = false; - } - } else { - this._resizeData = null; - this._orientationchangeInProgress = false; - } - }, - - _ignoreResizeEvents: function() { - var self = this; - - if ( this._ignoreResizeTo ) { - clearTimeout( this._ignoreResizeTo ); - } - this._ignoreResizeTo = setTimeout( function() { self._ignoreResizeTo = 0; }, 1000 ); - }, - - _handleWindowResize: function( e ) { - if ( this._isOpen && this._ignoreResizeTo === 0 ) { - if ( ( this._expectResizeEvent() || this._orientationchangeInProgress ) && - !this._ui.container.hasClass( "ui-popup-hidden" ) ) { - // effectively rapid-close the popup while leaving the screen intact - this._ui.container - .addClass( "ui-popup-hidden" ) - .removeAttr( "style" ); - } - } - }, - - _handleWindowOrientationchange: function( e ) { - if ( !this._orientationchangeInProgress && this._isOpen && this._ignoreResizeTo === 0 ) { - this._expectResizeEvent(); - this._orientationchangeInProgress = true; - } - }, - - // When the popup is open, attempting to focus on an element that is not a - // child of the popup will redirect focus to the popup - _handleDocumentFocusIn: function( e ) { - var tgt = e.target, $tgt, ui = this._ui; - - if ( !this._isOpen ) { - return; - } - - if ( tgt !== ui.container[ 0 ] ) { - $tgt = $( e.target ); - if ( 0 === $tgt.parents().filter( ui.container[ 0 ] ).length ) { - $( document.activeElement ).one( "focus", function( e ) { - $tgt.blur(); - }); - ui.focusElement.focus(); - e.preventDefault(); - e.stopImmediatePropagation(); - return false; - } else if ( ui.focusElement[ 0 ] === ui.container[ 0 ] ) { - ui.focusElement = $tgt; - } - } - - this._ignoreResizeEvents(); - }, - - _create: function() { - var ui = { - screen: $( "
" ), - placeholder: $( "
" ), - container: $( "
" ) - }, - thisPage = this.element.closest( ".ui-page" ), - myId = this.element.attr( "id" ), - self = this; - - // We need to adjust the history option to be false if there's no AJAX nav. - // We can't do it in the option declarations because those are run before - // it is determined whether there shall be AJAX nav. - this.options.history = this.options.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled; - - if ( thisPage.length === 0 ) { - thisPage = $( "body" ); - } - - // define the container for navigation event bindings - // TODO this would be nice at the the mobile widget level - this.options.container = this.options.container || $.mobile.pageContainer; - - // Apply the proto - thisPage.append( ui.screen ); - ui.container.insertAfter( ui.screen ); - // Leave a placeholder where the element used to be - ui.placeholder.insertAfter( this.element ); - if ( myId ) { - ui.screen.attr( "id", myId + "-screen" ); - ui.container.attr( "id", myId + "-popup" ); - ui.placeholder.html( "" ); - } - ui.container.append( this.element ); - ui.focusElement = ui.container; - - // Add class to popup element - this.element.addClass( "ui-popup" ); - - // Define instance variables - $.extend( this, { - _scrollTop: 0, - _page: thisPage, - _ui: ui, - _fallbackTransition: "", - _currentTransition: false, - _prereqs: null, - _isOpen: false, - _tolerance: null, - _resizeData: null, - _ignoreResizeTo: 0, - _orientationchangeInProgress: false - }); - - $.each( this.options, function( key, value ) { - // Cause initial options to be applied by their handler by temporarily setting the option to undefined - // - the handler then sets it to the initial value - self.options[ key ] = undefined; - self._setOption( key, value, true ); - }); - - ui.screen.bind( "vclick", $.proxy( this, "_eatEventAndClose" ) ); - - this._on( $.mobile.window, { - orientationchange: $.proxy( this, "_handleWindowOrientationchange" ), - resize: $.proxy( this, "_handleWindowResize" ), - keyup: $.proxy( this, "_handleWindowKeyUp" ) - }); - this._on( $.mobile.document, { - focusin: $.proxy( this, "_handleDocumentFocusIn" ) - }); - }, - - _applyTheme: function( dst, theme, prefix ) { - var classes = ( dst.attr( "class" ) || "").split( " " ), - alreadyAdded = true, - currentTheme = null, - matches, - themeStr = String( theme ); - - while ( classes.length > 0 ) { - currentTheme = classes.pop(); - matches = ( new RegExp( "^ui-" + prefix + "-([a-z])$" ) ).exec( currentTheme ); - if ( matches && matches.length > 1 ) { - currentTheme = matches[ 1 ]; - break; - } else { - currentTheme = null; - } - } - - if ( theme !== currentTheme ) { - dst.removeClass( "ui-" + prefix + "-" + currentTheme ); - if ( ! ( theme === null || theme === "none" ) ) { - dst.addClass( "ui-" + prefix + "-" + themeStr ); - } - } - }, - - _setTheme: function( value ) { - this._applyTheme( this.element, value, "body" ); - }, - - _setOverlayTheme: function( value ) { - this._applyTheme( this._ui.screen, value, "overlay" ); - - if ( this._isOpen ) { - this._ui.screen.addClass( "in" ); - } - }, - - _setShadow: function( value ) { - this.element.toggleClass( "ui-overlay-shadow", value ); - }, - - _setCorners: function( value ) { - this.element.toggleClass( "ui-corner-all", value ); - }, - - _applyTransition: function( value ) { - this._ui.container.removeClass( this._fallbackTransition ); - if ( value && value !== "none" ) { - this._fallbackTransition = $.mobile._maybeDegradeTransition( value ); - if ( this._fallbackTransition === "none" ) { - this._fallbackTransition = ""; - } - this._ui.container.addClass( this._fallbackTransition ); - } - }, - - _setTransition: function( value ) { - if ( !this._currentTransition ) { - this._applyTransition( value ); - } - }, - - _setTolerance: function( value ) { - var tol = { t: 30, r: 15, b: 30, l: 15 }; - - if ( value !== undefined ) { - var ar = String( value ).split( "," ); - - $.each( ar, function( idx, val ) { ar[ idx ] = parseInt( val, 10 ); } ); - - switch( ar.length ) { - // All values are to be the same - case 1: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = tol.r = tol.b = tol.l = ar[ 0 ]; - } - break; - - // The first value denotes top/bottom tolerance, and the second value denotes left/right tolerance - case 2: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = tol.b = ar[ 0 ]; - } - if ( !isNaN( ar[ 1 ] ) ) { - tol.l = tol.r = ar[ 1 ]; - } - break; - - // The array contains values in the order top, right, bottom, left - case 4: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = ar[ 0 ]; - } - if ( !isNaN( ar[ 1 ] ) ) { - tol.r = ar[ 1 ]; - } - if ( !isNaN( ar[ 2 ] ) ) { - tol.b = ar[ 2 ]; - } - if ( !isNaN( ar[ 3 ] ) ) { - tol.l = ar[ 3 ]; - } - break; - - default: - break; - } - } - - this._tolerance = tol; - }, - - _setOption: function( key, value ) { - var exclusions, setter = "_set" + key.charAt( 0 ).toUpperCase() + key.slice( 1 ); - - if ( this[ setter ] !== undefined ) { - this[ setter ]( value ); - } - - // TODO REMOVE FOR 1.2.1 by moving them out to a default options object - exclusions = [ - "initSelector", - "closeLinkSelector", - "closeLinkEvents", - "navigateEvents", - "closeEvents", - "history", - "container" - ]; - - $.mobile.widget.prototype._setOption.apply( this, arguments ); - if ( $.inArray( key, exclusions ) === -1 ) { - // Record the option change in the options and in the DOM data-* attributes - this.element.attr( "data-" + ( $.mobile.ns || "" ) + ( key.replace( /([A-Z])/, "-$1" ).toLowerCase() ), value ); - } - }, - - // Try and center the overlay over the given coordinates - _placementCoords: function( desired ) { - // rectangle within which the popup must fit - var - winCoords = windowCoords(), - rc = { - x: this._tolerance.l, - y: winCoords.y + this._tolerance.t, - cx: winCoords.cx - this._tolerance.l - this._tolerance.r, - cy: winCoords.cy - this._tolerance.t - this._tolerance.b - }, - menuSize, ret; - - // Clamp the width of the menu before grabbing its size - this._ui.container.css( "max-width", rc.cx ); - menuSize = { - cx: this._ui.container.outerWidth( true ), - cy: this._ui.container.outerHeight( true ) - }; - - // Center the menu over the desired coordinates, while not going outside - // the window tolerances. This will center wrt. the window if the popup is too large. - ret = { - x: fitSegmentInsideSegment( rc.cx, menuSize.cx, rc.x, desired.x ), - y: fitSegmentInsideSegment( rc.cy, menuSize.cy, rc.y, desired.y ) - }; - - // Make sure the top of the menu is visible - ret.y = Math.max( 0, ret.y ); - - // If the height of the menu is smaller than the height of the document - // align the bottom with the bottom of the document - - // fix for $.mobile.document.height() bug in core 1.7.2. - var docEl = document.documentElement, docBody = document.body, - docHeight = Math.max( docEl.clientHeight, docBody.scrollHeight, docBody.offsetHeight, docEl.scrollHeight, docEl.offsetHeight ); - - ret.y -= Math.min( ret.y, Math.max( 0, ret.y + menuSize.cy - docHeight ) ); - - return { left: ret.x, top: ret.y }; - }, - - _createPrereqs: function( screenPrereq, containerPrereq, whenDone ) { - var self = this, prereqs; - - // It is important to maintain both the local variable prereqs and self._prereqs. The local variable remains in - // the closure of the functions which call the callbacks passed in. The comparison between the local variable and - // self._prereqs is necessary, because once a function has been passed to .animationComplete() it will be called - // next time an animation completes, even if that's not the animation whose end the function was supposed to catch - // (for example, if an abort happens during the opening animation, the .animationComplete handler is not called for - // that animation anymore, but the handler remains attached, so it is called the next time the popup is opened - // - making it stale. Comparing the local variable prereqs to the widget-level variable self._prereqs ensures that - // callbacks triggered by a stale .animationComplete will be ignored. - - prereqs = { - screen: $.Deferred(), - container: $.Deferred() - }; - - prereqs.screen.then( function() { - if ( prereqs === self._prereqs ) { - screenPrereq(); - } - }); - - prereqs.container.then( function() { - if ( prereqs === self._prereqs ) { - containerPrereq(); - } - }); - - $.when( prereqs.screen, prereqs.container ).done( function() { - if ( prereqs === self._prereqs ) { - self._prereqs = null; - whenDone(); - } - }); - - self._prereqs = prereqs; - }, - - _animate: function( args ) { - // NOTE before removing the default animation of the screen - // this had an animate callback that would resolve the deferred - // now the deferred is resolved immediately - // TODO remove the dependency on the screen deferred - this._ui.screen - .removeClass( args.classToRemove ) - .addClass( args.screenClassToAdd ); - - args.prereqs.screen.resolve(); - - if ( args.transition && args.transition !== "none" ) { - if ( args.applyTransition ) { - this._applyTransition( args.transition ); - } - if ( this._fallbackTransition ) { - this._ui.container - .animationComplete( $.proxy( args.prereqs.container, "resolve" ) ) - .addClass( args.containerClassToAdd ) - .removeClass( args.classToRemove ); - return; - } - } - this._ui.container.removeClass( args.classToRemove ); - args.prereqs.container.resolve(); - }, - - // The desired coordinates passed in will be returned untouched if no reference element can be identified via - // desiredPosition.positionTo. Nevertheless, this function ensures that its return value always contains valid - // x and y coordinates by specifying the center middle of the window if the coordinates are absent. - // options: { x: coordinate, y: coordinate, positionTo: string: "origin", "window", or jQuery selector - _desiredCoords: function( o ) { - var dst = null, offset, winCoords = windowCoords(), x = o.x, y = o.y, pTo = o.positionTo; - - // Establish which element will serve as the reference - if ( pTo && pTo !== "origin" ) { - if ( pTo === "window" ) { - x = winCoords.cx / 2 + winCoords.x; - y = winCoords.cy / 2 + winCoords.y; - } else { - try { - dst = $( pTo ); - } catch( e ) { - dst = null; - } - if ( dst ) { - dst.filter( ":visible" ); - if ( dst.length === 0 ) { - dst = null; - } - } - } - } - - // If an element was found, center over it - if ( dst ) { - offset = dst.offset(); - x = offset.left + dst.outerWidth() / 2; - y = offset.top + dst.outerHeight() / 2; - } - - // Make sure x and y are valid numbers - center over the window - if ( $.type( x ) !== "number" || isNaN( x ) ) { - x = winCoords.cx / 2 + winCoords.x; - } - if ( $.type( y ) !== "number" || isNaN( y ) ) { - y = winCoords.cy / 2 + winCoords.y; - } - - return { x: x, y: y }; - }, - - _reposition: function( o ) { - // We only care about position-related parameters for repositioning - o = { x: o.x, y: o.y, positionTo: o.positionTo }; - this._trigger( "beforeposition", o ); - this._ui.container.offset( this._placementCoords( this._desiredCoords( o ) ) ); - }, - - reposition: function( o ) { - if ( this._isOpen ) { - this._reposition( o ); - } - }, - - _openPrereqsComplete: function() { - this._ui.container.addClass( "ui-popup-active" ); - this._isOpen = true; - this._resizeScreen(); - this._ui.container.attr( "tabindex", "0" ).focus(); - this._ignoreResizeEvents(); - this._trigger( "afteropen" ); - }, - - _open: function( options ) { - var o = $.extend( {}, this.options, options ), - // TODO move blacklist to private method - androidBlacklist = ( function() { - var w = window, - ua = navigator.userAgent, - // Rendering engine is Webkit, and capture major version - wkmatch = ua.match( /AppleWebKit\/([0-9\.]+)/ ), - wkversion = !!wkmatch && wkmatch[ 1 ], - androidmatch = ua.match( /Android (\d+(?:\.\d+))/ ), - andversion = !!androidmatch && androidmatch[ 1 ], - chromematch = ua.indexOf( "Chrome" ) > -1; - - // Platform is Android, WebKit version is greater than 534.13 ( Android 3.2.1 ) and not Chrome. - if( androidmatch !== null && andversion === "4.0" && wkversion && wkversion > 534.13 && !chromematch ) { - return true; - } - return false; - }()); - - // Count down to triggering "popupafteropen" - we have two prerequisites: - // 1. The popup window animation completes (container()) - // 2. The screen opacity animation completes (screen()) - this._createPrereqs( - $.noop, - $.noop, - $.proxy( this, "_openPrereqsComplete" ) ); - - this._currentTransition = o.transition; - this._applyTransition( o.transition ); - - if ( !this.options.theme ) { - this._setTheme( this._page.jqmData( "theme" ) || $.mobile.getInheritedTheme( this._page, "c" ) ); - } - - this._ui.screen.removeClass( "ui-screen-hidden" ); - this._ui.container.removeClass( "ui-popup-hidden" ); - - // Give applications a chance to modify the contents of the container before it appears - this._reposition( o ); - - if ( this.options.overlayTheme && androidBlacklist ) { - /* TODO: - The native browser on Android 4.0.X ("Ice Cream Sandwich") suffers from an issue where the popup overlay appears to be z-indexed - above the popup itself when certain other styles exist on the same page -- namely, any element set to `position: fixed` and certain - types of input. These issues are reminiscent of previously uncovered bugs in older versions of Android's native browser: - https://github.com/scottjehl/Device-Bugs/issues/3 - - This fix closes the following bugs ( I use "closes" with reluctance, and stress that this issue should be revisited as soon as possible ): - - https://github.com/jquery/jquery-mobile/issues/4816 - https://github.com/jquery/jquery-mobile/issues/4844 - https://github.com/jquery/jquery-mobile/issues/4874 - */ - - // TODO sort out why this._page isn't working - this.element.closest( ".ui-page" ).addClass( "ui-popup-open" ); - } - this._animate({ - additionalCondition: true, - transition: o.transition, - classToRemove: "", - screenClassToAdd: "in", - containerClassToAdd: "in", - applyTransition: false, - prereqs: this._prereqs - }); - }, - - _closePrereqScreen: function() { - this._ui.screen - .removeClass( "out" ) - .addClass( "ui-screen-hidden" ); - }, - - _closePrereqContainer: function() { - this._ui.container - .removeClass( "reverse out" ) - .addClass( "ui-popup-hidden" ) - .removeAttr( "style" ); - }, - - _closePrereqsDone: function() { - var opts = this.options; - - this._ui.container.removeAttr( "tabindex" ); - - // remove the global mutex for popups - $.mobile.popup.active = undefined; - - // alert users that the popup is closed - this._trigger( "afterclose" ); - }, - - _close: function( immediate ) { - this._ui.container.removeClass( "ui-popup-active" ); - this._page.removeClass( "ui-popup-open" ); - - this._isOpen = false; - - // Count down to triggering "popupafterclose" - we have two prerequisites: - // 1. The popup window reverse animation completes (container()) - // 2. The screen opacity animation completes (screen()) - this._createPrereqs( - $.proxy( this, "_closePrereqScreen" ), - $.proxy( this, "_closePrereqContainer" ), - $.proxy( this, "_closePrereqsDone" ) ); - - this._animate( { - additionalCondition: this._ui.screen.hasClass( "in" ), - transition: ( immediate ? "none" : ( this._currentTransition ) ), - classToRemove: "in", - screenClassToAdd: "out", - containerClassToAdd: "reverse out", - applyTransition: true, - prereqs: this._prereqs - }); - }, - - _unenhance: function() { - // Put the element back to where the placeholder was and remove the "ui-popup" class - this._setTheme( "none" ); - this.element - // Cannot directly insertAfter() - we need to detach() first, because - // insertAfter() will do nothing if the payload div was not attached - // to the DOM at the time the widget was created, and so the payload - // will remain inside the container even after we call insertAfter(). - // If that happens and we remove the container a few lines below, we - // will cause an infinite recursion - #5244 - .detach() - .insertAfter( this._ui.placeholder ) - .removeClass( "ui-popup ui-overlay-shadow ui-corner-all" ); - this._ui.screen.remove(); - this._ui.container.remove(); - this._ui.placeholder.remove(); - }, - - _destroy: function() { - if ( $.mobile.popup.active === this ) { - this.element.one( "popupafterclose", $.proxy( this, "_unenhance" ) ); - this.close(); - } else { - this._unenhance(); - } - }, - - _closePopup: function( e, data ) { - var parsedDst, toUrl, o = this.options, immediate = false; - - // restore location on screen - window.scrollTo( 0, this._scrollTop ); - - if ( e && e.type === "pagebeforechange" && data ) { - // Determine whether we need to rapid-close the popup, or whether we can - // take the time to run the closing transition - if ( typeof data.toPage === "string" ) { - parsedDst = data.toPage; - } else { - parsedDst = data.toPage.jqmData( "url" ); - } - parsedDst = $.mobile.path.parseUrl( parsedDst ); - toUrl = parsedDst.pathname + parsedDst.search + parsedDst.hash; - - if ( this._myUrl !== $.mobile.path.makeUrlAbsolute( toUrl ) ) { - // Going to a different page - close immediately - immediate = true; - } else { - e.preventDefault(); - } - } - - // remove nav bindings - o.container.unbind( o.closeEvents ); - // unbind click handlers added when history is disabled - this.element.undelegate( o.closeLinkSelector, o.closeLinkEvents ); - - this._close( immediate ); - }, - - // any navigation event after a popup is opened should close the popup - // NOTE the pagebeforechange is bound to catch navigation events that don't - // alter the url (eg, dialogs from popups) - _bindContainerClose: function() { - this.options.container - .one( this.options.closeEvents, $.proxy( this, "_closePopup" ) ); - }, - - // TODO no clear deliniation of what should be here and - // what should be in _open. Seems to be "visual" vs "history" for now - open: function( options ) { - var self = this, opts = this.options, url, hashkey, activePage, currentIsDialog, hasHash, urlHistory; - - // make sure open is idempotent - if( $.mobile.popup.active ) { - return; - } - - // set the global popup mutex - $.mobile.popup.active = this; - this._scrollTop = $.mobile.window.scrollTop(); - - // if history alteration is disabled close on navigate events - // and leave the url as is - if( !( opts.history ) ) { - self._open( options ); - self._bindContainerClose(); - - // When histoy is disabled we have to grab the data-rel - // back link clicks so we can close the popup instead of - // relying on history to do it for us - self.element - .delegate( opts.closeLinkSelector, opts.closeLinkEvents, function( e ) { - self.close(); - e.preventDefault(); - }); - - return; - } - - // cache some values for min/readability - urlHistory = $.mobile.urlHistory; - hashkey = $.mobile.dialogHashKey; - activePage = $.mobile.activePage; - currentIsDialog = activePage.is( ".ui-dialog" ); - this._myUrl = url = urlHistory.getActive().url; - hasHash = ( url.indexOf( hashkey ) > -1 ) && !currentIsDialog && ( urlHistory.activeIndex > 0 ); - - if ( hasHash ) { - self._open( options ); - self._bindContainerClose(); - return; - } - - // if the current url has no dialog hash key proceed as normal - // otherwise, if the page is a dialog simply tack on the hash key - if ( url.indexOf( hashkey ) === -1 && !currentIsDialog ){ - url = url + (url.indexOf( "#" ) > -1 ? hashkey : "#" + hashkey); - } else { - url = $.mobile.path.parseLocation().hash + hashkey; - } - - // Tack on an extra hashkey if this is the first page and we've just reconstructed the initial hash - if ( urlHistory.activeIndex === 0 && url === urlHistory.initialDst ) { - url += hashkey; - } - - // swallow the the initial navigation event, and bind for the next - $(window).one( "beforenavigate", function( e ) { - e.preventDefault(); - self._open( options ); - self._bindContainerClose(); - }); - - this.urlAltered = true; - $.mobile.navigate( url, {role: "dialog"} ); - }, - - close: function() { - // make sure close is idempotent - if( $.mobile.popup.active !== this ) { - return; - } - - this._scrollTop = $.mobile.window.scrollTop(); - - if( this.options.history && this.urlAltered ) { - $.mobile.back(); - this.urlAltered = false; - } else { - // simulate the nav bindings having fired - this._closePopup(); - } - } - }); - - - // TODO this can be moved inside the widget - $.mobile.popup.handleLink = function( $link ) { - var closestPage = $link.closest( ":jqmData(role='page')" ), - scope = ( ( closestPage.length === 0 ) ? $( "body" ) : closestPage ), - // NOTE make sure to get only the hash, ie7 (wp7) return the absolute href - // in this case ruining the element selection - popup = $( $.mobile.path.parseUrl($link.attr( "href" )).hash, scope[0] ), - offset; - - if ( popup.data( "mobile-popup" ) ) { - offset = $link.offset(); - popup.popup( "open", { - x: offset.left + $link.outerWidth() / 2, - y: offset.top + $link.outerHeight() / 2, - transition: $link.jqmData( "transition" ), - positionTo: $link.jqmData( "position-to" ) - }); - } - - //remove after delay - setTimeout( function() { - // Check if we are in a listview - var $parent = $link.parent().parent(); - if ($parent.hasClass("ui-li")) { - $link = $parent.parent(); - } - $link.removeClass( $.mobile.activeBtnClass ); - }, 300 ); - }; - - // TODO move inside _create - $.mobile.document.bind( "pagebeforechange", function( e, data ) { - if ( data.options.role === "popup" ) { - $.mobile.popup.handleLink( data.options.link ); - e.preventDefault(); - } - }); - - $.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.popup.prototype.enhanceWithin( e.target, true ); - }); - -})( jQuery ); - -/* -* custom "selectmenu" plugin -*/ - -(function( $, undefined ) { - var extendSelect = function( widget ) { - - var select = widget.select, - origDestroy = widget._destroy, - selectID = widget.selectID, - prefix = ( selectID ? selectID : ( ( $.mobile.ns || "" ) + "uuid-" + widget.uuid ) ), - popupID = prefix + "-listbox", - dialogID = prefix + "-dialog", - label = widget.label, - thisPage = widget.select.closest( ".ui-page" ), - selectOptions = widget._selectOptions(), - isMultiple = widget.isMultiple = widget.select[ 0 ].multiple, - buttonId = selectID + "-button", - menuId = selectID + "-menu", - menuPage = $( "
" + - "
" + - "
" + label.getEncodedText() + "
"+ - "
"+ - "
"+ - "
" ), - - listbox = $( "
" ).insertAfter( widget.select ).popup( { theme: widget.options.overlayTheme } ), - - list = $( "
    ", { - "class": "ui-selectmenu-list", - "id": menuId, - "role": "listbox", - "aria-labelledby": buttonId - }).attr( "data-" + $.mobile.ns + "theme", widget.options.theme ) - .attr( "data-" + $.mobile.ns + "divider-theme", widget.options.dividerTheme ) - .appendTo( listbox ), - - - header = $( "
    ", { - "class": "ui-header ui-bar-" + widget.options.theme - }).prependTo( listbox ), - - headerTitle = $( "

    ", { - "class": "ui-title" - }).appendTo( header ), - - menuPageContent, - menuPageClose, - headerClose; - - if ( widget.isMultiple ) { - headerClose = $( "", { - "text": widget.options.closeText, - "href": "#", - "class": "ui-btn-left" - }).attr( "data-" + $.mobile.ns + "iconpos", "notext" ).attr( "data-" + $.mobile.ns + "icon", "delete" ).appendTo( header ).buttonMarkup(); - } - - $.extend( widget, { - select: widget.select, - selectID: selectID, - buttonId: buttonId, - menuId: menuId, - popupID: popupID, - dialogID: dialogID, - thisPage: thisPage, - menuPage: menuPage, - label: label, - selectOptions: selectOptions, - isMultiple: isMultiple, - theme: widget.options.theme, - listbox: listbox, - list: list, - header: header, - headerTitle: headerTitle, - headerClose: headerClose, - menuPageContent: menuPageContent, - menuPageClose: menuPageClose, - placeholder: "", - - build: function() { - var self = this; - - // Create list from select, update state - self.refresh(); - - if ( self._origTabIndex === undefined ) { - // Map undefined to false, because self._origTabIndex === undefined - // indicates that we have not yet checked whether the select has - // originally had a tabindex attribute, whereas false indicates that - // we have checked the select for such an attribute, and have found - // none present. - self._origTabIndex = ( self.select[ 0 ].getAttribute( "tabindex" ) === null ) ? false : self.select.attr( "tabindex" ); - } - self.select.attr( "tabindex", "-1" ).focus(function() { - $( this ).blur(); - self.button.focus(); - }); - - // Button events - self.button.bind( "vclick keydown" , function( event ) { - if ( self.options.disabled || self.isOpen ) { - return; - } - - if (event.type === "vclick" || - event.keyCode && (event.keyCode === $.mobile.keyCode.ENTER || - event.keyCode === $.mobile.keyCode.SPACE)) { - - self._decideFormat(); - if ( self.menuType === "overlay" ) { - self.button.attr( "href", "#" + self.popupID ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "popup" ); - } else { - self.button.attr( "href", "#" + self.dialogID ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "dialog" ); - } - self.isOpen = true; - // Do not prevent default, so the navigation may have a chance to actually open the chosen format - } - }); - - // Events for list items - self.list.attr( "role", "listbox" ) - .bind( "focusin", function( e ) { - $( e.target ) - .attr( "tabindex", "0" ) - .trigger( "vmouseover" ); - - }) - .bind( "focusout", function( e ) { - $( e.target ) - .attr( "tabindex", "-1" ) - .trigger( "vmouseout" ); - }) - .delegate( "li:not(.ui-disabled, .ui-li-divider)", "click", function( event ) { - - // index of option tag to be selected - var oldIndex = self.select[ 0 ].selectedIndex, - newIndex = self.list.find( "li:not(.ui-li-divider)" ).index( this ), - option = self._selectOptions().eq( newIndex )[ 0 ]; - - // toggle selected status on the tag for multi selects - option.selected = self.isMultiple ? !option.selected : true; - - // toggle checkbox class for multiple selects - if ( self.isMultiple ) { - $( this ).find( ".ui-icon" ) - .toggleClass( "ui-icon-checkbox-on", option.selected ) - .toggleClass( "ui-icon-checkbox-off", !option.selected ); - } - - // trigger change if value changed - if ( self.isMultiple || oldIndex !== newIndex ) { - self.select.trigger( "change" ); - } - - // hide custom select for single selects only - otherwise focus clicked item - // We need to grab the clicked item the hard way, because the list may have been rebuilt - if ( self.isMultiple ) { - self.list.find( "li:not(.ui-li-divider)" ).eq( newIndex ) - .addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - else { - self.close(); - } - - event.preventDefault(); - }) - .keydown(function( event ) { //keyboard events for menu items - var target = $( event.target ), - li = target.closest( "li" ), - prev, next; - - // switch logic based on which key was pressed - switch ( event.keyCode ) { - // up or left arrow keys - case 38: - prev = li.prev().not( ".ui-selectmenu-placeholder" ); - - if ( prev.is( ".ui-li-divider" ) ) { - prev = prev.prev(); - } - - // if there's a previous option, focus it - if ( prev.length ) { - target - .blur() - .attr( "tabindex", "-1" ); - - prev.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - - return false; - // down or right arrow keys - case 40: - next = li.next(); - - if ( next.is( ".ui-li-divider" ) ) { - next = next.next(); - } - - // if there's a next option, focus it - if ( next.length ) { - target - .blur() - .attr( "tabindex", "-1" ); - - next.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - - return false; - // If enter or space is pressed, trigger click - case 13: - case 32: - target.trigger( "click" ); - - return false; - } - }); - - // button refocus ensures proper height calculation - // by removing the inline style and ensuring page inclusion - self.menuPage.bind( "pagehide", function() { - // TODO centralize page removal binding / handling in the page plugin. - // Suggestion from @jblas to do refcounting - // - // TODO extremely confusing dependency on the open method where the pagehide.remove - // bindings are stripped to prevent the parent page from disappearing. The way - // we're keeping pages in the DOM right now sucks - // - // rebind the page remove that was unbound in the open function - // to allow for the parent page removal from actions other than the use - // of a dialog sized custom select - // - // doing this here provides for the back button on the custom select dialog - $.mobile._bindPageRemove.call( self.thisPage ); - }); - - // Events on the popup - self.listbox.bind( "popupafterclose", function( event ) { - self.close(); - }); - - // Close button on small overlays - if ( self.isMultiple ) { - self.headerClose.click(function() { - if ( self.menuType === "overlay" ) { - self.close(); - return false; - } - }); - } - - // track this dependency so that when the parent page - // is removed on pagehide it will also remove the menupage - self.thisPage.addDependents( this.menuPage ); - }, - - _isRebuildRequired: function() { - var list = this.list.find( "li" ), - options = this._selectOptions(); - - // TODO exceedingly naive method to determine difference - // ignores value changes etc in favor of a forcedRebuild - // from the user in the refresh method - return options.text() !== list.text(); - }, - - selected: function() { - return this._selectOptions().filter( ":selected:not( :jqmData(placeholder='true') )" ); - }, - - refresh: function( forceRebuild , foo ) { - var self = this, - select = this.element, - isMultiple = this.isMultiple, - indicies; - - if ( forceRebuild || this._isRebuildRequired() ) { - self._buildList(); - } - - indicies = this.selectedIndices(); - - self.setButtonText(); - self.setButtonCount(); - - self.list.find( "li:not(.ui-li-divider)" ) - .removeClass( $.mobile.activeBtnClass ) - .attr( "aria-selected", false ) - .each(function( i ) { - - if ( $.inArray( i, indicies ) > -1 ) { - var item = $( this ); - - // Aria selected attr - item.attr( "aria-selected", true ); - - // Multiple selects: add the "on" checkbox state to the icon - if ( self.isMultiple ) { - item.find( ".ui-icon" ).removeClass( "ui-icon-checkbox-off" ).addClass( "ui-icon-checkbox-on" ); - } else { - if ( item.is( ".ui-selectmenu-placeholder" ) ) { - item.next().addClass( $.mobile.activeBtnClass ); - } else { - item.addClass( $.mobile.activeBtnClass ); - } - } - } - }); - }, - - close: function() { - if ( this.options.disabled || !this.isOpen ) { - return; - } - - var self = this; - - if ( self.menuType === "page" ) { - self.menuPage.dialog( "close" ); - self.list.appendTo( self.listbox ); - } else { - self.listbox.popup( "close" ); - } - - self._focusButton(); - // allow the dialog to be closed again - self.isOpen = false; - }, - - open: function() { - this.button.click(); - }, - - _decideFormat: function() { - var self = this, - $window = $.mobile.window, - selfListParent = self.list.parent(), - menuHeight = selfListParent.outerHeight(), - menuWidth = selfListParent.outerWidth(), - activePage = $( "." + $.mobile.activePageClass ), - scrollTop = $window.scrollTop(), - btnOffset = self.button.offset().top, - screenHeight = $window.height(), - screenWidth = $window.width(); - - function focusMenuItem() { - var selector = self.list.find( "." + $.mobile.activeBtnClass + " a" ); - if ( selector.length === 0 ) { - selector = self.list.find( "li.ui-btn:not( :jqmData(placeholder='true') ) a" ); - } - selector.first().focus().closest( "li" ).addClass( "ui-btn-down-" + widget.options.theme ); - } - - if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) { - - self.menuPage.appendTo( $.mobile.pageContainer ).page(); - self.menuPageContent = menuPage.find( ".ui-content" ); - self.menuPageClose = menuPage.find( ".ui-header a" ); - - // prevent the parent page from being removed from the DOM, - // otherwise the results of selecting a list item in the dialog - // fall into a black hole - self.thisPage.unbind( "pagehide.remove" ); - - //for WebOS/Opera Mini (set lastscroll using button offset) - if ( scrollTop === 0 && btnOffset > screenHeight ) { - self.thisPage.one( "pagehide", function() { - $( this ).jqmData( "lastScroll", btnOffset ); - }); - } - - self.menuPage - .one( "pageshow", function() { - focusMenuItem(); - }) - .one( "pagehide", function() { - self.close(); - }); - - self.menuType = "page"; - self.menuPageContent.append( self.list ); - self.menuPage.find("div .ui-title").text(self.label.text()); - } else { - self.menuType = "overlay"; - - self.listbox.one( "popupafteropen", focusMenuItem ); - } - }, - - _buildList: function() { - var self = this, - o = this.options, - placeholder = this.placeholder, - needPlaceholder = true, - optgroups = [], - lis = [], - dataIcon = self.isMultiple ? "checkbox-off" : "false"; - - self.list.empty().filter( ".ui-listview" ).listview( "destroy" ); - - var $options = self.select.find( "option" ), - numOptions = $options.length, - select = this.select[ 0 ], - dataPrefix = 'data-' + $.mobile.ns, - dataIndexAttr = dataPrefix + 'option-index', - dataIconAttr = dataPrefix + 'icon', - dataRoleAttr = dataPrefix + 'role', - dataPlaceholderAttr = dataPrefix + 'placeholder', - fragment = document.createDocumentFragment(), - isPlaceholderItem = false, - optGroup; - - for (var i = 0; i < numOptions;i++, isPlaceholderItem = false) { - var option = $options[i], - $option = $( option ), - parent = option.parentNode, - text = $option.text(), - anchor = document.createElement( 'a' ), - classes = []; - - anchor.setAttribute( 'href', '#' ); - anchor.appendChild( document.createTextNode( text ) ); - - // Are we inside an optgroup? - if ( parent !== select && parent.nodeName.toLowerCase() === "optgroup" ) { - var optLabel = parent.getAttribute( 'label' ); - if ( optLabel !== optGroup ) { - var divider = document.createElement( 'li' ); - divider.setAttribute( dataRoleAttr, 'list-divider' ); - divider.setAttribute( 'role', 'option' ); - divider.setAttribute( 'tabindex', '-1' ); - divider.appendChild( document.createTextNode( optLabel ) ); - fragment.appendChild( divider ); - optGroup = optLabel; - } - } - - if ( needPlaceholder && ( !option.getAttribute( "value" ) || text.length === 0 || $option.jqmData( "placeholder" ) ) ) { - needPlaceholder = false; - isPlaceholderItem = true; - - // If we have identified a placeholder, record the fact that it was - // us who have added the placeholder to the option and mark it - // retroactively in the select as well - if ( null === option.getAttribute( dataPlaceholderAttr ) ) { - this._removePlaceholderAttr = true; - } - option.setAttribute( dataPlaceholderAttr, true ); - if ( o.hidePlaceholderMenuItems ) { - classes.push( "ui-selectmenu-placeholder" ); - } - if ( placeholder !== text ) { - placeholder = self.placeholder = text; - } - } - - var item = document.createElement('li'); - if ( option.disabled ) { - classes.push( "ui-disabled" ); - item.setAttribute('aria-disabled',true); - } - item.setAttribute( dataIndexAttr,i ); - item.setAttribute( dataIconAttr, dataIcon ); - if ( isPlaceholderItem ) { - item.setAttribute( dataPlaceholderAttr, true ); - } - item.className = classes.join( " " ); - item.setAttribute( 'role', 'option' ); - anchor.setAttribute( 'tabindex', '-1' ); - item.appendChild( anchor ); - fragment.appendChild( item ); - } - - self.list[0].appendChild( fragment ); - - // Hide header if it's not a multiselect and there's no placeholder - if ( !this.isMultiple && !placeholder.length ) { - this.header.hide(); - } else { - this.headerTitle.text( this.placeholder ); - } - - // Now populated, create listview - self.list.listview(); - }, - - _button: function() { - return $( "", { - "href": "#", - "role": "button", - // TODO value is undefined at creation - "id": this.buttonId, - "aria-haspopup": "true", - - // TODO value is undefined at creation - "aria-owns": this.menuId - }); - }, - - _destroy: function() { - this.close(); - - // Restore the tabindex attribute to its original value - if ( this._origTabIndex !== undefined ) { - if ( this._origTabIndex !== false ) { - this.select.attr( "tabindex", this._origTabIndex ); - } else { - this.select.removeAttr( "tabindex" ); - } - } - - // Remove the placeholder attribute if we were the ones to add it - if ( this._removePlaceholderAttr ) { - this._selectOptions().removeAttr( "data-" + $.mobile.ns + "placeholder" ); - } - - // Remove the popup - this.listbox.remove(); - - // Chain up - origDestroy.apply( this, arguments ); - } - }); - }; - - // issue #3894 - core doesn't trigger events on disabled delegates - $.mobile.document.bind( "selectmenubeforecreate", function( event ) { - var selectmenuWidget = $( event.target ).data( "mobile-selectmenu" ); - - if ( !selectmenuWidget.options.nativeMenu && - selectmenuWidget.element.parents( ":jqmData(role='popup')" ).length === 0 ) { - extendSelect( selectmenuWidget ); - } - }); -})( jQuery ); - -(function( $, undefined ) { - - $.widget( "mobile.controlgroup", $.mobile.widget, $.extend( { - options: { - shadow: false, - corners: true, - excludeInvisible: true, - type: "vertical", - mini: false, - initSelector: ":jqmData(role='controlgroup')" - }, - - _create: function() { - var $el = this.element, - ui = { - inner: $( "
    " ), - legend: $( "
    " ) - }, - grouplegend = $el.children( "legend" ), - self = this; - - // Apply the proto - $el.wrapInner( ui.inner ); - if ( grouplegend.length ) { - ui.legend.append( grouplegend ).insertBefore( $el.children( 0 ) ); - } - $el.addClass( "ui-corner-all ui-controlgroup" ); - - $.extend( this, { - _initialRefresh: true - }); - - $.each( this.options, function( key, value ) { - // Cause initial options to be applied by their handler by temporarily setting the option to undefined - // - the handler then sets it to the initial value - self.options[ key ] = undefined; - self._setOption( key, value, true ); - }); - }, - - _init: function() { - this.refresh(); - }, - - _setOption: function( key, value ) { - var setter = "_set" + key.charAt( 0 ).toUpperCase() + key.slice( 1 ); - - if ( this[ setter ] !== undefined ) { - this[ setter ]( value ); - } - - this._super( key, value ); - this.element.attr( "data-" + ( $.mobile.ns || "" ) + ( key.replace( /([A-Z])/, "-$1" ).toLowerCase() ), value ); - }, - - _setType: function( value ) { - this.element - .removeClass( "ui-controlgroup-horizontal ui-controlgroup-vertical" ) - .addClass( "ui-controlgroup-" + value ); - this.refresh(); - }, - - _setCorners: function( value ) { - this.element.toggleClass( "ui-corner-all", value ); - }, - - _setShadow: function( value ) { - this.element.toggleClass( "ui-shadow", value ); - }, - - _setMini: function( value ) { - this.element.toggleClass( "ui-mini", value ); - }, - - container: function() { - return this.element.children( ".ui-controlgroup-controls" ); - }, - - refresh: function() { - var els = this.element.find( ".ui-btn" ).not( ".ui-slider-handle" ), - create = this._initialRefresh; - if ( $.mobile.checkboxradio ) { - this.element.find( ":mobile-checkboxradio" ).checkboxradio( "refresh" ); - } - this._addFirstLastClasses( els, this.options.excludeInvisible ? this._getVisibles( els, create ) : els, create ); - this._initialRefresh = false; - } - }, $.mobile.behaviors.addFirstLastClasses ) ); - - // TODO: Implement a mechanism to allow widgets to become enhanced in the - // correct order when their correct enhancement depends on other widgets in - // the page being correctly enhanced already. - // - // For now, we wait until dom-ready to attach the controlgroup's enhancement - // hook, because by that time, all the other widgets' enhancement hooks should - // already be in place, ensuring that all widgets that need to be grouped will - // already have been enhanced by the time the controlgroup is created. - $( function() { - $.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.controlgroup.prototype.enhanceWithin( e.target, true ); - }); - }); -})(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( $, undefined ) { - - - $.widget( "mobile.fixedtoolbar", $.mobile.widget, { - options: { - visibleOnPageShow: true, - disablePageZoom: true, - transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown) - fullscreen: false, - tapToggle: true, - tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-popup, .ui-panel, .ui-panel-dismiss-open", - hideDuringFocus: "input, textarea, select", - updatePagePadding: true, - trackPersistentToolbars: true, - - // Browser detection! Weeee, here we go... - // Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately. - // Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience. - // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window - // The following function serves to rule out some popular browsers with known fixed-positioning issues - // This is a plugin option like any other, so feel free to improve or overwrite it - supportBlacklist: function() { - return !$.support.fixedPosition; - }, - initSelector: ":jqmData(position='fixed')" - }, - - _create: function() { - - var self = this, - o = self.options, - $el = self.element, - tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer", - $page = $el.closest( ".ui-page" ); - - // Feature detecting support for - if ( o.supportBlacklist() ) { - self.destroy(); - return; - } - - $el.addClass( "ui-"+ tbtype +"-fixed" ); - - // "fullscreen" overlay positioning - if ( o.fullscreen ) { - $el.addClass( "ui-"+ tbtype +"-fullscreen" ); - $page.addClass( "ui-page-" + tbtype + "-fullscreen" ); - } - // If not fullscreen, add class to page to set top or bottom padding - else{ - $page.addClass( "ui-page-" + tbtype + "-fixed" ); - } - - $.extend( this, { - _thisPage: null - }); - - self._addTransitionClass(); - self._bindPageEvents(); - self._bindToggleHandlers(); - }, - - _addTransitionClass: function() { - var tclass = this.options.transition; - - if ( tclass && tclass !== "none" ) { - // use appropriate slide for header or footer - if ( tclass === "slide" ) { - tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup"; - } - - this.element.addClass( tclass ); - } - }, - - _bindPageEvents: function() { - this._thisPage = this.element.closest( ".ui-page" ); - //page event bindings - // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up - // This method is meant to disable zoom while a fixed-positioned toolbar page is visible - this._on( this._thisPage, { - "pagebeforeshow": "_handlePageBeforeShow", - "webkitAnimationStart":"_handleAnimationStart", - "animationstart":"_handleAnimationStart", - "updatelayout": "_handleAnimationStart", - "pageshow": "_handlePageShow", - "pagebeforehide": "_handlePageBeforeHide" - }); - }, - - _handlePageBeforeShow: function() { - var o = this.options; - if ( o.disablePageZoom ) { - $.mobile.zoom.disable( true ); - } - if ( !o.visibleOnPageShow ) { - this.hide( true ); - } - }, - - _handleAnimationStart: function() { - if ( this.options.updatePagePadding ) { - this.updatePagePadding( this._thisPage ); - } - }, - - _handlePageShow: function() { - this.updatePagePadding( this._thisPage ); - if ( this.options.updatePagePadding ) { - this._on( $.mobile.window, { "throttledresize": "updatePagePadding" } ); - } - }, - - _handlePageBeforeHide: function( e, ui ) { - var o = this.options; - - if ( o.disablePageZoom ) { - $.mobile.zoom.enable( true ); - } - if ( o.updatePagePadding ) { - this._off( $.mobile.window, "throttledresize" ); - } - - if ( o.trackPersistentToolbars ) { - var thisFooter = $( ".ui-footer-fixed:jqmData(id)", this._thisPage ), - thisHeader = $( ".ui-header-fixed:jqmData(id)", this._thisPage ), - nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ) || $(), - nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ) || $(); - - if ( nextFooter.length || nextHeader.length ) { - - nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer ); - - ui.nextPage.one( "pageshow", function() { - nextHeader.prependTo( this ); - nextFooter.appendTo( this ); - }); - } - } - }, - - _visible: true, - - // This will set the content element's top or bottom padding equal to the toolbar's height - updatePagePadding: function( tbPage ) { - var $el = this.element, - header = $el.is( ".ui-header" ), - pos = parseFloat( $el.css( header ? "top" : "bottom" ) ); - - // This behavior only applies to "fixed", not "fullscreen" - if ( this.options.fullscreen ) { return; } - - // tbPage argument can be a Page object or an event, if coming from throttled resize. - tbPage = ( tbPage && tbPage.type === undefined && tbPage ) || this._thisPage || $el.closest( ".ui-page" ); - $( tbPage ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() + pos ); - }, - - _useTransition: function( notransition ) { - var $win = $.mobile.window, - $el = this.element, - scroll = $win.scrollTop(), - elHeight = $el.height(), - pHeight = $el.closest( ".ui-page" ).height(), - viewportHeight = $.mobile.getScreenHeight(), - tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer"; - - return !notransition && - ( this.options.transition && this.options.transition !== "none" && - ( - ( tbtype === "header" && !this.options.fullscreen && scroll > elHeight ) || - ( tbtype === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight ) - ) || this.options.fullscreen - ); - }, - - show: function( notransition ) { - var hideClass = "ui-fixed-hidden", - $el = this.element; - - if ( this._useTransition( notransition ) ) { - $el - .removeClass( "out " + hideClass ) - .addClass( "in" ) - .animationComplete(function () { - $el.removeClass('in'); - }); - } - else { - $el.removeClass( hideClass ); - } - this._visible = true; - }, - - hide: function( notransition ) { - var hideClass = "ui-fixed-hidden", - $el = this.element, - // if it's a slide transition, our new transitions need the reverse class as well to slide outward - outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" ); - - if( this._useTransition( notransition ) ) { - $el - .addClass( outclass ) - .removeClass( "in" ) - .animationComplete(function() { - $el.addClass( hideClass ).removeClass( outclass ); - }); - } - else { - $el.addClass( hideClass ).removeClass( outclass ); - } - this._visible = false; - }, - - toggle: function() { - this[ this._visible ? "hide" : "show" ](); - }, - - _bindToggleHandlers: function() { - var self = this, - o = self.options, - $el = self.element, - delayShow, delayHide, - isVisible = true; - - // tap toggle - $el.closest( ".ui-page" ) - .bind( "vclick", function( e ) { - if ( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ) { - self.toggle(); - } - }) - .bind( "focusin focusout", function( e ) { - //this hides the toolbars on a keyboard pop to give more screen room and prevent ios bug which - //positions fixed toolbars in the middle of the screen on pop if the input is near the top or - //bottom of the screen addresses issues #4410 Footer navbar moves up when clicking on a textbox in an Android environment - //and issue #4113 Header and footer change their position after keyboard popup - iOS - //and issue #4410 Footer navbar moves up when clicking on a textbox in an Android environment - if ( screen.width < 1025 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ) { - //Fix for issue #4724 Moving through form in Mobile Safari with "Next" and "Previous" system - //controls causes fixed position, tap-toggle false Header to reveal itself - // isVisible instead of self._visible because the focusin and focusout events fire twice at the same time - // Also use a delay for hiding the toolbars because on Android native browser focusin is direclty followed - // by a focusout when a native selects opens and the other way around when it closes. - if ( e.type === "focusout" && !isVisible ) { - isVisible = true; - //wait for the stack to unwind and see if we have jumped to another input - clearTimeout( delayHide ); - delayShow = setTimeout( function() { - self.show(); - }, 0 ); - } else if ( e.type === "focusin" && !!isVisible ) { - //if we have jumped to another input clear the time out to cancel the show. - clearTimeout( delayShow ); - isVisible = false; - delayHide = setTimeout( function() { - self.hide(); - }, 0 ); - } - } - }); - }, - - _destroy: function() { - var $el = this.element, - header = $el.is( ".ui-header" ); - - $el.closest( ".ui-page" ).css( "padding-" + ( header ? "top" : "bottom" ), "" ); - $el.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" ); - $el.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" ); - } - - }); - - //auto self-init widgets - $.mobile.document - .bind( "pagecreate create", function( e ) { - - // DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element. - // This line ensures it still works, but we recommend moving the attribute to the toolbars themselves. - if ( $( e.target ).jqmData( "fullscreen" ) ) { - $( $.mobile.fixedtoolbar.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true ); - } - - $.mobile.fixedtoolbar.prototype.enhanceWithin( e.target ); - }); - -})( jQuery ); - -(function( $, undefined ) { - $.widget( "mobile.fixedtoolbar", $.mobile.fixedtoolbar, { - - _create: function() { - this._super(); - this._workarounds(); - }, - - //check the browser and version and run needed workarounds - _workarounds: function() { - var ua = navigator.userAgent, - platform = navigator.platform, - // Rendering engine is Webkit, and capture major version - wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ), - wkversion = !!wkmatch && wkmatch[ 1 ], - os = null, - self = this; - //set the os we are working in if it dosent match one with workarounds return - if( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ){ - os = "ios"; - } else if( ua.indexOf( "Android" ) > -1 ){ - os = "android"; - } else { - return; - } - //check os version if it dosent match one with workarounds return - if( os === "ios" ) { - //iOS workarounds - self._bindScrollWorkaround(); - } else if( os === "android" && wkversion && wkversion < 534 ) { - //Android 2.3 run all Android 2.3 workaround - self._bindScrollWorkaround(); - self._bindListThumbWorkaround(); - } else { - return; - } - }, - - //Utility class for checking header and footer positions relative to viewport - _viewportOffset: function() { - var $el = this.element, - header = $el.is( ".ui-header" ), - offset = Math.abs($el.offset().top - $.mobile.window.scrollTop()); - if( !header ) { - offset = Math.round(offset - $.mobile.window.height() + $el.outerHeight())-60; - } - return offset; - }, - - //bind events for _triggerRedraw() function - _bindScrollWorkaround: function() { - var self = this; - //bind to scrollstop and check if the toolbars are correctly positioned - this._on( $.mobile.window, { scrollstop: function() { - var viewportOffset = self._viewportOffset(); - //check if the header is visible and if its in the right place - if( viewportOffset > 2 && self._visible) { - self._triggerRedraw(); - } - }}); - }, - - //this addresses issue #4250 Persistent footer instability in v1.1 with long select lists in Android 2.3.3 - //and issue #3748 Android 2.x: Page transitions broken when fixed toolbars used - //the absolutely positioned thumbnail in a list view causes problems with fixed position buttons above in a nav bar - //setting the li's to -webkit-transform:translate3d(0,0,0); solves this problem to avoide potential issues in other - //platforms we scope this with the class ui-android-2x-fix - _bindListThumbWorkaround: function() { - this.element.closest(".ui-page").addClass( "ui-android-2x-fixed" ); - }, - //this addresses issues #4337 Fixed header problem after scrolling content on iOS and Android - //and device bugs project issue #1 Form elements can lose click hit area in position: fixed containers. - //this also addresses not on fixed toolbars page in docs - //adding 1px of padding to the bottom then removing it causes a "redraw" - //which positions the toolbars correctly (they will always be visually correct) - _triggerRedraw: function() { - var paddingBottom = parseFloat( $( ".ui-page-active" ).css( "padding-bottom" ) ); - //trigger page redraw to fix incorrectly positioned fixed elements - $( ".ui-page-active" ).css( "padding-bottom", ( paddingBottom + 1 ) +"px" ); - //if the padding is reset with out a timeout the reposition will not occure. - //this is independant of JQM the browser seems to need the time to react. - setTimeout( function() { - $( ".ui-page-active" ).css( "padding-bottom", paddingBottom + "px" ); - }, 0 ); - }, - - destroy: function() { - this._super(); - //Remove the class we added to the page previously in android 2.x - this.element.closest(".ui-page-active").removeClass( "ui-android-2x-fix" ); - } - }); - - })( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.panel", $.mobile.widget, { - options: { - classes: { - panel: "ui-panel", - panelOpen: "ui-panel-open", - panelClosed: "ui-panel-closed", - panelFixed: "ui-panel-fixed", - panelInner: "ui-panel-inner", - modal: "ui-panel-dismiss", - modalOpen: "ui-panel-dismiss-open", - pagePanel: "ui-page-panel", - pagePanelOpen: "ui-page-panel-open", - contentWrap: "ui-panel-content-wrap", - contentWrapOpen: "ui-panel-content-wrap-open", - contentWrapClosed: "ui-panel-content-wrap-closed", - contentFixedToolbar: "ui-panel-content-fixed-toolbar", - contentFixedToolbarOpen: "ui-panel-content-fixed-toolbar-open", - contentFixedToolbarClosed: "ui-panel-content-fixed-toolbar-closed", - animate: "ui-panel-animate" - }, - animate: true, - theme: "c", - position: "left", - dismissible: true, - display: "reveal", //accepts reveal, push, overlay - initSelector: ":jqmData(role='panel')", - swipeClose: true, - positionFixed: false - }, - - _panelID: null, - _closeLink: null, - _page: null, - _modal: null, - _panelInner: null, - _wrapper: null, - _fixedToolbar: null, - - _create: function() { - var self = this, - $el = self.element, - page = $el.closest( ":jqmData(role='page')" ), - _getPageTheme = function() { - var $theme = $.data( page[0], "mobilePage" ).options.theme, - $pageThemeClass = "ui-body-" + $theme; - return $pageThemeClass; - }, - _getPanelInner = function() { - var $panelInner = $el.find( "." + self.options.classes.panelInner ); - if ( $panelInner.length === 0 ) { - $panelInner = $el.children().wrapAll( '
    ' ).parent(); - } - return $panelInner; - }, - _getWrapper = function() { - var $wrapper = page.find( "." + self.options.classes.contentWrap ); - if ( $wrapper.length === 0 ) { - $wrapper = page.children( ".ui-header:not(:jqmData(position='fixed')), .ui-content:not(:jqmData(role='popup')), .ui-footer:not(:jqmData(position='fixed'))" ).wrapAll( '
    ' ).parent(); - if ( $.support.cssTransform3d && !!self.options.animate ) { - $wrapper.addClass( self.options.classes.animate ); - } - } - return $wrapper; - }, - _getFixedToolbar = function() { - var $fixedToolbar = page.find( "." + self.options.classes.contentFixedToolbar ); - if ( $fixedToolbar.length === 0 ) { - $fixedToolbar = page.find( ".ui-header:jqmData(position='fixed'), .ui-footer:jqmData(position='fixed')" ).addClass( self.options.classes.contentFixedToolbar ); - if ( $.support.cssTransform3d && !!self.options.animate ) { - $fixedToolbar.addClass( self.options.classes.animate ); - } - } - return $fixedToolbar; - }; - - // expose some private props to other methods - $.extend( this, { - _panelID: $el.attr( "id" ), - _closeLink: $el.find( ":jqmData(rel='close')" ), - _page: $el.closest( ":jqmData(role='page')" ), - _pageTheme: _getPageTheme(), - _panelInner: _getPanelInner(), - _wrapper: _getWrapper(), - _fixedToolbar: _getFixedToolbar() - }); - - self._addPanelClasses(); - self._wrapper.addClass( this.options.classes.contentWrapClosed ); - self._fixedToolbar.addClass( this.options.classes.contentFixedToolbarClosed ); - // add class to page so we can set "overflow-x: hidden;" for it to fix Android zoom issue - self._page.addClass( self.options.classes.pagePanel ); - - // if animating, add the class to do so - if ( $.support.cssTransform3d && !!self.options.animate ) { - this.element.addClass( self.options.classes.animate ); - } - - self._bindUpdateLayout(); - self._bindCloseEvents(); - self._bindLinkListeners(); - self._bindPageEvents(); - - if ( !!self.options.dismissible ) { - self._createModal(); - } - - self._bindSwipeEvents(); - }, - - _createModal: function( options ) { - var self = this; - - self._modal = $( "
    " ) - .on( "mousedown", function() { - self.close(); - }) - .appendTo( this._page ); - }, - - _getPosDisplayClasses: function( prefix ) { - return prefix + "-position-" + this.options.position + " " + prefix + "-display-" + this.options.display; - }, - - _getPanelClasses: function() { - var panelClasses = this.options.classes.panel + - " " + this._getPosDisplayClasses( this.options.classes.panel ) + - " " + this.options.classes.panelClosed; - - if ( this.options.theme ) { - panelClasses += " ui-body-" + this.options.theme; - } - if ( !!this.options.positionFixed ) { - panelClasses += " " + this.options.classes.panelFixed; - } - return panelClasses; - }, - - _addPanelClasses: function() { - this.element.addClass( this._getPanelClasses() ); - }, - - _bindCloseEvents: function() { - var self = this; - - self._closeLink.on( "click.panel" , function( e ) { - e.preventDefault(); - self.close(); - return false; - }); - self.element.on( "click.panel" , "a:jqmData(ajax='false')", function( e ) { - self.close(); - }); - }, - - _positionPanel: function() { - var self = this, - panelInnerHeight = self._panelInner.outerHeight(), - expand = panelInnerHeight > $.mobile.getScreenHeight(); - - if ( expand || !self.options.positionFixed ) { - if ( expand ) { - self._unfixPanel(); - $.mobile.resetActivePageHeight( panelInnerHeight ); - } - self._scrollIntoView( panelInnerHeight ); - } else { - self._fixPanel(); - } - }, - - _scrollIntoView: function( panelInnerHeight ) { - if ( panelInnerHeight < $( window ).scrollTop() ) { - window.scrollTo( 0, 0 ); - } - }, - - _bindFixListener: function() { - this._on( $( window ), { "throttledresize": "_positionPanel" }); - }, - - _unbindFixListener: function() { - this._off( $( window ), "throttledresize" ); - }, - - _unfixPanel: function() { - if ( !!this.options.positionFixed && $.support.fixedPosition ) { - this.element.removeClass( this.options.classes.panelFixed ); - } - }, - - _fixPanel: function() { - if ( !!this.options.positionFixed && $.support.fixedPosition ) { - this.element.addClass( this.options.classes.panelFixed ); - } - }, - - _bindUpdateLayout: function() { - var self = this; - - self.element.on( "updatelayout", function( e ) { - if ( self._open ) { - self._positionPanel(); - } - }); - }, - - _bindLinkListeners: function() { - var self = this; - - self._page.on( "click.panel" , "a", function( e ) { - if ( this.href.split( "#" )[ 1 ] === self._panelID && self._panelID !== undefined ) { - e.preventDefault(); - var $link = $( this ); - if ( ! $link.hasClass( "ui-link" ) ) { - $link.addClass( $.mobile.activeBtnClass ); - self.element.one( "panelopen panelclose", function() { - $link.removeClass( $.mobile.activeBtnClass ); - }); - } - self.toggle(); - return false; - } - }); - }, - - _bindSwipeEvents: function() { - var self = this, - area = self._modal ? self.element.add( self._modal ) : self.element; - - // on swipe, close the panel - if( !!self.options.swipeClose ) { - if ( self.options.position === "left" ) { - area.on( "swipeleft.panel", function( e ) { - self.close(); - }); - } else { - area.on( "swiperight.panel", function( e ) { - self.close(); - }); - } - } - }, - - _bindPageEvents: function() { - var self = this; - - self._page - // Close the panel if another panel on the page opens - .on( "panelbeforeopen", function( e ) { - if ( self._open && e.target !== self.element[ 0 ] ) { - self.close(); - } - }) - // clean up open panels after page hide - .on( "pagehide", function( e ) { - if ( self._open ) { - self.close( true ); - } - }) - // on escape, close? might need to have a target check too... - .on( "keyup.panel", function( e ) { - if ( e.keyCode === 27 && self._open ) { - self.close(); - } - }); - }, - - // state storage of open or closed - _open: false, - - _contentWrapOpenClasses: null, - _fixedToolbarOpenClasses: null, - _modalOpenClasses: null, - - open: function( immediate ) { - if ( !this._open ) { - var self = this, - o = self.options, - _openPanel = function() { - self._page.off( "panelclose" ); - self._page.jqmData( "panel", "open" ); - - if ( !immediate && $.support.cssTransform3d && !!o.animate ) { - self.element.add( self._wrapper ).on( self._transitionEndEvents, complete ); - } else { - setTimeout( complete, 0 ); - } - - if ( self.options.theme && self.options.display !== "overlay" ) { - self._page - .removeClass( self._pageTheme ) - .addClass( "ui-body-" + self.options.theme ); - } - - self.element.removeClass( o.classes.panelClosed ).addClass( o.classes.panelOpen ); - - self._positionPanel(); - - // Fix for IE7 min-height bug - if ( self.options.theme && self.options.display !== "overlay" ) { - self._wrapper.css( "min-height", self._page.css( "min-height" ) ); - } - - self._contentWrapOpenClasses = self._getPosDisplayClasses( o.classes.contentWrap ); - self._wrapper - .removeClass( o.classes.contentWrapClosed ) - .addClass( self._contentWrapOpenClasses + " " + o.classes.contentWrapOpen ); - - self._fixedToolbarOpenClasses = self._getPosDisplayClasses( o.classes.contentFixedToolbar ); - self._fixedToolbar - .removeClass( o.classes.contentFixedToolbarClosed ) - .addClass( self._fixedToolbarOpenClasses + " " + o.classes.contentFixedToolbarOpen ); - - self._modalOpenClasses = self._getPosDisplayClasses( o.classes.modal ) + " " + o.classes.modalOpen; - if ( self._modal ) { - self._modal.addClass( self._modalOpenClasses ); - } - }, - complete = function() { - self.element.add( self._wrapper ).off( self._transitionEndEvents, complete ); - - self._page.addClass( o.classes.pagePanelOpen ); - - self._bindFixListener(); - - self._trigger( "open" ); - }; - - if ( this.element.closest( ".ui-page-active" ).length < 0 ) { - immediate = true; - } - - self._trigger( "beforeopen" ); - - if ( self._page.jqmData('panel') === "open" ) { - self._page.on( "panelclose", function() { - _openPanel(); - }); - } else { - _openPanel(); - } - - self._open = true; - } - }, - - close: function( immediate ) { - if ( this._open ) { - var o = this.options, - self = this, - _closePanel = function() { - if ( !immediate && $.support.cssTransform3d && !!o.animate ) { - self.element.add( self._wrapper ).on( self._transitionEndEvents, complete ); - } else { - setTimeout( complete, 0 ); - } - - self._page.removeClass( o.classes.pagePanelOpen ); - self.element.removeClass( o.classes.panelOpen ); - self._wrapper.removeClass( o.classes.contentWrapOpen ); - self._fixedToolbar.removeClass( o.classes.contentFixedToolbarOpen ); - - if ( self._modal ) { - self._modal.removeClass( self._modalOpenClasses ); - } - }, - complete = function() { - if ( self.options.theme && self.options.display !== "overlay" ) { - self._page.removeClass( "ui-body-" + self.options.theme ).addClass( self._pageTheme ); - // reset fix for IE7 min-height bug - self._wrapper.css( "min-height", "" ); - } - self.element.add( self._wrapper ).off( self._transitionEndEvents, complete ); - self.element.addClass( o.classes.panelClosed ); - - self._wrapper - .removeClass( self._contentWrapOpenClasses ) - .addClass( o.classes.contentWrapClosed ); - - self._fixedToolbar - .removeClass( self._fixedToolbarOpenClasses ) - .addClass( o.classes.contentFixedToolbarClosed ); - - self._fixPanel(); - self._unbindFixListener(); - $.mobile.resetActivePageHeight(); - - self._page.jqmRemoveData( "panel" ); - self._trigger( "close" ); - }; - - if ( this.element.closest( ".ui-page-active" ).length < 0 ) { - immediate = true; - } - self._trigger( "beforeclose" ); - - _closePanel(); - - self._open = false; - } - }, - - toggle: function( options ) { - this[ this._open ? "close" : "open" ](); - }, - - _transitionEndEvents: "webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd", - - _destroy: function() { - var classes = this.options.classes, - theme = this.options.theme, - hasOtherSiblingPanels = this.element.siblings( "." + classes.panel ).length; - - // create - if ( !hasOtherSiblingPanels ) { - this._wrapper.children().unwrap(); - this._page.find( "a" ).unbind( "panelopen panelclose" ); - this._page.removeClass( classes.pagePanel ); - if ( this._open ) { - this._page.jqmRemoveData( "panel" ); - this._page.removeClass( classes.pagePanelOpen ); - if ( theme ) { - this._page.removeClass( "ui-body-" + theme ).addClass( this._pageTheme ); - } - $.mobile.resetActivePageHeight(); - } - } else if ( this._open ) { - this._wrapper.removeClass( classes.contentWrapOpen ); - this._fixedToolbar.removeClass( classes.contentFixedToolbarOpen ); - this._page.jqmRemoveData( "panel" ); - this._page.removeClass( classes.pagePanelOpen ); - if ( theme ) { - this._page.removeClass( "ui-body-" + theme ).addClass( this._pageTheme ); - } - } - - this._panelInner.children().unwrap(); - - this.element.removeClass( [ this._getPanelClasses(), classes.panelAnimate ].join( " " ) ) - .off( "swipeleft.panel swiperight.panel" ) - .off( "panelbeforeopen" ) - .off( "panelhide" ) - .off( "keyup.panel" ) - .off( "updatelayout" ); - - this._closeLink.off( "click.panel" ); - - if ( this._modal ) { - this._modal.remove(); - } - - // open and close - this.element.off( this._transitionEndEvents ) - .removeClass( [ classes.panelUnfixed, classes.panelClosed, classes.panelOpen ].join( " " ) ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { - $.mobile.panel.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.table", $.mobile.widget, { - - options: { - classes: { - table: "ui-table" - }, - initSelector: ":jqmData(role='table')" - }, - - _create: function() { - var self = this; - self.refresh( true ); - }, - - refresh: function (create) { - var self = this, - trs = this.element.find( "thead tr" ); - - if ( create ) { - this.element.addClass( this.options.classes.table ); - } - - // Expose headers and allHeaders properties on the widget - // headers references the THs within the first TR in the table - self.headers = this.element.find( "tr:eq(0)" ).children(); - - // allHeaders references headers, plus all THs in the thead, which may include several rows, or not - self.allHeaders = self.headers.add( trs.children() ); - - trs.each(function(){ - - var coltally = 0; - - $( this ).children().each(function( i ){ - - var span = parseInt( $( this ).attr( "colspan" ), 10 ), - sel = ":nth-child(" + ( coltally + 1 ) + ")"; - $( this ) - .jqmData( "colstart", coltally + 1 ); - - if( span ){ - for( var j = 0; j < span - 1; j++ ){ - coltally++; - sel += ", :nth-child(" + ( coltally + 1 ) + ")"; - } - } - - if ( create === undefined ) { - $(this).jqmData("cells", ""); - } - // Store "cells" data on header as a reference to all cells in the same column as this TH - $( this ) - .jqmData( "cells", self.element.find( "tr" ).not( trs.eq(0) ).not( this ).children( sel ) ); - - coltally++; - - }); - - }); - - // update table modes - if ( create === undefined ) { - this.element.trigger( 'refresh' ); - } - } - -}); - -//auto self-init widgets -$.mobile.document.bind( "pagecreate create", function( e ) { - $.mobile.table.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - - -(function( $, undefined ) { - -$.mobile.table.prototype.options.mode = "columntoggle"; - -$.mobile.table.prototype.options.columnBtnTheme = null; - -$.mobile.table.prototype.options.columnPopupTheme = null; - -$.mobile.table.prototype.options.columnBtnText = "Columns..."; - -$.mobile.table.prototype.options.classes = $.extend( - $.mobile.table.prototype.options.classes, - { - popup: "ui-table-columntoggle-popup", - columnBtn: "ui-table-columntoggle-btn", - priorityPrefix: "ui-table-priority-", - columnToggleTable: "ui-table-columntoggle" - } -); - -$.mobile.document.delegate( ":jqmData(role='table')", "tablecreate refresh", function( e ) { - - var $table = $( this ), - self = $table.data( "mobile-table" ), - event = e.type, - o = self.options, - ns = $.mobile.ns, - id = ( $table.attr( "id" ) || o.classes.popup ) + "-popup", /* TODO BETTER FALLBACK ID HERE */ - $menuButton, - $popup, - $menu, - $switchboard; - - if ( o.mode !== "columntoggle" ) { - return; - } - - if ( event !== "refresh" ) { - self.element.addClass( o.classes.columnToggleTable ); - - $menuButton = $( "
    " + o.columnBtnText + "" ), - $popup = $( "
    "), - $menu = $("
    "); - } - - // create the hide/show toggles - self.headers.not( "td" ).each(function( i ) { - - var priority = $( this ).jqmData( "priority" ), - $cells = $( this ).add( $( this ).jqmData( "cells" ) ); - - if ( priority ) { - - $cells.addClass( o.classes.priorityPrefix + priority ); - - if ( event !== "refresh" ) { - $("" ) - .appendTo( $menu ) - .children( 0 ) - .jqmData( "cells", $cells ) - .checkboxradio({ - theme: o.columnPopupTheme - }); - } else { - $( '#' + id + ' fieldset div:eq(' + i +')').find('input').jqmData( 'cells', $cells ); - } - } - }); - - if ( event !== "refresh" ) { - $menu.appendTo( $popup ); - } - - // bind change event listeners to inputs - TODO: move to a private method? - if ( $menu === undefined ) { - $switchboard = $('#' + id + ' fieldset'); - } else { - $switchboard = $menu; - } - - if ( event !== "refresh" ) { - $switchboard.on( "change", "input", function( e ){ - if( this.checked ){ - $( this ).jqmData( "cells" ).removeClass( "ui-table-cell-hidden" ).addClass( "ui-table-cell-visible" ); - } else { - $( this ).jqmData( "cells" ).removeClass( "ui-table-cell-visible" ).addClass( "ui-table-cell-hidden" ); - } - }); - - $menuButton - .insertBefore( $table ) - .buttonMarkup({ - theme: o.columnBtnTheme - }); - - $popup - .insertBefore( $table ) - .popup(); - } - - // refresh method - self.update = function(){ - $switchboard.find( "input" ).each( function(){ - if (this.checked) { - this.checked = $( this ).jqmData( "cells" ).eq(0).css( "display" ) === "table-cell"; - if (event === "refresh") { - $( this ).jqmData( "cells" ).addClass('ui-table-cell-visible'); - } - } else { - $( this ).jqmData( "cells" ).addClass('ui-table-cell-hidden'); - } - $( this ).checkboxradio( "refresh" ); - }); - }; - - $.mobile.window.on( "throttledresize", self.update ); - - self.update(); - -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.table.prototype.options.mode = "reflow"; - -$.mobile.table.prototype.options.classes = $.extend( - $.mobile.table.prototype.options.classes, - { - reflowTable: "ui-table-reflow", - cellLabels: "ui-table-cell-label" - } -); - -$.mobile.document.delegate( ":jqmData(role='table')", "tablecreate refresh", function( e ) { - - var $table = $( this ), - event = e.type, - self = $table.data( "mobile-table" ), - o = self.options; - - // If it's not reflow mode, return here. - if( o.mode !== "reflow" ){ - return; - } - - if ( event !== "refresh" ) { - self.element.addClass( o.classes.reflowTable ); - } - - // get headers in reverse order so that top-level headers are appended last - var reverseHeaders = $( self.allHeaders.get().reverse() ); - - // create the hide/show toggles - reverseHeaders.each(function( i ){ - var $cells = $( this ).jqmData( "cells" ), - colstart = $( this ).jqmData( "colstart" ), - hierarchyClass = $cells.not( this ).filter( "thead th" ).length && " ui-table-cell-label-top", - text = $(this).text(); - - if( text !== "" ){ - - if( hierarchyClass ){ - var iteration = parseInt( $( this ).attr( "colspan" ), 10 ), - filter = ""; - - if( iteration ){ - filter = "td:nth-child("+ iteration +"n + " + ( colstart ) +")"; - } - $cells.filter( filter ).prepend( "" + text + "" ); - } - else { - $cells.prepend( "" + text + "" ); - } - - } - }); - -}); - -})( jQuery ); - -(function( $, window ) { - - $.mobile.iosorientationfixEnabled = true; - - // This fix addresses an iOS bug, so return early if the UA claims it's something else. - var ua = navigator.userAgent; - if( !( /iPhone|iPad|iPod/.test( navigator.platform ) && /OS [1-5]_[0-9_]* like Mac OS X/i.test( ua ) && ua.indexOf( "AppleWebKit" ) > -1 ) ){ - $.mobile.iosorientationfixEnabled = false; - return; - } - - var zoom = $.mobile.zoom, - evt, x, y, z, aig; - - function checkTilt( e ) { - evt = e.originalEvent; - aig = evt.accelerationIncludingGravity; - - x = Math.abs( aig.x ); - y = Math.abs( aig.y ); - z = Math.abs( aig.z ); - - // If portrait orientation and in one of the danger zones - if ( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ) { - if ( zoom.enabled ) { - zoom.disable(); - } - } else if ( !zoom.enabled ) { - zoom.enable(); - } - } - - $.mobile.document.on( "mobileinit", function(){ - if( $.mobile.iosorientationfixEnabled ){ - $.mobile.window - .bind( "orientationchange.iosorientationfix", zoom.enable ) - .bind( "devicemotion.iosorientationfix", checkTilt ); - } - }); - -}( jQuery, this )); - -(function( $, window, undefined ) { - var $html = $( "html" ), - $head = $( "head" ), - $window = $.mobile.window; - - //remove initial build class (only present on first pageshow) - function hideRenderingClass() { - $html.removeClass( "ui-mobile-rendering" ); - } - - // trigger mobileinit event - useful hook for configuring $.mobile settings before they're used - $( window.document ).trigger( "mobileinit" ); - - // support conditions - // if device support condition(s) aren't met, leave things as they are -> a basic, usable experience, - // otherwise, proceed with the enhancements - if ( !$.mobile.gradeA() ) { - return; - } - - // override ajaxEnabled on platforms that have known conflicts with hash history updates - // or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini) - if ( $.mobile.ajaxBlacklist ) { - $.mobile.ajaxEnabled = false; - } - - // Add mobile, initial load "rendering" classes to docEl - $html.addClass( "ui-mobile ui-mobile-rendering" ); - - // This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire, - // this ensures the rendering class is removed after 5 seconds, so content is visible and accessible - setTimeout( hideRenderingClass, 5000 ); - - $.extend( $.mobile, { - // find and enhance the pages in the dom and transition to the first page. - initializePage: function() { - // find present pages - var path = $.mobile.path, - $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ), - hash = path.stripHash( path.stripQueryParams(path.parseLocation().hash) ), - hashPage = document.getElementById( hash ); - - // if no pages are found, create one with body's inner html - if ( !$pages.length ) { - $pages = $( "body" ).wrapInner( "
    " ).children( 0 ); - } - - // add dialogs, set data-url attrs - $pages.each(function() { - var $this = $( this ); - - // unless the data url is already set set it to the pathname - if ( !$this.jqmData( "url" ) ) { - $this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) || location.pathname + location.search ); - } - }); - - // define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback) - $.mobile.firstPage = $pages.first(); - - // define page container - $.mobile.pageContainer = $.mobile.firstPage.parent().addClass( "ui-mobile-viewport" ); - - // alert listeners that the pagecontainer has been determined for binding - // to events triggered on it - $window.trigger( "pagecontainercreate" ); - - // cue page loading message - $.mobile.showPageLoadingMsg(); - - //remove initial build class (only present on first pageshow) - hideRenderingClass(); - - // if hashchange listening is disabled, there's no hash deeplink, - // the hash is not valid (contains more than one # or does not start with #) - // or there is no page with that hash, change to the first page in the DOM - // Remember, however, that the hash can also be a path! - if ( ! ( $.mobile.hashListeningEnabled && - $.mobile.path.isHashValid( location.hash ) && - ( $( hashPage ).is( ':jqmData(role="page")' ) || - $.mobile.path.isPath( hash ) || - hash === $.mobile.dialogHashKey ) ) ) { - - // Store the initial destination - if ( $.mobile.path.isHashValid( location.hash ) ) { - $.mobile.urlHistory.initialDst = hash.replace( "#", "" ); - } - - // make sure to set initial popstate state if it exists - // so that navigation back to the initial page works properly - if( $.event.special.navigate.isPushStateEnabled() ) { - $.mobile.navigate.navigator.squash( path.parseLocation().href ); - } - - $.mobile.changePage( $.mobile.firstPage, { - transition: "none", - reverse: true, - changeHash: false, - fromHashChange: true - }); - } else { - // trigger hashchange or navigate to squash and record the correct - // history entry for an initial hash path - if( !$.event.special.navigate.isPushStateEnabled() ) { - $window.trigger( "hashchange", [true] ); - } else { - // TODO figure out how to simplify this interaction with the initial history entry - // at the bottom js/navigate/navigate.js - $.mobile.navigate.history.stack = []; - $.mobile.navigate( $.mobile.path.isPath( location.hash ) ? location.hash : location.href ); - } - } - } - }); - - // initialize events now, after mobileinit has occurred - $.mobile.navreadyDeferred.resolve(); - - // check which scrollTop value should be used by scrolling to 1 immediately at domready - // then check what the scroll top is. Android will report 0... others 1 - // note that this initial scroll won't hide the address bar. It's just for the check. - $(function() { - window.scrollTo( 0, 1 ); - - // if defaultHomeScroll hasn't been set yet, see if scrollTop is 1 - // it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar) - // so if it's 1, use 0 from now on - $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $.mobile.window.scrollTop() === 1 ) ? 0 : 1; - - //dom-ready inits - if ( $.mobile.autoInitializePage ) { - $.mobile.initializePage(); - } - - // window load event - // hide iOS browser chrome on load - $window.load( $.mobile.silentScroll ); - - if ( !$.support.cssPointerEvents ) { - // IE and Opera don't support CSS pointer-events: none that we use to disable link-based buttons - // by adding the 'ui-disabled' class to them. Using a JavaScript workaround for those browser. - // https://github.com/jquery/jquery-mobile/issues/3558 - - $.mobile.document.delegate( ".ui-disabled", "vclick", - function( e ) { - e.preventDefault(); - e.stopImmediatePropagation(); - } - ); - } - }); -}( jQuery, this )); - - -})); diff --git a/webclient/js/jquery.mobile-1.3.1.min.js b/webclient/js/jquery.mobile-1.3.1.min.js deleted file mode 100644 index a20cefe..0000000 --- a/webclient/js/jquery.mobile-1.3.1.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery Mobile 1.3.1 | Git HEAD hash: 74b4bec <> 2013-04-10T21:57:23Z | (c) 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */ -(function(e,t,i){"function"==typeof define&&define.amd?define(["jquery"],function(n){return i(n,e,t),n.mobile}):i(e.jQuery,e,t)})(this,document,function(e,t,i,n){(function(e){e.mobile={}})(e),function(e,t,n){var a={};e.mobile=e.extend(e.mobile,{version:"1.3.1",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},window:e(t),document:e(i),keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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},behaviors:{},silentScroll:function(i){"number"!==e.type(i)&&(i=e.mobile.defaultHomeScroll),e.event.special.scrollstart.enabled=!1,setTimeout(function(){t.scrollTo(0,i),e.mobile.document.trigger("silentscroll",{x:0,y:i})},20),setTimeout(function(){e.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:a,nsNormalize:function(t){return t?a[t]||(a[t]=e.camelCase(e.mobile.ns+t)):n},getInheritedTheme:function(e,t){for(var i,n,a=e[0],o="",s=/ui-(bar|body|overlay)-([a-z])\b/;a&&(i=a.className||"",!(i&&(n=s.exec(i))&&(o=n[2])));)a=a.parentNode;return o||t||"a"},closestPageData:function(e){return e.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("mobile-page")},enhanceable:function(e){return this.haveParents(e,"enhance")},hijackable:function(e){return this.haveParents(e,"ajax")},haveParents:function(t,i){if(!e.mobile.ignoreContentEnabled)return t;for(var n,a,o,s=t.length,r=e(),l=0;s>l;l++){for(a=t.eq(l),o=!1,n=t[l];n;){var d=n.getAttribute?n.getAttribute("data-"+e.mobile.ns+i):"";if("false"===d){o=!0;break}n=n.parentNode}o||(r=r.add(a))}return r},getScreenHeight:function(){return t.innerHeight||e.mobile.window.height()}},e.mobile),e.fn.jqmData=function(t,i){var a;return t!==n&&(t&&(t=e.mobile.nsNormalize(t)),a=2>arguments.length||i===n?this.data(t):this.data(t,i)),a},e.jqmData=function(t,i,a){var o;return i!==n&&(o=e.data(t,i?e.mobile.nsNormalize(i):i,a)),o},e.fn.jqmRemoveData=function(t){return this.removeData(e.mobile.nsNormalize(t))},e.jqmRemoveData=function(t,i){return e.removeData(t,e.mobile.nsNormalize(i))},e.fn.removeWithDependents=function(){e.removeWithDependents(this)},e.removeWithDependents=function(t){var i=e(t);(i.jqmData("dependents")||e()).remove(),i.remove()},e.fn.addDependents=function(t){e.addDependents(e(this),t)},e.addDependents=function(t,i){var n=e(t).jqmData("dependents")||e();e(t).jqmData("dependents",e.merge(n,i))},e.fn.getEncodedText=function(){return e("
    ").text(e(this).text()).html()},e.fn.jqmEnhanceable=function(){return e.mobile.enhanceable(this)},e.fn.jqmHijackable=function(){return e.mobile.hijackable(this)};var o=e.find,s=/:jqmData\(([^)]*)\)/g;e.find=function(t,i,n,a){return t=t.replace(s,"[data-"+(e.mobile.ns||"")+"$1]"),o.call(this,t,i,n,a)},e.extend(e.find,o),e.find.matches=function(t,i){return e.find(t,null,null,i)},e.find.matchesSelector=function(t,i){return e.find(i,null,null,[t]).length>0}}(e,this),function(e,t){var i=0,n=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,n=0;null!=(i=t[n]);n++)try{e(i).triggerHandler("remove")}catch(o){}a(t)},e.widget=function(i,n,a){var o,s,r,l,d=i.split(".")[0];i=i.split(".")[1],o=d+"-"+i,a||(a=n,n=e.Widget),e.expr[":"][o.toLowerCase()]=function(t){return!!e.data(t,o)},e[d]=e[d]||{},s=e[d][i],r=e[d][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new r(e,i)},e.extend(r,s,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),l=new n,l.options=e.widget.extend({},l.options),e.each(a,function(t,i){e.isFunction(i)&&(a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},a=function(e){return n.prototype[t].apply(this,e)};return function(){var t,n=this._super,o=this._superApply;return this._super=e,this._superApply=a,t=i.apply(this,arguments),this._super=n,this._superApply=o,t}}())}),r.prototype=e.widget.extend(l,{widgetEventPrefix:s?l.widgetEventPrefix:i},a,{constructor:r,namespace:d,widgetName:i,widgetFullName:o}),s?(e.each(s._childConstructors,function(t,i){var n=i.prototype;e.widget(n.namespace+"."+n.widgetName,r,i._proto)}),delete s._childConstructors):n._childConstructors.push(r),e.widget.bridge(i,r)},e.widget.extend=function(i){for(var a,o,s=n.call(arguments,1),r=0,l=s.length;l>r;r++)for(a in s[r])o=s[r][a],s[r].hasOwnProperty(a)&&o!==t&&(i[a]=e.isPlainObject(o)?e.isPlainObject(i[a])?e.widget.extend({},i[a],o):e.widget.extend({},o):o);return i},e.widget.bridge=function(i,a){var o=a.prototype.widgetFullName||i;e.fn[i]=function(s){var r="string"==typeof s,l=n.call(arguments,1),d=this;return s=!r&&l.length?e.widget.extend.apply(null,[s].concat(l)):s,r?this.each(function(){var n,a=e.data(this,o);return a?e.isFunction(a[s])&&"_"!==s.charAt(0)?(n=a[s].apply(a,l),n!==a&&n!==t?(d=n&&n.jquery?d.pushStack(n.get()):n,!1):t):e.error("no such method '"+s+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+s+"'")}):this.each(function(){var t=e.data(this,o);t?t.option(s||{})._init():e.data(this,o,new a(s,this))}),d}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{disabled:!1,create:null},_createWidget:function(t,n){n=e(n||this.defaultElement||this)[0],this.element=e(n),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),n!==this&&(e.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===n&&this.destroy()}}),this.document=e(n.style?n.ownerDocument:n.document||n),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,n){var a,o,s,r=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(r={},a=i.split("."),i=a.shift(),a.length){for(o=r[i]=e.widget.extend({},this.options[i]),s=0;a.length-1>s;s++)o[a[s]]=o[a[s]]||{},o=o[a[s]];if(i=a.pop(),n===t)return o[i]===t?null:o[i];o[i]=n}else{if(n===t)return this.options[i]===t?null:this.options[i];r[i]=n}return this._setOptions(r),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,n,a){var o,s=this;"boolean"!=typeof i&&(a=n,n=i,i=!1),a?(n=o=e(n),this.bindings=this.bindings.add(n)):(a=n,n=this.element,o=this.widget()),e.each(a,function(a,r){function l(){return i||s.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof r?s[r]:r).apply(s,arguments):t}"string"!=typeof r&&(l.guid=r.guid=r.guid||l.guid||e.guid++);var d=a.match(/^(\w+)\s*(.*)$/),c=d[1]+s.eventNamespace,h=d[2];h?o.delegate(h,c,l):n.bind(c,l)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?n[e]:e).apply(n,arguments)}var n=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,n){var a,o,s=this.options[t];if(n=n||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(a in o)a in i||(i[a]=o[a]);return this.element.trigger(i,n),!(e.isFunction(s)&&s.apply(this.element[0],[i].concat(n))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(n,a,o){"string"==typeof a&&(a={effect:a});var s,r=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),s=!e.isEmptyObject(a),a.complete=o,a.delay&&n.delay(a.delay),s&&e.effects&&e.effects.effect[r]?n[t](a):r!==t&&n[r]?n[r](a.duration,a.easing,o):n.queue(function(i){e(this)[t](),o&&o.call(n[0]),i()})}})}(e),function(e,t){e.widget("mobile.widget",{_createWidget:function(){e.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_getCreateOptions:function(){var i=this.element,n={};return e.each(this.options,function(e){var a=i.jqmData(e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()}));a!==t&&(n[e]=a)}),n},enhanceWithin:function(t,i){this.enhance(e(this.options.initSelector,e(t)),i)},enhance:function(t,i){var n,a,o=e(t);o=e.mobile.enhanceable(o),i&&o.length&&(n=e.mobile.closestPageData(o),a=n&&n.keepNativeSelector()||"",o=o.not(a)),o[this.widgetName]()},raise:function(e){throw"Widget ["+this.widgetName+"]: "+e}})}(e),function(e){e.extend(e.mobile,{loadingMessageTextVisible:n,loadingMessageTheme:n,loadingMessage:n,showPageLoadingMsg:function(t,i,n){e.mobile.loading("show",t,i,n)},hidePageLoadingMsg:function(){e.mobile.loading("hide")},loading:function(){this.loaderWidget.loader.apply(this.loaderWidget,arguments)}});var t="ui-loader",i=e("html"),a=e.mobile.window;e.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"
    "+""+"

    "+"
    ",fakeFixLoader:function(){var t=e("."+e.mobile.activeBtnClass).first();this.element.css({top:e.support.scrollTop&&a.scrollTop()+a.height()/2||t.length&&t.offset().top||100})},checkLoaderPosition:function(){var t=this.element.offset(),i=a.scrollTop(),n=e.mobile.getScreenHeight();(i>t.top||t.top-i>n)&&(this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),a.unbind("scroll",this.checkLoaderPosition).bind("scroll",e.proxy(this.fakeFixLoader,this)))},resetHtml:function(){this.element.html(e(this.defaultHtml).html())},show:function(o,s,r){var l,d,c;this.resetHtml(),"object"===e.type(o)?(c=e.extend({},this.options,o),o=c.theme||e.mobile.loadingMessageTheme):(c=this.options,o=o||e.mobile.loadingMessageTheme||c.theme),d=s||e.mobile.loadingMessage||c.text,i.addClass("ui-loading"),(e.mobile.loadingMessage!==!1||c.html)&&(l=e.mobile.loadingMessageTextVisible!==n?e.mobile.loadingMessageTextVisible:c.textVisible,this.element.attr("class",t+" ui-corner-all ui-body-"+o+" ui-loader-"+(l||s||o.text?"verbose":"default")+(c.textonly||r?" ui-loader-textonly":"")),c.html?this.element.html(c.html):this.element.find("h1").text(d),this.element.appendTo(e.mobile.pageContainer),this.checkLoaderPosition(),a.bind("scroll",e.proxy(this.checkLoaderPosition,this)))},hide:function(){i.removeClass("ui-loading"),e.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),e.mobile.window.unbind("scroll",this.fakeFixLoader),e.mobile.window.unbind("scroll",this.checkLoaderPosition)}}),a.bind("pagecontainercreate",function(){e.mobile.loaderWidget=e.mobile.loaderWidget||e(e.mobile.loader.prototype.defaultHtml).loader()})}(e,this),function(e,t,n){function a(e){return e=e||location.href,"#"+e.replace(/^[^#]*#?(.*)$/,"$1")}var o,s="hashchange",r=i,l=e.event.special,d=r.documentMode,c="on"+s in t&&(d===n||d>7);e.fn[s]=function(e){return e?this.bind(s,e):this.trigger(s)},e.fn[s].delay=50,l[s]=e.extend(l[s],{setup:function(){return c?!1:(e(o.start),n)},teardown:function(){return c?!1:(e(o.stop),n)}}),o=function(){function i(){var n=a(),r=p(d);n!==d?(u(d=n,r),e(t).trigger(s)):r!==d&&(location.href=location.href.replace(/#.*/,"")+r),o=setTimeout(i,e.fn[s].delay)}var o,l={},d=a(),h=function(e){return e},u=h,p=h;return l.start=function(){o||i()},l.stop=function(){o&&clearTimeout(o),o=n},t.attachEvent&&!t.addEventListener&&!c&&function(){var t,n;l.start=function(){t||(n=e.fn[s].src,n=n&&n+a(),t=e('