From d5101556717b147e8fb0b93b32fc6f509730b7a1 Mon Sep 17 00:00:00 2001 From: Wouter van Wijk Date: Wed, 18 Sep 2013 21:11:14 +0200 Subject: [PATCH 1/7] quick fix for soundcloud, sortof --- webclient/js/functionsvars.js | 21 ++++++++++++--------- webclient/js/library.js | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/webclient/js/functionsvars.js b/webclient/js/functionsvars.js index 41f8421..be5543f 100755 --- a/webclient/js/functionsvars.js +++ b/webclient/js/functionsvars.js @@ -153,6 +153,7 @@ function resultsToTables(results, target, uri) { var tableid, j, artistname, alburi; var targetmin = target.substr(1); $(target).attr('data', uri); +// console.log(results); var length = 0 || results.length; for ( i = 0; i < length; i++) { newalbum.push(results[i]); @@ -194,15 +195,17 @@ function resultsToTables(results, target, uri) { } else { html += '
  • '; html += '

    ' + results[i].album.name + '

    '; - for ( j = 0; j < results[i].album.artists.length; j++) { - html += results[i].album.artists[j].name; - html += (j == results[i].album.artists.length - 1) ? '' : ' / '; - //stop after 3 - if (j > 2) { - child += '...'; - break; - } - } + if (results[i].album.artists) { + for ( j = 0; j < results[i].album.artists.length; j++) { + html += results[i].album.artists[j].name; + html += (j == results[i].album.artists.length - 1) ? '' : ' / '; + //stop after 3 + if (j > 2) { + child += '...'; + break; + } + } + } html += '

  • '; for ( j = 0; j < newalbum.length; j++) { popupData[newalbum[j].uri] = newalbum[j]; diff --git a/webclient/js/library.js b/webclient/js/library.js index 29814d8..8cc50d5 100755 --- a/webclient/js/library.js +++ b/webclient/js/library.js @@ -166,6 +166,7 @@ function showTracklist(uri) { $('#playlisttracksdiv').show(); var pl = getPlaylistFromUri(uri); + console.log(uri, pl); //load from cache if (pl) { resultsToTables(pl.tracks, PLAYLIST_TABLE, uri); From fc4c6111da6d2db4f6017e74671cbf173d67ba68 Mon Sep 17 00:00:00 2001 From: Wouter van Wijk Date: Wed, 18 Sep 2013 21:15:23 +0200 Subject: [PATCH 2/7] even more quick fix for soundcloud --- webclient/js/functionsvars.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webclient/js/functionsvars.js b/webclient/js/functionsvars.js index be5543f..7fe811a 100755 --- a/webclient/js/functionsvars.js +++ b/webclient/js/functionsvars.js @@ -147,7 +147,9 @@ function resultsToTables(results, target, uri) { // var popupMenu = (target == CURRENT_PLAYLIST_TABLE) ? 'popupQueue' : 'popupTracks'; newalbum = []; $(target).html(''); - + //quick fix, sorry + if (!results) {exit;} + //break into albums and put in tables var html = ''; var tableid, j, artistname, alburi; From 43d80e9a773fcc8d45b7b2b9ad25157df09972a4 Mon Sep 17 00:00:00 2001 From: woutervanwijk Date: Tue, 12 Nov 2013 20:54:53 +0100 Subject: [PATCH 3/7] Merge branch 'master' into develop Conflicts: webclient/js/functionsvars.js --- AUTHORS | 1 + flatclient/README.md | 14 + flatclient/css/add2home.css | 160 + flatclient/css/font-awesome.css | 1361 ++ flatclient/css/font-awesome.min.css | 395 + flatclient/css/fonts/Flat-UI-Icons-24.ttf | Bin 0 -> 4484 bytes flatclient/css/fonts/Flat-UI-Icons-24.woff | Bin 0 -> 6076 bytes flatclient/css/fonts/lato-black.ttf | Bin 0 -> 39048 bytes flatclient/css/fonts/lato-black.woff | Bin 0 -> 35308 bytes flatclient/css/fonts/lato-bold.ttf | Bin 0 -> 39164 bytes flatclient/css/fonts/lato-bold.woff | Bin 0 -> 37256 bytes flatclient/css/fonts/lato-italic.ttf | Bin 0 -> 39696 bytes flatclient/css/fonts/lato-italic.woff | Bin 0 -> 36700 bytes flatclient/css/fonts/lato-regular.ttf | Bin 0 -> 38588 bytes flatclient/css/fonts/lato-regular.woff | Bin 0 -> 35852 bytes flatclient/css/images/ajax-loader.gif | Bin 0 -> 7825 bytes flatclient/css/images/icons-18-black.png | Bin 0 -> 1968 bytes flatclient/css/images/icons-18-white.png | Bin 0 -> 1988 bytes flatclient/css/images/icons-36-black.png | Bin 0 -> 3859 bytes flatclient/css/images/icons-36-white.png | Bin 0 -> 3861 bytes flatclient/css/iscroll-pull-icon@2x.png | Bin 0 -> 850 bytes .../css/jquery.mobile-1.3.1.css | 0 .../css/jquery.mobile-1.3.1.min.css | 0 .../css/jquery.mobile-1.4.0-alpha.2.css | 0 .../css/jquery.mobile-1.4.0-alpha.2.min.css | 0 flatclient/css/jquery.mobile.flatui.css | 3011 ++++ flatclient/css/jquery.mobile.flatui.min.css | 1 + .../css/jquery.mobile.iscrollview-pull.css | 112 + flatclient/css/jquery.mobile.iscrollview.css | 72 + .../css/jquery.mobile.structure-1.3.1.css | 0 .../css/jquery.mobile.structure-1.3.1.min.css | 0 .../jquery.mobile.structure-1.4.0-alpha.2.css | 0 ...ery.mobile.structure-1.4.0-alpha.2.min.css | 0 .../css/jquery.mobile.theme-1.3.1.css | 0 .../css/jquery.mobile.theme-1.3.1.min.css | 0 .../css/jquery.mobile.theme-1.4.0-alpha.2.css | 0 .../jquery.mobile.theme-1.4.0-alpha.2.min.css | 0 flatclient/css/webclient.css | 593 + flatclient/fonts/FontAwesome.otf | Bin 0 -> 63008 bytes flatclient/fonts/fontawesome-webfont.eot | Bin 0 -> 38239 bytes flatclient/fonts/fontawesome-webfont.svg | 414 + flatclient/fonts/fontawesome-webfont.ttf | Bin 0 -> 80776 bytes flatclient/fonts/fontawesome-webfont.woff | Bin 0 -> 44476 bytes flatclient/images/ajax-loader.gif | Bin 0 -> 7825 bytes flatclient/images/default_cover.png | Bin 0 -> 2986 bytes flatclient/images/empty.png | Bin 0 -> 97 bytes flatclient/images/icons-18-black.png | Bin 0 -> 1968 bytes flatclient/images/icons-18-white.png | Bin 0 -> 1988 bytes flatclient/images/icons-36-black.png | Bin 0 -> 3859 bytes flatclient/images/icons-36-white.png | Bin 0 -> 3861 bytes flatclient/images/icons/AUTHORS | 10 + flatclient/images/icons/LICENSE | 82 + flatclient/images/icons/arrow_down_12x12.png | Bin 0 -> 228 bytes flatclient/images/icons/arrow_down_16x16.png | Bin 0 -> 247 bytes flatclient/images/icons/arrow_down_24x24.png | Bin 0 -> 328 bytes flatclient/images/icons/arrow_down_32x32.png | Bin 0 -> 380 bytes flatclient/images/icons/arrow_down_8x8.png | Bin 0 -> 190 bytes .../images/icons/arrow_down_alt1_12x12.png | Bin 0 -> 270 bytes .../images/icons/arrow_down_alt1_16x16.png | Bin 0 -> 310 bytes .../images/icons/arrow_down_alt1_24x24.png | Bin 0 -> 395 bytes .../images/icons/arrow_down_alt1_32x32.png | Bin 0 -> 465 bytes .../images/icons/arrow_down_alt1_8x8.png | Bin 0 -> 203 bytes .../images/icons/arrow_left_alt1_12x12.png | Bin 0 -> 278 bytes .../images/icons/arrow_left_alt1_16x16.png | Bin 0 -> 313 bytes .../images/icons/arrow_left_alt1_24x24.png | Bin 0 -> 390 bytes .../images/icons/arrow_left_alt1_32x32.png | Bin 0 -> 486 bytes flatclient/images/icons/cd_12x12.png | Bin 0 -> 260 bytes flatclient/images/icons/cd_16x16.png | Bin 0 -> 277 bytes flatclient/images/icons/cd_24x24.png | Bin 0 -> 366 bytes flatclient/images/icons/cd_32x32.png | Bin 0 -> 469 bytes flatclient/images/icons/cd_8x8.png | Bin 0 -> 174 bytes flatclient/images/icons/cog_12x12.png | Bin 0 -> 273 bytes flatclient/images/icons/cog_16x16.png | Bin 0 -> 342 bytes flatclient/images/icons/cog_24x24.png | Bin 0 -> 443 bytes flatclient/images/icons/cog_32x32.png | Bin 0 -> 532 bytes flatclient/images/icons/cog_8x8.png | Bin 0 -> 168 bytes flatclient/images/icons/first_12x12.png | Bin 0 -> 204 bytes flatclient/images/icons/first_16x16.png | Bin 0 -> 217 bytes flatclient/images/icons/first_24x24.png | Bin 0 -> 267 bytes flatclient/images/icons/first_32x32.png | Bin 0 -> 306 bytes flatclient/images/icons/first_8x8.png | Bin 0 -> 171 bytes flatclient/images/icons/fork_21x24.png | Bin 0 -> 387 bytes flatclient/images/icons/headphones_12x11.png | Bin 0 -> 237 bytes flatclient/images/icons/headphones_16x14.png | Bin 0 -> 276 bytes flatclient/images/icons/headphones_24x21.png | Bin 0 -> 319 bytes flatclient/images/icons/headphones_32x28.png | Bin 0 -> 399 bytes flatclient/images/icons/headphones_8x7.png | Bin 0 -> 179 bytes flatclient/images/icons/heart_fill_12x11.png | Bin 0 -> 242 bytes flatclient/images/icons/heart_fill_16x14.png | Bin 0 -> 288 bytes flatclient/images/icons/heart_fill_24x21.png | Bin 0 -> 400 bytes flatclient/images/icons/heart_fill_32x28.png | Bin 0 -> 469 bytes flatclient/images/icons/heart_fill_8x7.png | Bin 0 -> 177 bytes .../images/icons/heart_stroke_12x11.png | Bin 0 -> 291 bytes .../images/icons/heart_stroke_16x14.png | Bin 0 -> 347 bytes .../images/icons/heart_stroke_24x21.png | Bin 0 -> 472 bytes .../images/icons/heart_stroke_32x28.png | Bin 0 -> 622 bytes flatclient/images/icons/heart_stroke_8x7.png | Bin 0 -> 213 bytes flatclient/images/icons/info_12x24.png | Bin 0 -> 242 bytes flatclient/images/icons/info_16x32.png | Bin 0 -> 271 bytes flatclient/images/icons/info_4x8.png | Bin 0 -> 151 bytes flatclient/images/icons/info_6x12.png | Bin 0 -> 201 bytes flatclient/images/icons/info_8x16.png | Bin 0 -> 198 bytes flatclient/images/icons/last_12x12.png | Bin 0 -> 209 bytes flatclient/images/icons/last_16x16.png | Bin 0 -> 221 bytes flatclient/images/icons/last_24x24.png | Bin 0 -> 265 bytes flatclient/images/icons/last_32x32.png | Bin 0 -> 310 bytes flatclient/images/icons/last_8x8.png | Bin 0 -> 165 bytes flatclient/images/icons/layers_24x21.png | Bin 0 -> 212 bytes flatclient/images/icons/list_12x11.png | Bin 0 -> 139 bytes flatclient/images/icons/list_16x14.png | Bin 0 -> 137 bytes flatclient/images/icons/list_24x21.png | Bin 0 -> 164 bytes flatclient/images/icons/list_32x28.png | Bin 0 -> 180 bytes flatclient/images/icons/list_8x7.png | Bin 0 -> 122 bytes flatclient/images/icons/list_nested_12x11.png | Bin 0 -> 158 bytes flatclient/images/icons/list_nested_16x14.png | Bin 0 -> 145 bytes flatclient/images/icons/list_nested_24x21.png | Bin 0 -> 188 bytes flatclient/images/icons/list_nested_32x28.png | Bin 0 -> 205 bytes flatclient/images/icons/list_nested_8x7.png | Bin 0 -> 133 bytes flatclient/images/icons/loop_12x12.png | Bin 0 -> 285 bytes flatclient/images/icons/loop_16x16.png | Bin 0 -> 321 bytes flatclient/images/icons/loop_24x24.png | Bin 0 -> 414 bytes flatclient/images/icons/loop_32x32.png | Bin 0 -> 503 bytes flatclient/images/icons/loop_8x8.png | Bin 0 -> 217 bytes flatclient/images/icons/loop_alt1_12x9.png | Bin 0 -> 258 bytes flatclient/images/icons/loop_alt1_16x12.png | Bin 0 -> 274 bytes flatclient/images/icons/loop_alt1_24x18.png | Bin 0 -> 374 bytes flatclient/images/icons/loop_alt1_32x24.png | Bin 0 -> 440 bytes flatclient/images/icons/loop_alt1_8x6.png | Bin 0 -> 181 bytes flatclient/images/icons/loop_alt2_12x11.png | Bin 0 -> 278 bytes flatclient/images/icons/loop_alt2_16x14.png | Bin 0 -> 303 bytes flatclient/images/icons/loop_alt2_24x21.png | Bin 0 -> 409 bytes flatclient/images/icons/loop_alt2_32x28.png | Bin 0 -> 493 bytes flatclient/images/icons/loop_alt2_8x7.png | Bin 0 -> 199 bytes flatclient/images/icons/loop_alt3_12x9.png | Bin 0 -> 241 bytes flatclient/images/icons/loop_alt3_16x12.png | Bin 0 -> 262 bytes flatclient/images/icons/loop_alt3_24x18.png | Bin 0 -> 345 bytes flatclient/images/icons/loop_alt3_32x24.png | Bin 0 -> 388 bytes flatclient/images/icons/loop_alt3_8x6.png | Bin 0 -> 177 bytes flatclient/images/icons/loop_alt4_12x9.png | Bin 0 -> 212 bytes flatclient/images/icons/loop_alt4_16x12.png | Bin 0 -> 234 bytes flatclient/images/icons/loop_alt4_24x18.png | Bin 0 -> 308 bytes flatclient/images/icons/loop_alt4_32x24.png | Bin 0 -> 380 bytes flatclient/images/icons/loop_alt4_8x6.png | Bin 0 -> 171 bytes .../images/icons/magnifying_glass_12x12.png | Bin 0 -> 273 bytes .../images/icons/magnifying_glass_16x16.png | Bin 0 -> 323 bytes .../images/icons/magnifying_glass_24x24.png | Bin 0 -> 443 bytes .../images/icons/magnifying_glass_32x32.png | Bin 0 -> 543 bytes .../images/icons/magnifying_glass_8x8.png | Bin 0 -> 199 bytes flatclient/images/icons/mic_18x24.png | Bin 0 -> 371 bytes flatclient/images/icons/new_window_16x16.png | Bin 0 -> 166 bytes flatclient/images/icons/new_window_24x24.png | Bin 0 -> 174 bytes flatclient/images/icons/pause_12x16.png | Bin 0 -> 131 bytes flatclient/images/icons/pause_18x24.png | Bin 0 -> 140 bytes flatclient/images/icons/pause_24x32.png | Bin 0 -> 152 bytes flatclient/images/icons/pause_32x32.png | Bin 0 -> 179 bytes flatclient/images/icons/pause_6x8.png | Bin 0 -> 126 bytes flatclient/images/icons/pause_9x12.png | Bin 0 -> 128 bytes flatclient/images/icons/play_12x16.png | Bin 0 -> 205 bytes flatclient/images/icons/play_18x24.png | Bin 0 -> 245 bytes flatclient/images/icons/play_24x32.png | Bin 0 -> 286 bytes flatclient/images/icons/play_32x32.png | Bin 0 -> 306 bytes flatclient/images/icons/play_6x8.png | Bin 0 -> 163 bytes flatclient/images/icons/play_9x12.png | Bin 0 -> 184 bytes flatclient/images/icons/play_alt_12x12.png | Bin 0 -> 275 bytes flatclient/images/icons/play_alt_16x16.png | Bin 0 -> 283 bytes flatclient/images/icons/play_alt_24x24.png | Bin 0 -> 365 bytes flatclient/images/icons/play_alt_32x32.png | Bin 0 -> 461 bytes flatclient/images/icons/play_alt_8x8.png | Bin 0 -> 201 bytes flatclient/images/icons/reload_12x14.png | Bin 0 -> 299 bytes flatclient/images/icons/reload_18x21.png | Bin 0 -> 367 bytes flatclient/images/icons/reload_24x28.png | Bin 0 -> 440 bytes flatclient/images/icons/reload_6x7.png | Bin 0 -> 182 bytes flatclient/images/icons/reload_9x11.png | Bin 0 -> 250 bytes flatclient/images/icons/reload_alt_12x14.png | Bin 0 -> 281 bytes flatclient/images/icons/reload_alt_18x21.png | Bin 0 -> 359 bytes flatclient/images/icons/reload_alt_24x28.png | Bin 0 -> 444 bytes flatclient/images/icons/reload_alt_6x7.png | Bin 0 -> 180 bytes flatclient/images/icons/reload_alt_9x11.png | Bin 0 -> 243 bytes flatclient/images/icons/user_24x32.png | Bin 0 -> 408 bytes flatclient/images/icons/volume_12x9.png | Bin 0 -> 231 bytes flatclient/images/icons/volume_16x12.png | Bin 0 -> 242 bytes flatclient/images/icons/volume_24x18.png | Bin 0 -> 333 bytes flatclient/images/icons/volume_32x24.png | Bin 0 -> 397 bytes flatclient/images/icons/volume_8x6.png | Bin 0 -> 158 bytes flatclient/images/icons/volume_mute_12x9.png | Bin 0 -> 203 bytes flatclient/images/icons/volume_mute_16x12.png | Bin 0 -> 209 bytes flatclient/images/icons/volume_mute_24x18.png | Bin 0 -> 273 bytes flatclient/images/icons/volume_mute_32x24.png | Bin 0 -> 310 bytes flatclient/images/icons/volume_mute_8x6.png | Bin 0 -> 158 bytes flatclient/images/loader.gif | Bin 0 -> 7364 bytes flatclient/images/start.jpg | Bin 0 -> 10588 bytes flatclient/index.html | 391 + flatclient/js/add2home.js | 342 + flatclient/js/controls.js | 522 + flatclient/js/fastclick.js | 639 + flatclient/js/functionsvars.js | 438 + flatclient/js/gui.js | 568 + flatclient/js/iscroll-lite.js | 594 + flatclient/js/iscroll.js | 1104 ++ flatclient/js/jquery-1.10.2.js | 9789 +++++++++++ flatclient/js/jquery-1.10.2.min.js | 6 + flatclient/js/jquery-1.10.2.min.map | 1 + flatclient/js/jquery-1.8.3.js | 9472 ++++++++++ flatclient/js/jquery-1.8.3.min.js | 2 + flatclient/js/jquery-2.0.3.min.js | 6 + flatclient/js/jquery.ba-hashchange.min.js | 9 + flatclient/js/jquery.cookie.js | 96 + .../js/jquery.mobile-1.3.1.js | 0 .../js/jquery.mobile-1.3.1.min.js | 0 .../js/jquery.mobile-1.3.1.min.map | 0 flatclient/js/jquery.mobile-1.3.2.min.js | 9 + .../js/jquery.mobile-1.4.0-alpha.2.js | 0 .../js/jquery.mobile-1.4.0-alpha.2.min.js | 0 .../js/jquery.mobile-1.4.0-alpha.2.min.map | 0 .../jquery.mobile.iscrollview-closure-min.js | 51 + .../js/jquery.mobile.iscrollview-yui-min.js | 1 + flatclient/js/jquery.mobile.iscrollview.js | 1860 ++ flatclient/js/jquery.touchwipe.min.js | 10 + flatclient/js/jquery.truncate.min.js | 1 + flatclient/js/lastfm.api.cache.js | 127 + flatclient/js/lastfm.api.js | 844 + flatclient/js/lastfm.api.md5.js | 257 + flatclient/js/lastfm.js | 47 + flatclient/js/library.js | 236 + flatclient/js/process_ws.js | 146 + flatclient/mb.manifest | 196 + screenshots/album_mobile.png | Bin 0 -> 51357 bytes screenshots/navigation_mobile.png | Bin 0 -> 27993 bytes screenshots/nowplaying_mobile.png | Bin 0 -> 230915 bytes screenshots/playlists_desktop.png | Bin 0 -> 83749 bytes screenshots/search_desktop.png | Bin 0 -> 51661 bytes screenshots/search_mobile.png | Bin 0 -> 24293 bytes webclient/css/images/ajax-loader.gif | Bin 7825 -> 6242 bytes .../css/images/icons-png/action-black.png | Bin 0 -> 180 bytes .../css/images/icons-png/action-white.png | Bin 0 -> 204 bytes .../css/images/icons-png/alert-black.png | Bin 0 -> 197 bytes .../css/images/icons-png/alert-white.png | Bin 0 -> 224 bytes .../css/images/icons-png/arrow-d-black.png | Bin 0 -> 107 bytes .../css/images/icons-png/arrow-d-l-black.png | Bin 0 -> 123 bytes .../css/images/icons-png/arrow-d-l-white.png | Bin 0 -> 125 bytes .../css/images/icons-png/arrow-d-r-black.png | Bin 0 -> 121 bytes .../css/images/icons-png/arrow-d-r-white.png | Bin 0 -> 126 bytes .../css/images/icons-png/arrow-d-white.png | Bin 0 -> 109 bytes .../css/images/icons-png/arrow-l-black.png | Bin 0 -> 107 bytes .../css/images/icons-png/arrow-l-white.png | Bin 0 -> 115 bytes .../css/images/icons-png/arrow-r-black.png | Bin 0 -> 109 bytes .../css/images/icons-png/arrow-r-white.png | Bin 0 -> 112 bytes .../css/images/icons-png/arrow-u-black.png | Bin 0 -> 108 bytes .../css/images/icons-png/arrow-u-l-black.png | Bin 0 -> 121 bytes .../css/images/icons-png/arrow-u-l-white.png | Bin 0 -> 119 bytes .../css/images/icons-png/arrow-u-r-black.png | Bin 0 -> 122 bytes .../css/images/icons-png/arrow-u-r-white.png | Bin 0 -> 118 bytes .../css/images/icons-png/arrow-u-white.png | Bin 0 -> 111 bytes .../css/images/icons-png/audio-black.png | Bin 0 -> 228 bytes .../css/images/icons-png/audio-white.png | Bin 0 -> 260 bytes webclient/css/images/icons-png/back-black.png | Bin 0 -> 191 bytes webclient/css/images/icons-png/back-white.png | Bin 0 -> 218 bytes webclient/css/images/icons-png/bars-black.png | Bin 0 -> 94 bytes webclient/css/images/icons-png/bars-white.png | Bin 0 -> 99 bytes .../css/images/icons-png/bullets-black.png | Bin 0 -> 111 bytes .../css/images/icons-png/bullets-white.png | Bin 0 -> 118 bytes .../css/images/icons-png/calendar-black.png | Bin 0 -> 100 bytes .../css/images/icons-png/calendar-white.png | Bin 0 -> 106 bytes .../css/images/icons-png/camera-black.png | Bin 0 -> 173 bytes .../css/images/icons-png/camera-white.png | Bin 0 -> 195 bytes .../css/images/icons-png/carat-d-black.png | Bin 0 -> 108 bytes .../css/images/icons-png/carat-d-white.png | Bin 0 -> 111 bytes .../css/images/icons-png/carat-l-black.png | Bin 0 -> 91 bytes .../css/images/icons-png/carat-l-white.png | Bin 0 -> 93 bytes .../css/images/icons-png/carat-r-black.png | Bin 0 -> 92 bytes .../css/images/icons-png/carat-r-white.png | Bin 0 -> 95 bytes .../css/images/icons-png/carat-u-black.png | Bin 0 -> 105 bytes .../css/images/icons-png/carat-u-white.png | Bin 0 -> 108 bytes .../css/images/icons-png/check-black.png | Bin 0 -> 125 bytes .../css/images/icons-png/check-white.png | Bin 0 -> 135 bytes .../css/images/icons-png/clock-black.png | Bin 0 -> 257 bytes .../css/images/icons-png/clock-white.png | Bin 0 -> 296 bytes .../css/images/icons-png/cloud-black.png | Bin 0 -> 157 bytes .../css/images/icons-png/cloud-white.png | Bin 0 -> 179 bytes .../css/images/icons-png/comment-black.png | Bin 0 -> 121 bytes .../css/images/icons-png/comment-white.png | Bin 0 -> 130 bytes .../css/images/icons-png/delete-black.png | Bin 0 -> 126 bytes .../css/images/icons-png/delete-white.png | Bin 0 -> 128 bytes webclient/css/images/icons-png/edit-black.png | Bin 0 -> 124 bytes webclient/css/images/icons-png/edit-white.png | Bin 0 -> 129 bytes webclient/css/images/icons-png/eye-black.png | Bin 0 -> 207 bytes webclient/css/images/icons-png/eye-white.png | Bin 0 -> 233 bytes .../css/images/icons-png/forbidden-black.png | Bin 0 -> 257 bytes .../css/images/icons-png/forbidden-white.png | Bin 0 -> 285 bytes .../css/images/icons-png/forward-black.png | Bin 0 -> 192 bytes .../css/images/icons-png/forward-white.png | Bin 0 -> 223 bytes webclient/css/images/icons-png/gear-black.png | Bin 0 -> 247 bytes webclient/css/images/icons-png/gear-white.png | Bin 0 -> 285 bytes webclient/css/images/icons-png/grid-black.png | Bin 0 -> 120 bytes webclient/css/images/icons-png/grid-white.png | Bin 0 -> 129 bytes .../css/images/icons-png/heart-black.png | Bin 0 -> 198 bytes .../css/images/icons-png/heart-white.png | Bin 0 -> 228 bytes webclient/css/images/icons-png/home-black.png | Bin 0 -> 110 bytes webclient/css/images/icons-png/home-white.png | Bin 0 -> 114 bytes webclient/css/images/icons-png/info-black.png | Bin 0 -> 200 bytes webclient/css/images/icons-png/info-white.png | Bin 0 -> 227 bytes .../css/images/icons-png/location-black.png | Bin 0 -> 169 bytes .../css/images/icons-png/location-white.png | Bin 0 -> 189 bytes webclient/css/images/icons-png/lock-black.png | Bin 0 -> 164 bytes webclient/css/images/icons-png/lock-white.png | Bin 0 -> 182 bytes webclient/css/images/icons-png/mail-black.png | Bin 0 -> 179 bytes webclient/css/images/icons-png/mail-white.png | Bin 0 -> 199 bytes .../css/images/icons-png/minus-black.png | Bin 0 -> 68 bytes .../css/images/icons-png/minus-white.png | Bin 0 -> 70 bytes .../css/images/icons-png/navigation-black.png | Bin 0 -> 160 bytes .../css/images/icons-png/navigation-white.png | Bin 0 -> 178 bytes .../css/images/icons-png/phone-black.png | Bin 0 -> 211 bytes .../css/images/icons-png/phone-white.png | Bin 0 -> 226 bytes webclient/css/images/icons-png/plus-black.png | Bin 0 -> 85 bytes webclient/css/images/icons-png/plus-white.png | Bin 0 -> 86 bytes .../css/images/icons-png/power-black.png | Bin 0 -> 222 bytes .../css/images/icons-png/power-white.png | Bin 0 -> 252 bytes .../css/images/icons-png/recycle-black.png | Bin 0 -> 198 bytes .../css/images/icons-png/recycle-white.png | Bin 0 -> 229 bytes .../css/images/icons-png/refresh-black.png | Bin 0 -> 225 bytes .../css/images/icons-png/refresh-white.png | Bin 0 -> 245 bytes .../css/images/icons-png/search-black.png | Bin 0 -> 226 bytes .../css/images/icons-png/search-white.png | Bin 0 -> 252 bytes webclient/css/images/icons-png/shop-black.png | Bin 0 -> 129 bytes webclient/css/images/icons-png/shop-white.png | Bin 0 -> 141 bytes webclient/css/images/icons-png/star-black.png | Bin 0 -> 190 bytes webclient/css/images/icons-png/star-white.png | Bin 0 -> 216 bytes webclient/css/images/icons-png/tag-black.png | Bin 0 -> 119 bytes webclient/css/images/icons-png/tag-white.png | Bin 0 -> 121 bytes webclient/css/images/icons-png/user-black.png | Bin 0 -> 199 bytes webclient/css/images/icons-png/user-white.png | Bin 0 -> 229 bytes .../css/images/icons-png/video-black.png | Bin 0 -> 129 bytes .../css/images/icons-png/video-white.png | Bin 0 -> 141 bytes webclient/css/jquery.mobile-1.4.0-beta.1.css | 4732 +++++ .../css/jquery.mobile-1.4.0-beta.1.min.css | 3 + ...query.mobile.external-png-1.4.0-beta.1.css | 4375 +++++ ...y.mobile.external-png-1.4.0-beta.1.min.css | 3 + .../jquery.mobile.inline-png-1.4.0-beta.1.css | 4375 +++++ ...ery.mobile.inline-png-1.4.0-beta.1.min.css | 3 + .../jquery.mobile.inline-svg-1.4.0-beta.1.css | 4375 +++++ ...ery.mobile.inline-svg-1.4.0-beta.1.min.css | 3 + .../jquery.mobile.structure-1.4.0-beta.1.css | 3454 ++++ ...uery.mobile.structure-1.4.0-beta.1.min.css | 3 + .../css/jquery.mobile.theme-1.4.0-beta.1.css | 578 + .../jquery.mobile.theme-1.4.0-beta.1.min.css | 3 + webclient/css/webclient.css | 12 +- webclient/images/icons-png/action-black.png | Bin 242 -> 0 bytes webclient/images/icons-png/action-white.png | Bin 260 -> 0 bytes webclient/images/icons-png/alert-black.png | Bin 248 -> 0 bytes webclient/images/icons-png/alert-white.png | Bin 266 -> 0 bytes webclient/images/icons-png/arrow-d-black.png | Bin 163 -> 0 bytes .../images/icons-png/arrow-d-l-black.png | Bin 172 -> 0 bytes .../images/icons-png/arrow-d-l-white.png | Bin 177 -> 0 bytes .../images/icons-png/arrow-d-r-black.png | Bin 194 -> 0 bytes .../images/icons-png/arrow-d-r-white.png | Bin 177 -> 0 bytes webclient/images/icons-png/arrow-d-white.png | Bin 166 -> 0 bytes webclient/images/icons-png/arrow-l-black.png | Bin 168 -> 0 bytes webclient/images/icons-png/arrow-l-white.png | Bin 164 -> 0 bytes webclient/images/icons-png/arrow-r-black.png | Bin 165 -> 0 bytes webclient/images/icons-png/arrow-r-white.png | Bin 171 -> 0 bytes webclient/images/icons-png/arrow-u-black.png | Bin 159 -> 0 bytes .../images/icons-png/arrow-u-l-black.png | Bin 183 -> 0 bytes .../images/icons-png/arrow-u-l-white.png | Bin 170 -> 0 bytes .../images/icons-png/arrow-u-r-black.png | Bin 181 -> 0 bytes .../images/icons-png/arrow-u-r-white.png | Bin 171 -> 0 bytes webclient/images/icons-png/arrow-u-white.png | Bin 162 -> 0 bytes webclient/images/icons-png/audio-black.png | Bin 318 -> 0 bytes webclient/images/icons-png/audio-white.png | Bin 373 -> 0 bytes webclient/images/icons-png/back-black.png | Bin 250 -> 0 bytes webclient/images/icons-png/back-white.png | Bin 273 -> 0 bytes webclient/images/icons-png/bars-black.png | Bin 140 -> 0 bytes webclient/images/icons-png/bars-white.png | Bin 151 -> 0 bytes webclient/images/icons-png/bullets-black.png | Bin 161 -> 0 bytes webclient/images/icons-png/bullets-white.png | Bin 164 -> 0 bytes webclient/images/icons-png/calendar-black.png | Bin 157 -> 0 bytes webclient/images/icons-png/calendar-white.png | Bin 165 -> 0 bytes webclient/images/icons-png/camera-black.png | Bin 234 -> 0 bytes webclient/images/icons-png/camera-white.png | Bin 278 -> 0 bytes webclient/images/icons-png/carat-d-black.png | Bin 156 -> 0 bytes webclient/images/icons-png/carat-d-white.png | Bin 159 -> 0 bytes webclient/images/icons-png/carat-l-black.png | Bin 169 -> 0 bytes webclient/images/icons-png/carat-l-white.png | Bin 159 -> 0 bytes webclient/images/icons-png/carat-r-black.png | Bin 173 -> 0 bytes webclient/images/icons-png/carat-r-white.png | Bin 157 -> 0 bytes webclient/images/icons-png/carat-u-black.png | Bin 152 -> 0 bytes webclient/images/icons-png/carat-u-white.png | Bin 158 -> 0 bytes webclient/images/icons-png/check-black.png | Bin 182 -> 0 bytes webclient/images/icons-png/check-white.png | Bin 199 -> 0 bytes webclient/images/icons-png/clock-black.png | Bin 319 -> 0 bytes webclient/images/icons-png/clock-white.png | Bin 347 -> 0 bytes webclient/images/icons-png/cloud-black.png | Bin 215 -> 0 bytes webclient/images/icons-png/cloud-white.png | Bin 230 -> 0 bytes webclient/images/icons-png/comment-black.png | Bin 169 -> 0 bytes webclient/images/icons-png/comment-white.png | Bin 184 -> 0 bytes webclient/images/icons-png/delete-black.png | Bin 187 -> 0 bytes webclient/images/icons-png/delete-white.png | Bin 190 -> 0 bytes webclient/images/icons-png/edit-black.png | Bin 193 -> 0 bytes webclient/images/icons-png/edit-white.png | Bin 204 -> 0 bytes webclient/images/icons-png/eye-black.png | Bin 250 -> 0 bytes webclient/images/icons-png/eye-white.png | Bin 282 -> 0 bytes .../images/icons-png/forbidden-black.png | Bin 307 -> 0 bytes .../images/icons-png/forbidden-white.png | Bin 332 -> 0 bytes webclient/images/icons-png/forward-black.png | Bin 257 -> 0 bytes webclient/images/icons-png/forward-white.png | Bin 290 -> 0 bytes webclient/images/icons-png/gear-black.png | Bin 325 -> 0 bytes webclient/images/icons-png/gear-white.png | Bin 374 -> 0 bytes webclient/images/icons-png/grid-black.png | Bin 167 -> 0 bytes webclient/images/icons-png/grid-white.png | Bin 177 -> 0 bytes webclient/images/icons-png/heart-black.png | Bin 250 -> 0 bytes webclient/images/icons-png/heart-white.png | Bin 281 -> 0 bytes webclient/images/icons-png/home-black.png | Bin 168 -> 0 bytes webclient/images/icons-png/home-white.png | Bin 171 -> 0 bytes webclient/images/icons-png/info-black.png | Bin 264 -> 0 bytes webclient/images/icons-png/info-white.png | Bin 295 -> 0 bytes webclient/images/icons-png/location-black.png | Bin 239 -> 0 bytes webclient/images/icons-png/location-white.png | Bin 278 -> 0 bytes webclient/images/icons-png/lock-black.png | Bin 216 -> 0 bytes webclient/images/icons-png/lock-white.png | Bin 240 -> 0 bytes webclient/images/icons-png/mail-black.png | Bin 227 -> 0 bytes webclient/images/icons-png/mail-white.png | Bin 256 -> 0 bytes webclient/images/icons-png/minus-black.png | Bin 116 -> 0 bytes webclient/images/icons-png/minus-white.png | Bin 116 -> 0 bytes .../images/icons-png/navigation-black.png | Bin 217 -> 0 bytes .../images/icons-png/navigation-white.png | Bin 229 -> 0 bytes webclient/images/icons-png/phone-black.png | Bin 284 -> 0 bytes webclient/images/icons-png/phone-white.png | Bin 318 -> 0 bytes webclient/images/icons-png/plus-black.png | Bin 137 -> 0 bytes webclient/images/icons-png/plus-white.png | Bin 141 -> 0 bytes webclient/images/icons-png/power-black.png | Bin 308 -> 0 bytes webclient/images/icons-png/power-white.png | Bin 352 -> 0 bytes webclient/images/icons-png/recycle-black.png | Bin 252 -> 0 bytes webclient/images/icons-png/recycle-white.png | Bin 273 -> 0 bytes webclient/images/icons-png/refresh-black.png | Bin 310 -> 0 bytes webclient/images/icons-png/refresh-white.png | Bin 337 -> 0 bytes webclient/images/icons-png/search-black.png | Bin 320 -> 0 bytes webclient/images/icons-png/search-white.png | Bin 356 -> 0 bytes webclient/images/icons-png/shop-black.png | Bin 180 -> 0 bytes webclient/images/icons-png/shop-white.png | Bin 195 -> 0 bytes webclient/images/icons-png/star-black.png | Bin 247 -> 0 bytes webclient/images/icons-png/star-white.png | Bin 280 -> 0 bytes webclient/images/icons-png/tag-black.png | Bin 193 -> 0 bytes webclient/images/icons-png/tag-white.png | Bin 178 -> 0 bytes webclient/images/icons-png/user-black.png | Bin 261 -> 0 bytes webclient/images/icons-png/user-white.png | Bin 298 -> 0 bytes webclient/images/icons-png/video-black.png | Bin 179 -> 0 bytes webclient/images/icons-png/video-white.png | Bin 196 -> 0 bytes webclient/images/icons-svg/action-black.svg | 37 - webclient/images/icons-svg/action-white.svg | 37 - webclient/images/icons-svg/alert-black.svg | 38 - webclient/images/icons-svg/alert-white.svg | 38 - webclient/images/icons-svg/arrow-d-black.svg | 37 - .../images/icons-svg/arrow-d-l-black.svg | 37 - .../images/icons-svg/arrow-d-l-white.svg | 37 - .../images/icons-svg/arrow-d-r-black.svg | 37 - .../images/icons-svg/arrow-d-r-white.svg | 37 - webclient/images/icons-svg/arrow-d-white.svg | 37 - webclient/images/icons-svg/arrow-l-black.svg | 37 - webclient/images/icons-svg/arrow-l-white.svg | 37 - webclient/images/icons-svg/arrow-r-black.svg | 37 - webclient/images/icons-svg/arrow-r-white.svg | 37 - webclient/images/icons-svg/arrow-u-black.svg | 37 - .../images/icons-svg/arrow-u-l-black.svg | 37 - .../images/icons-svg/arrow-u-l-white.svg | 37 - .../images/icons-svg/arrow-u-r-black.svg | 37 - .../images/icons-svg/arrow-u-r-white.svg | 37 - webclient/images/icons-svg/arrow-u-white.svg | 37 - webclient/images/icons-svg/audio-black.svg | 40 - webclient/images/icons-svg/audio-white.svg | 40 - webclient/images/icons-svg/back-black.svg | 37 - webclient/images/icons-svg/back-white.svg | 37 - webclient/images/icons-svg/bars-black.svg | 38 - webclient/images/icons-svg/bars-white.svg | 38 - webclient/images/icons-svg/bullets-black.svg | 40 - webclient/images/icons-svg/bullets-white.svg | 40 - webclient/images/icons-svg/calendar-black.svg | 39 - webclient/images/icons-svg/calendar-white.svg | 39 - webclient/images/icons-svg/camera-black.svg | 39 - webclient/images/icons-svg/camera-white.svg | 39 - webclient/images/icons-svg/carat-d-black.svg | 37 - webclient/images/icons-svg/carat-d-white.svg | 37 - webclient/images/icons-svg/carat-l-black.svg | 37 - webclient/images/icons-svg/carat-l-white.svg | 37 - webclient/images/icons-svg/carat-r-black.svg | 37 - webclient/images/icons-svg/carat-r-white.svg | 37 - webclient/images/icons-svg/carat-u-black.svg | 37 - webclient/images/icons-svg/carat-u-white.svg | 37 - webclient/images/icons-svg/check-black.svg | 37 - webclient/images/icons-svg/check-white.svg | 37 - webclient/images/icons-svg/clock-black.svg | 38 - webclient/images/icons-svg/clock-white.svg | 38 - webclient/images/icons-svg/cloud-black.svg | 39 - webclient/images/icons-svg/cloud-white.svg | 39 - webclient/images/icons-svg/comment-black.svg | 37 - webclient/images/icons-svg/comment-white.svg | 37 - webclient/images/icons-svg/delete-black.svg | 37 - webclient/images/icons-svg/delete-white.svg | 37 - webclient/images/icons-svg/edit-black.svg | 37 - webclient/images/icons-svg/edit-white.svg | 37 - webclient/images/icons-svg/eye-black.svg | 38 - webclient/images/icons-svg/eye-white.svg | 38 - .../images/icons-svg/forbidden-black.svg | 40 - .../images/icons-svg/forbidden-white.svg | 40 - webclient/images/icons-svg/forward-black.svg | 37 - webclient/images/icons-svg/forward-white.svg | 37 - webclient/images/icons-svg/gear-black.svg | 52 - webclient/images/icons-svg/gear-white.svg | 52 - webclient/images/icons-svg/grid-black.svg | 44 - webclient/images/icons-svg/grid-white.svg | 44 - webclient/images/icons-svg/heart-black.svg | 37 - webclient/images/icons-svg/heart-white.svg | 37 - webclient/images/icons-svg/home-black.svg | 37 - webclient/images/icons-svg/home-white.svg | 37 - webclient/images/icons-svg/info-black.svg | 38 - webclient/images/icons-svg/info-white.svg | 38 - webclient/images/icons-svg/location-black.svg | 38 - webclient/images/icons-svg/location-white.svg | 38 - webclient/images/icons-svg/lock-black.svg | 38 - webclient/images/icons-svg/lock-white.svg | 38 - webclient/images/icons-svg/mail-black.svg | 37 - webclient/images/icons-svg/mail-white.svg | 37 - webclient/images/icons-svg/minus-black.svg | 37 - webclient/images/icons-svg/minus-white.svg | 37 - .../images/icons-svg/navigation-black.svg | 37 - .../images/icons-svg/navigation-white.svg | 37 - webclient/images/icons-svg/phone-black.svg | 43 - webclient/images/icons-svg/phone-white.svg | 43 - webclient/images/icons-svg/plus-black.svg | 37 - webclient/images/icons-svg/plus-white.svg | 37 - webclient/images/icons-svg/power-black.svg | 41 - webclient/images/icons-svg/power-white.svg | 41 - webclient/images/icons-svg/recycle-black.svg | 38 - webclient/images/icons-svg/recycle-white.svg | 38 - webclient/images/icons-svg/refresh-black.svg | 40 - webclient/images/icons-svg/refresh-white.svg | 40 - webclient/images/icons-svg/search-black.svg | 40 - webclient/images/icons-svg/search-white.svg | 40 - webclient/images/icons-svg/shop-black.svg | 39 - webclient/images/icons-svg/shop-white.svg | 39 - webclient/images/icons-svg/star-black.svg | 37 - webclient/images/icons-svg/star-white.svg | 37 - webclient/images/icons-svg/tag-black.svg | 37 - webclient/images/icons-svg/tag-white.svg | 37 - webclient/images/icons-svg/user-black.svg | 41 - webclient/images/icons-svg/user-white.svg | 41 - webclient/images/icons-svg/video-black.svg | 37 - webclient/images/icons-svg/video-white.svg | 37 - webclient/index.html | 10 +- webclient/js/controls.js | 10 +- webclient/js/functionsvars.js | 10 +- webclient/js/gui.js | 3 +- webclient/js/jquery.mobile-1.4.0-beta.1.js | 14549 ++++++++++++++++ .../js/jquery.mobile-1.4.0-beta.1.min.js | 8 + .../js/jquery.mobile-1.4.0-beta.1.min.map | 1 + webclient/js/process_ws.js | 14 +- 554 files changed, 70493 insertions(+), 3855 deletions(-) create mode 100644 flatclient/README.md create mode 100755 flatclient/css/add2home.css create mode 100755 flatclient/css/font-awesome.css create mode 100755 flatclient/css/font-awesome.min.css create mode 100755 flatclient/css/fonts/Flat-UI-Icons-24.ttf create mode 100755 flatclient/css/fonts/Flat-UI-Icons-24.woff create mode 100755 flatclient/css/fonts/lato-black.ttf create mode 100755 flatclient/css/fonts/lato-black.woff create mode 100755 flatclient/css/fonts/lato-bold.ttf create mode 100755 flatclient/css/fonts/lato-bold.woff create mode 100755 flatclient/css/fonts/lato-italic.ttf create mode 100755 flatclient/css/fonts/lato-italic.woff create mode 100755 flatclient/css/fonts/lato-regular.ttf create mode 100755 flatclient/css/fonts/lato-regular.woff create mode 100755 flatclient/css/images/ajax-loader.gif create mode 100755 flatclient/css/images/icons-18-black.png create mode 100755 flatclient/css/images/icons-18-white.png create mode 100755 flatclient/css/images/icons-36-black.png create mode 100755 flatclient/css/images/icons-36-white.png create mode 100755 flatclient/css/iscroll-pull-icon@2x.png rename {webclient => flatclient}/css/jquery.mobile-1.3.1.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile-1.3.1.min.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile-1.4.0-alpha.2.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile-1.4.0-alpha.2.min.css (100%) mode change 100644 => 100755 create mode 100755 flatclient/css/jquery.mobile.flatui.css create mode 100755 flatclient/css/jquery.mobile.flatui.min.css create mode 100755 flatclient/css/jquery.mobile.iscrollview-pull.css create mode 100755 flatclient/css/jquery.mobile.iscrollview.css rename {webclient => flatclient}/css/jquery.mobile.structure-1.3.1.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.structure-1.3.1.min.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.structure-1.4.0-alpha.2.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.structure-1.4.0-alpha.2.min.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.theme-1.3.1.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.theme-1.3.1.min.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.theme-1.4.0-alpha.2.css (100%) mode change 100644 => 100755 rename {webclient => flatclient}/css/jquery.mobile.theme-1.4.0-alpha.2.min.css (100%) mode change 100644 => 100755 create mode 100755 flatclient/css/webclient.css create mode 100644 flatclient/fonts/FontAwesome.otf create mode 100755 flatclient/fonts/fontawesome-webfont.eot create mode 100755 flatclient/fonts/fontawesome-webfont.svg create mode 100755 flatclient/fonts/fontawesome-webfont.ttf create mode 100755 flatclient/fonts/fontawesome-webfont.woff create mode 100644 flatclient/images/ajax-loader.gif create mode 100644 flatclient/images/default_cover.png create mode 100755 flatclient/images/empty.png create mode 100755 flatclient/images/icons-18-black.png create mode 100755 flatclient/images/icons-18-white.png create mode 100755 flatclient/images/icons-36-black.png create mode 100755 flatclient/images/icons-36-white.png create mode 100755 flatclient/images/icons/AUTHORS create mode 100755 flatclient/images/icons/LICENSE create mode 100755 flatclient/images/icons/arrow_down_12x12.png create mode 100755 flatclient/images/icons/arrow_down_16x16.png create mode 100755 flatclient/images/icons/arrow_down_24x24.png create mode 100755 flatclient/images/icons/arrow_down_32x32.png create mode 100755 flatclient/images/icons/arrow_down_8x8.png create mode 100755 flatclient/images/icons/arrow_down_alt1_12x12.png create mode 100755 flatclient/images/icons/arrow_down_alt1_16x16.png create mode 100755 flatclient/images/icons/arrow_down_alt1_24x24.png create mode 100755 flatclient/images/icons/arrow_down_alt1_32x32.png create mode 100755 flatclient/images/icons/arrow_down_alt1_8x8.png create mode 100755 flatclient/images/icons/arrow_left_alt1_12x12.png create mode 100755 flatclient/images/icons/arrow_left_alt1_16x16.png create mode 100755 flatclient/images/icons/arrow_left_alt1_24x24.png create mode 100755 flatclient/images/icons/arrow_left_alt1_32x32.png create mode 100755 flatclient/images/icons/cd_12x12.png create mode 100755 flatclient/images/icons/cd_16x16.png create mode 100755 flatclient/images/icons/cd_24x24.png create mode 100755 flatclient/images/icons/cd_32x32.png create mode 100755 flatclient/images/icons/cd_8x8.png create mode 100755 flatclient/images/icons/cog_12x12.png create mode 100755 flatclient/images/icons/cog_16x16.png create mode 100755 flatclient/images/icons/cog_24x24.png create mode 100755 flatclient/images/icons/cog_32x32.png create mode 100755 flatclient/images/icons/cog_8x8.png create mode 100755 flatclient/images/icons/first_12x12.png create mode 100755 flatclient/images/icons/first_16x16.png create mode 100755 flatclient/images/icons/first_24x24.png create mode 100755 flatclient/images/icons/first_32x32.png create mode 100755 flatclient/images/icons/first_8x8.png create mode 100755 flatclient/images/icons/fork_21x24.png create mode 100755 flatclient/images/icons/headphones_12x11.png create mode 100755 flatclient/images/icons/headphones_16x14.png create mode 100755 flatclient/images/icons/headphones_24x21.png create mode 100755 flatclient/images/icons/headphones_32x28.png create mode 100755 flatclient/images/icons/headphones_8x7.png create mode 100755 flatclient/images/icons/heart_fill_12x11.png create mode 100755 flatclient/images/icons/heart_fill_16x14.png create mode 100755 flatclient/images/icons/heart_fill_24x21.png create mode 100755 flatclient/images/icons/heart_fill_32x28.png create mode 100755 flatclient/images/icons/heart_fill_8x7.png create mode 100755 flatclient/images/icons/heart_stroke_12x11.png create mode 100755 flatclient/images/icons/heart_stroke_16x14.png create mode 100755 flatclient/images/icons/heart_stroke_24x21.png create mode 100755 flatclient/images/icons/heart_stroke_32x28.png create mode 100755 flatclient/images/icons/heart_stroke_8x7.png create mode 100755 flatclient/images/icons/info_12x24.png create mode 100755 flatclient/images/icons/info_16x32.png create mode 100755 flatclient/images/icons/info_4x8.png create mode 100755 flatclient/images/icons/info_6x12.png create mode 100755 flatclient/images/icons/info_8x16.png create mode 100755 flatclient/images/icons/last_12x12.png create mode 100755 flatclient/images/icons/last_16x16.png create mode 100755 flatclient/images/icons/last_24x24.png create mode 100755 flatclient/images/icons/last_32x32.png create mode 100755 flatclient/images/icons/last_8x8.png create mode 100755 flatclient/images/icons/layers_24x21.png create mode 100755 flatclient/images/icons/list_12x11.png create mode 100755 flatclient/images/icons/list_16x14.png create mode 100755 flatclient/images/icons/list_24x21.png create mode 100755 flatclient/images/icons/list_32x28.png create mode 100755 flatclient/images/icons/list_8x7.png create mode 100755 flatclient/images/icons/list_nested_12x11.png create mode 100755 flatclient/images/icons/list_nested_16x14.png create mode 100755 flatclient/images/icons/list_nested_24x21.png create mode 100755 flatclient/images/icons/list_nested_32x28.png create mode 100755 flatclient/images/icons/list_nested_8x7.png create mode 100755 flatclient/images/icons/loop_12x12.png create mode 100755 flatclient/images/icons/loop_16x16.png create mode 100755 flatclient/images/icons/loop_24x24.png create mode 100755 flatclient/images/icons/loop_32x32.png create mode 100755 flatclient/images/icons/loop_8x8.png create mode 100755 flatclient/images/icons/loop_alt1_12x9.png create mode 100755 flatclient/images/icons/loop_alt1_16x12.png create mode 100755 flatclient/images/icons/loop_alt1_24x18.png create mode 100755 flatclient/images/icons/loop_alt1_32x24.png create mode 100755 flatclient/images/icons/loop_alt1_8x6.png create mode 100755 flatclient/images/icons/loop_alt2_12x11.png create mode 100755 flatclient/images/icons/loop_alt2_16x14.png create mode 100755 flatclient/images/icons/loop_alt2_24x21.png create mode 100755 flatclient/images/icons/loop_alt2_32x28.png create mode 100755 flatclient/images/icons/loop_alt2_8x7.png create mode 100755 flatclient/images/icons/loop_alt3_12x9.png create mode 100755 flatclient/images/icons/loop_alt3_16x12.png create mode 100755 flatclient/images/icons/loop_alt3_24x18.png create mode 100755 flatclient/images/icons/loop_alt3_32x24.png create mode 100755 flatclient/images/icons/loop_alt3_8x6.png create mode 100755 flatclient/images/icons/loop_alt4_12x9.png create mode 100755 flatclient/images/icons/loop_alt4_16x12.png create mode 100755 flatclient/images/icons/loop_alt4_24x18.png create mode 100755 flatclient/images/icons/loop_alt4_32x24.png create mode 100755 flatclient/images/icons/loop_alt4_8x6.png create mode 100755 flatclient/images/icons/magnifying_glass_12x12.png create mode 100755 flatclient/images/icons/magnifying_glass_16x16.png create mode 100755 flatclient/images/icons/magnifying_glass_24x24.png create mode 100755 flatclient/images/icons/magnifying_glass_32x32.png create mode 100755 flatclient/images/icons/magnifying_glass_8x8.png create mode 100755 flatclient/images/icons/mic_18x24.png create mode 100755 flatclient/images/icons/new_window_16x16.png create mode 100755 flatclient/images/icons/new_window_24x24.png create mode 100755 flatclient/images/icons/pause_12x16.png create mode 100755 flatclient/images/icons/pause_18x24.png create mode 100755 flatclient/images/icons/pause_24x32.png create mode 100755 flatclient/images/icons/pause_32x32.png create mode 100755 flatclient/images/icons/pause_6x8.png create mode 100755 flatclient/images/icons/pause_9x12.png create mode 100755 flatclient/images/icons/play_12x16.png create mode 100755 flatclient/images/icons/play_18x24.png create mode 100755 flatclient/images/icons/play_24x32.png create mode 100755 flatclient/images/icons/play_32x32.png create mode 100755 flatclient/images/icons/play_6x8.png create mode 100755 flatclient/images/icons/play_9x12.png create mode 100755 flatclient/images/icons/play_alt_12x12.png create mode 100755 flatclient/images/icons/play_alt_16x16.png create mode 100755 flatclient/images/icons/play_alt_24x24.png create mode 100755 flatclient/images/icons/play_alt_32x32.png create mode 100755 flatclient/images/icons/play_alt_8x8.png create mode 100755 flatclient/images/icons/reload_12x14.png create mode 100755 flatclient/images/icons/reload_18x21.png create mode 100755 flatclient/images/icons/reload_24x28.png create mode 100755 flatclient/images/icons/reload_6x7.png create mode 100755 flatclient/images/icons/reload_9x11.png create mode 100755 flatclient/images/icons/reload_alt_12x14.png create mode 100755 flatclient/images/icons/reload_alt_18x21.png create mode 100755 flatclient/images/icons/reload_alt_24x28.png create mode 100755 flatclient/images/icons/reload_alt_6x7.png create mode 100755 flatclient/images/icons/reload_alt_9x11.png create mode 100755 flatclient/images/icons/user_24x32.png create mode 100755 flatclient/images/icons/volume_12x9.png create mode 100755 flatclient/images/icons/volume_16x12.png create mode 100755 flatclient/images/icons/volume_24x18.png create mode 100755 flatclient/images/icons/volume_32x24.png create mode 100755 flatclient/images/icons/volume_8x6.png create mode 100755 flatclient/images/icons/volume_mute_12x9.png create mode 100755 flatclient/images/icons/volume_mute_16x12.png create mode 100755 flatclient/images/icons/volume_mute_24x18.png create mode 100755 flatclient/images/icons/volume_mute_32x24.png create mode 100755 flatclient/images/icons/volume_mute_8x6.png create mode 100755 flatclient/images/loader.gif create mode 100755 flatclient/images/start.jpg create mode 100755 flatclient/index.html create mode 100755 flatclient/js/add2home.js create mode 100755 flatclient/js/controls.js create mode 100755 flatclient/js/fastclick.js create mode 100755 flatclient/js/functionsvars.js create mode 100755 flatclient/js/gui.js create mode 100755 flatclient/js/iscroll-lite.js create mode 100755 flatclient/js/iscroll.js create mode 100755 flatclient/js/jquery-1.10.2.js create mode 100755 flatclient/js/jquery-1.10.2.min.js create mode 100755 flatclient/js/jquery-1.10.2.min.map create mode 100755 flatclient/js/jquery-1.8.3.js create mode 100755 flatclient/js/jquery-1.8.3.min.js create mode 100755 flatclient/js/jquery-2.0.3.min.js create mode 100755 flatclient/js/jquery.ba-hashchange.min.js create mode 100755 flatclient/js/jquery.cookie.js rename {webclient => flatclient}/js/jquery.mobile-1.3.1.js (100%) mode change 100644 => 100755 rename {webclient => flatclient}/js/jquery.mobile-1.3.1.min.js (100%) mode change 100644 => 100755 rename {webclient => flatclient}/js/jquery.mobile-1.3.1.min.map (100%) mode change 100644 => 100755 create mode 100644 flatclient/js/jquery.mobile-1.3.2.min.js rename {webclient => flatclient}/js/jquery.mobile-1.4.0-alpha.2.js (100%) mode change 100644 => 100755 rename {webclient => flatclient}/js/jquery.mobile-1.4.0-alpha.2.min.js (100%) mode change 100644 => 100755 rename {webclient => flatclient}/js/jquery.mobile-1.4.0-alpha.2.min.map (100%) mode change 100644 => 100755 create mode 100755 flatclient/js/jquery.mobile.iscrollview-closure-min.js create mode 100755 flatclient/js/jquery.mobile.iscrollview-yui-min.js create mode 100755 flatclient/js/jquery.mobile.iscrollview.js create mode 100755 flatclient/js/jquery.touchwipe.min.js create mode 100755 flatclient/js/jquery.truncate.min.js create mode 100755 flatclient/js/lastfm.api.cache.js create mode 100755 flatclient/js/lastfm.api.js create mode 100755 flatclient/js/lastfm.api.md5.js create mode 100755 flatclient/js/lastfm.js create mode 100755 flatclient/js/library.js create mode 100755 flatclient/js/process_ws.js create mode 100644 flatclient/mb.manifest create mode 100644 screenshots/album_mobile.png create mode 100644 screenshots/navigation_mobile.png create mode 100644 screenshots/nowplaying_mobile.png create mode 100644 screenshots/playlists_desktop.png create mode 100644 screenshots/search_desktop.png create mode 100644 screenshots/search_mobile.png create mode 100644 webclient/css/images/icons-png/action-black.png create mode 100644 webclient/css/images/icons-png/action-white.png create mode 100644 webclient/css/images/icons-png/alert-black.png create mode 100644 webclient/css/images/icons-png/alert-white.png create mode 100644 webclient/css/images/icons-png/arrow-d-black.png create mode 100644 webclient/css/images/icons-png/arrow-d-l-black.png create mode 100644 webclient/css/images/icons-png/arrow-d-l-white.png create mode 100644 webclient/css/images/icons-png/arrow-d-r-black.png create mode 100644 webclient/css/images/icons-png/arrow-d-r-white.png create mode 100644 webclient/css/images/icons-png/arrow-d-white.png create mode 100644 webclient/css/images/icons-png/arrow-l-black.png create mode 100644 webclient/css/images/icons-png/arrow-l-white.png create mode 100644 webclient/css/images/icons-png/arrow-r-black.png create mode 100644 webclient/css/images/icons-png/arrow-r-white.png create mode 100644 webclient/css/images/icons-png/arrow-u-black.png create mode 100644 webclient/css/images/icons-png/arrow-u-l-black.png create mode 100644 webclient/css/images/icons-png/arrow-u-l-white.png create mode 100644 webclient/css/images/icons-png/arrow-u-r-black.png create mode 100644 webclient/css/images/icons-png/arrow-u-r-white.png create mode 100644 webclient/css/images/icons-png/arrow-u-white.png create mode 100644 webclient/css/images/icons-png/audio-black.png create mode 100644 webclient/css/images/icons-png/audio-white.png create mode 100644 webclient/css/images/icons-png/back-black.png create mode 100644 webclient/css/images/icons-png/back-white.png create mode 100644 webclient/css/images/icons-png/bars-black.png create mode 100644 webclient/css/images/icons-png/bars-white.png create mode 100644 webclient/css/images/icons-png/bullets-black.png create mode 100644 webclient/css/images/icons-png/bullets-white.png create mode 100644 webclient/css/images/icons-png/calendar-black.png create mode 100644 webclient/css/images/icons-png/calendar-white.png create mode 100644 webclient/css/images/icons-png/camera-black.png create mode 100644 webclient/css/images/icons-png/camera-white.png create mode 100644 webclient/css/images/icons-png/carat-d-black.png create mode 100644 webclient/css/images/icons-png/carat-d-white.png create mode 100644 webclient/css/images/icons-png/carat-l-black.png create mode 100644 webclient/css/images/icons-png/carat-l-white.png create mode 100644 webclient/css/images/icons-png/carat-r-black.png create mode 100644 webclient/css/images/icons-png/carat-r-white.png create mode 100644 webclient/css/images/icons-png/carat-u-black.png create mode 100644 webclient/css/images/icons-png/carat-u-white.png create mode 100644 webclient/css/images/icons-png/check-black.png create mode 100644 webclient/css/images/icons-png/check-white.png create mode 100644 webclient/css/images/icons-png/clock-black.png create mode 100644 webclient/css/images/icons-png/clock-white.png create mode 100644 webclient/css/images/icons-png/cloud-black.png create mode 100644 webclient/css/images/icons-png/cloud-white.png create mode 100644 webclient/css/images/icons-png/comment-black.png create mode 100644 webclient/css/images/icons-png/comment-white.png create mode 100644 webclient/css/images/icons-png/delete-black.png create mode 100644 webclient/css/images/icons-png/delete-white.png create mode 100644 webclient/css/images/icons-png/edit-black.png create mode 100644 webclient/css/images/icons-png/edit-white.png create mode 100644 webclient/css/images/icons-png/eye-black.png create mode 100644 webclient/css/images/icons-png/eye-white.png create mode 100644 webclient/css/images/icons-png/forbidden-black.png create mode 100644 webclient/css/images/icons-png/forbidden-white.png create mode 100644 webclient/css/images/icons-png/forward-black.png create mode 100644 webclient/css/images/icons-png/forward-white.png create mode 100644 webclient/css/images/icons-png/gear-black.png create mode 100644 webclient/css/images/icons-png/gear-white.png create mode 100644 webclient/css/images/icons-png/grid-black.png create mode 100644 webclient/css/images/icons-png/grid-white.png create mode 100644 webclient/css/images/icons-png/heart-black.png create mode 100644 webclient/css/images/icons-png/heart-white.png create mode 100644 webclient/css/images/icons-png/home-black.png create mode 100644 webclient/css/images/icons-png/home-white.png create mode 100644 webclient/css/images/icons-png/info-black.png create mode 100644 webclient/css/images/icons-png/info-white.png create mode 100644 webclient/css/images/icons-png/location-black.png create mode 100644 webclient/css/images/icons-png/location-white.png create mode 100644 webclient/css/images/icons-png/lock-black.png create mode 100644 webclient/css/images/icons-png/lock-white.png create mode 100644 webclient/css/images/icons-png/mail-black.png create mode 100644 webclient/css/images/icons-png/mail-white.png create mode 100644 webclient/css/images/icons-png/minus-black.png create mode 100644 webclient/css/images/icons-png/minus-white.png create mode 100644 webclient/css/images/icons-png/navigation-black.png create mode 100644 webclient/css/images/icons-png/navigation-white.png create mode 100644 webclient/css/images/icons-png/phone-black.png create mode 100644 webclient/css/images/icons-png/phone-white.png create mode 100644 webclient/css/images/icons-png/plus-black.png create mode 100644 webclient/css/images/icons-png/plus-white.png create mode 100644 webclient/css/images/icons-png/power-black.png create mode 100644 webclient/css/images/icons-png/power-white.png create mode 100644 webclient/css/images/icons-png/recycle-black.png create mode 100644 webclient/css/images/icons-png/recycle-white.png create mode 100644 webclient/css/images/icons-png/refresh-black.png create mode 100644 webclient/css/images/icons-png/refresh-white.png create mode 100644 webclient/css/images/icons-png/search-black.png create mode 100644 webclient/css/images/icons-png/search-white.png create mode 100644 webclient/css/images/icons-png/shop-black.png create mode 100644 webclient/css/images/icons-png/shop-white.png create mode 100644 webclient/css/images/icons-png/star-black.png create mode 100644 webclient/css/images/icons-png/star-white.png create mode 100644 webclient/css/images/icons-png/tag-black.png create mode 100644 webclient/css/images/icons-png/tag-white.png create mode 100644 webclient/css/images/icons-png/user-black.png create mode 100644 webclient/css/images/icons-png/user-white.png create mode 100644 webclient/css/images/icons-png/video-black.png create mode 100644 webclient/css/images/icons-png/video-white.png create mode 100644 webclient/css/jquery.mobile-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile-1.4.0-beta.1.min.css create mode 100644 webclient/css/jquery.mobile.external-png-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile.external-png-1.4.0-beta.1.min.css create mode 100644 webclient/css/jquery.mobile.inline-png-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile.inline-png-1.4.0-beta.1.min.css create mode 100644 webclient/css/jquery.mobile.inline-svg-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile.inline-svg-1.4.0-beta.1.min.css create mode 100644 webclient/css/jquery.mobile.structure-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile.structure-1.4.0-beta.1.min.css create mode 100644 webclient/css/jquery.mobile.theme-1.4.0-beta.1.css create mode 100644 webclient/css/jquery.mobile.theme-1.4.0-beta.1.min.css delete mode 100644 webclient/images/icons-png/action-black.png delete mode 100644 webclient/images/icons-png/action-white.png delete mode 100644 webclient/images/icons-png/alert-black.png delete mode 100644 webclient/images/icons-png/alert-white.png delete mode 100644 webclient/images/icons-png/arrow-d-black.png delete mode 100644 webclient/images/icons-png/arrow-d-l-black.png delete mode 100644 webclient/images/icons-png/arrow-d-l-white.png delete mode 100644 webclient/images/icons-png/arrow-d-r-black.png delete mode 100644 webclient/images/icons-png/arrow-d-r-white.png delete mode 100644 webclient/images/icons-png/arrow-d-white.png delete mode 100644 webclient/images/icons-png/arrow-l-black.png delete mode 100644 webclient/images/icons-png/arrow-l-white.png delete mode 100644 webclient/images/icons-png/arrow-r-black.png delete mode 100644 webclient/images/icons-png/arrow-r-white.png delete mode 100644 webclient/images/icons-png/arrow-u-black.png delete mode 100644 webclient/images/icons-png/arrow-u-l-black.png delete mode 100644 webclient/images/icons-png/arrow-u-l-white.png delete mode 100644 webclient/images/icons-png/arrow-u-r-black.png delete mode 100644 webclient/images/icons-png/arrow-u-r-white.png delete mode 100644 webclient/images/icons-png/arrow-u-white.png delete mode 100644 webclient/images/icons-png/audio-black.png delete mode 100644 webclient/images/icons-png/audio-white.png delete mode 100644 webclient/images/icons-png/back-black.png delete mode 100644 webclient/images/icons-png/back-white.png delete mode 100644 webclient/images/icons-png/bars-black.png delete mode 100644 webclient/images/icons-png/bars-white.png delete mode 100644 webclient/images/icons-png/bullets-black.png delete mode 100644 webclient/images/icons-png/bullets-white.png delete mode 100644 webclient/images/icons-png/calendar-black.png delete mode 100644 webclient/images/icons-png/calendar-white.png delete mode 100644 webclient/images/icons-png/camera-black.png delete mode 100644 webclient/images/icons-png/camera-white.png delete mode 100644 webclient/images/icons-png/carat-d-black.png delete mode 100644 webclient/images/icons-png/carat-d-white.png delete mode 100644 webclient/images/icons-png/carat-l-black.png delete mode 100644 webclient/images/icons-png/carat-l-white.png delete mode 100644 webclient/images/icons-png/carat-r-black.png delete mode 100644 webclient/images/icons-png/carat-r-white.png delete mode 100644 webclient/images/icons-png/carat-u-black.png delete mode 100644 webclient/images/icons-png/carat-u-white.png delete mode 100644 webclient/images/icons-png/check-black.png delete mode 100644 webclient/images/icons-png/check-white.png delete mode 100644 webclient/images/icons-png/clock-black.png delete mode 100644 webclient/images/icons-png/clock-white.png delete mode 100644 webclient/images/icons-png/cloud-black.png delete mode 100644 webclient/images/icons-png/cloud-white.png delete mode 100644 webclient/images/icons-png/comment-black.png delete mode 100644 webclient/images/icons-png/comment-white.png delete mode 100644 webclient/images/icons-png/delete-black.png delete mode 100644 webclient/images/icons-png/delete-white.png delete mode 100644 webclient/images/icons-png/edit-black.png delete mode 100644 webclient/images/icons-png/edit-white.png delete mode 100644 webclient/images/icons-png/eye-black.png delete mode 100644 webclient/images/icons-png/eye-white.png delete mode 100644 webclient/images/icons-png/forbidden-black.png delete mode 100644 webclient/images/icons-png/forbidden-white.png delete mode 100644 webclient/images/icons-png/forward-black.png delete mode 100644 webclient/images/icons-png/forward-white.png delete mode 100644 webclient/images/icons-png/gear-black.png delete mode 100644 webclient/images/icons-png/gear-white.png delete mode 100644 webclient/images/icons-png/grid-black.png delete mode 100644 webclient/images/icons-png/grid-white.png delete mode 100644 webclient/images/icons-png/heart-black.png delete mode 100644 webclient/images/icons-png/heart-white.png delete mode 100644 webclient/images/icons-png/home-black.png delete mode 100644 webclient/images/icons-png/home-white.png delete mode 100644 webclient/images/icons-png/info-black.png delete mode 100644 webclient/images/icons-png/info-white.png delete mode 100644 webclient/images/icons-png/location-black.png delete mode 100644 webclient/images/icons-png/location-white.png delete mode 100644 webclient/images/icons-png/lock-black.png delete mode 100644 webclient/images/icons-png/lock-white.png delete mode 100644 webclient/images/icons-png/mail-black.png delete mode 100644 webclient/images/icons-png/mail-white.png delete mode 100644 webclient/images/icons-png/minus-black.png delete mode 100644 webclient/images/icons-png/minus-white.png delete mode 100644 webclient/images/icons-png/navigation-black.png delete mode 100644 webclient/images/icons-png/navigation-white.png delete mode 100644 webclient/images/icons-png/phone-black.png delete mode 100644 webclient/images/icons-png/phone-white.png delete mode 100644 webclient/images/icons-png/plus-black.png delete mode 100644 webclient/images/icons-png/plus-white.png delete mode 100644 webclient/images/icons-png/power-black.png delete mode 100644 webclient/images/icons-png/power-white.png delete mode 100644 webclient/images/icons-png/recycle-black.png delete mode 100644 webclient/images/icons-png/recycle-white.png delete mode 100644 webclient/images/icons-png/refresh-black.png delete mode 100644 webclient/images/icons-png/refresh-white.png delete mode 100644 webclient/images/icons-png/search-black.png delete mode 100644 webclient/images/icons-png/search-white.png delete mode 100644 webclient/images/icons-png/shop-black.png delete mode 100644 webclient/images/icons-png/shop-white.png delete mode 100644 webclient/images/icons-png/star-black.png delete mode 100644 webclient/images/icons-png/star-white.png delete mode 100644 webclient/images/icons-png/tag-black.png delete mode 100644 webclient/images/icons-png/tag-white.png delete mode 100644 webclient/images/icons-png/user-black.png delete mode 100644 webclient/images/icons-png/user-white.png delete mode 100644 webclient/images/icons-png/video-black.png delete mode 100644 webclient/images/icons-png/video-white.png delete mode 100644 webclient/images/icons-svg/action-black.svg delete mode 100644 webclient/images/icons-svg/action-white.svg delete mode 100644 webclient/images/icons-svg/alert-black.svg delete mode 100644 webclient/images/icons-svg/alert-white.svg delete mode 100644 webclient/images/icons-svg/arrow-d-black.svg delete mode 100644 webclient/images/icons-svg/arrow-d-l-black.svg delete mode 100644 webclient/images/icons-svg/arrow-d-l-white.svg delete mode 100644 webclient/images/icons-svg/arrow-d-r-black.svg delete mode 100644 webclient/images/icons-svg/arrow-d-r-white.svg delete mode 100644 webclient/images/icons-svg/arrow-d-white.svg delete mode 100644 webclient/images/icons-svg/arrow-l-black.svg delete mode 100644 webclient/images/icons-svg/arrow-l-white.svg delete mode 100644 webclient/images/icons-svg/arrow-r-black.svg delete mode 100644 webclient/images/icons-svg/arrow-r-white.svg delete mode 100644 webclient/images/icons-svg/arrow-u-black.svg delete mode 100644 webclient/images/icons-svg/arrow-u-l-black.svg delete mode 100644 webclient/images/icons-svg/arrow-u-l-white.svg delete mode 100644 webclient/images/icons-svg/arrow-u-r-black.svg delete mode 100644 webclient/images/icons-svg/arrow-u-r-white.svg delete mode 100644 webclient/images/icons-svg/arrow-u-white.svg delete mode 100644 webclient/images/icons-svg/audio-black.svg delete mode 100644 webclient/images/icons-svg/audio-white.svg delete mode 100644 webclient/images/icons-svg/back-black.svg delete mode 100644 webclient/images/icons-svg/back-white.svg delete mode 100644 webclient/images/icons-svg/bars-black.svg delete mode 100644 webclient/images/icons-svg/bars-white.svg delete mode 100644 webclient/images/icons-svg/bullets-black.svg delete mode 100644 webclient/images/icons-svg/bullets-white.svg delete mode 100644 webclient/images/icons-svg/calendar-black.svg delete mode 100644 webclient/images/icons-svg/calendar-white.svg delete mode 100644 webclient/images/icons-svg/camera-black.svg delete mode 100644 webclient/images/icons-svg/camera-white.svg delete mode 100644 webclient/images/icons-svg/carat-d-black.svg delete mode 100644 webclient/images/icons-svg/carat-d-white.svg delete mode 100644 webclient/images/icons-svg/carat-l-black.svg delete mode 100644 webclient/images/icons-svg/carat-l-white.svg delete mode 100644 webclient/images/icons-svg/carat-r-black.svg delete mode 100644 webclient/images/icons-svg/carat-r-white.svg delete mode 100644 webclient/images/icons-svg/carat-u-black.svg delete mode 100644 webclient/images/icons-svg/carat-u-white.svg delete mode 100644 webclient/images/icons-svg/check-black.svg delete mode 100644 webclient/images/icons-svg/check-white.svg delete mode 100644 webclient/images/icons-svg/clock-black.svg delete mode 100644 webclient/images/icons-svg/clock-white.svg delete mode 100644 webclient/images/icons-svg/cloud-black.svg delete mode 100644 webclient/images/icons-svg/cloud-white.svg delete mode 100644 webclient/images/icons-svg/comment-black.svg delete mode 100644 webclient/images/icons-svg/comment-white.svg delete mode 100644 webclient/images/icons-svg/delete-black.svg delete mode 100644 webclient/images/icons-svg/delete-white.svg delete mode 100644 webclient/images/icons-svg/edit-black.svg delete mode 100644 webclient/images/icons-svg/edit-white.svg delete mode 100644 webclient/images/icons-svg/eye-black.svg delete mode 100644 webclient/images/icons-svg/eye-white.svg delete mode 100644 webclient/images/icons-svg/forbidden-black.svg delete mode 100644 webclient/images/icons-svg/forbidden-white.svg delete mode 100644 webclient/images/icons-svg/forward-black.svg delete mode 100644 webclient/images/icons-svg/forward-white.svg delete mode 100644 webclient/images/icons-svg/gear-black.svg delete mode 100644 webclient/images/icons-svg/gear-white.svg delete mode 100644 webclient/images/icons-svg/grid-black.svg delete mode 100644 webclient/images/icons-svg/grid-white.svg delete mode 100644 webclient/images/icons-svg/heart-black.svg delete mode 100644 webclient/images/icons-svg/heart-white.svg delete mode 100644 webclient/images/icons-svg/home-black.svg delete mode 100644 webclient/images/icons-svg/home-white.svg delete mode 100644 webclient/images/icons-svg/info-black.svg delete mode 100644 webclient/images/icons-svg/info-white.svg delete mode 100644 webclient/images/icons-svg/location-black.svg delete mode 100644 webclient/images/icons-svg/location-white.svg delete mode 100644 webclient/images/icons-svg/lock-black.svg delete mode 100644 webclient/images/icons-svg/lock-white.svg delete mode 100644 webclient/images/icons-svg/mail-black.svg delete mode 100644 webclient/images/icons-svg/mail-white.svg delete mode 100644 webclient/images/icons-svg/minus-black.svg delete mode 100644 webclient/images/icons-svg/minus-white.svg delete mode 100644 webclient/images/icons-svg/navigation-black.svg delete mode 100644 webclient/images/icons-svg/navigation-white.svg delete mode 100644 webclient/images/icons-svg/phone-black.svg delete mode 100644 webclient/images/icons-svg/phone-white.svg delete mode 100644 webclient/images/icons-svg/plus-black.svg delete mode 100644 webclient/images/icons-svg/plus-white.svg delete mode 100644 webclient/images/icons-svg/power-black.svg delete mode 100644 webclient/images/icons-svg/power-white.svg delete mode 100644 webclient/images/icons-svg/recycle-black.svg delete mode 100644 webclient/images/icons-svg/recycle-white.svg delete mode 100644 webclient/images/icons-svg/refresh-black.svg delete mode 100644 webclient/images/icons-svg/refresh-white.svg delete mode 100644 webclient/images/icons-svg/search-black.svg delete mode 100644 webclient/images/icons-svg/search-white.svg delete mode 100644 webclient/images/icons-svg/shop-black.svg delete mode 100644 webclient/images/icons-svg/shop-white.svg delete mode 100644 webclient/images/icons-svg/star-black.svg delete mode 100644 webclient/images/icons-svg/star-white.svg delete mode 100644 webclient/images/icons-svg/tag-black.svg delete mode 100644 webclient/images/icons-svg/tag-white.svg delete mode 100644 webclient/images/icons-svg/user-black.svg delete mode 100644 webclient/images/icons-svg/user-white.svg delete mode 100644 webclient/images/icons-svg/video-black.svg delete mode 100644 webclient/images/icons-svg/video-white.svg create mode 100644 webclient/js/jquery.mobile-1.4.0-beta.1.js create mode 100644 webclient/js/jquery.mobile-1.4.0-beta.1.min.js create mode 100644 webclient/js/jquery.mobile-1.4.0-beta.1.min.map diff --git a/AUTHORS b/AUTHORS index d26f443..f584b41 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,5 +1,6 @@ Webclient - Wouter van Wijk +- Flat Interface: Ulrich Lichtenegger Mopidy: https://github.com/mopidy/mopidy/blob/develop/AUTHORS diff --git a/flatclient/README.md b/flatclient/README.md new file mode 100644 index 0000000..674619d --- /dev/null +++ b/flatclient/README.md @@ -0,0 +1,14 @@ +mopidy-music +============ +This is a Mopidy Webclient based on https://github.com/woutervanwijk/Mopidy-Webclient + +Check out the screenshots. + + +Please consider it as highly experimental: I added/changed some things which i didn't like on the original client. +There is no "real" new code from me. + +If i find time, i will write an own client. + + +Note: it is only tested with mopidy 0.16.1 diff --git a/flatclient/css/add2home.css b/flatclient/css/add2home.css new file mode 100755 index 0000000..ecff0b1 --- /dev/null +++ b/flatclient/css/add2home.css @@ -0,0 +1,160 @@ +/** + * + * Main container + * + */ +#addToHomeScreen { + z-index:9999; + -webkit-user-select:none; + user-select:none; + -webkit-box-sizing:border-box; + box-sizing:border-box; + -webkit-touch-callout:none; + touch-callout:none; + width:240px; + font-size:15px; + padding:12px 14px; + text-align:left; + font-family:helvetica; + background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(0,#fff),color-stop(0.02,#eee),color-stop(0.98,#ccc),color-stop(1,#a3a3a3)); + border:1px solid #505050; + -webkit-border-radius:8px; + -webkit-background-clip:padding-box; + color:#333; + text-shadow:0 1px 0 rgba(255,255,255,0.75); + line-height:130%; + -webkit-box-shadow:0 0 4px rgba(0,0,0,0.5); +} + +#addToHomeScreen.addToHomeIpad { + width:268px; + font-size:18px; + padding:14px; +} + +/** + * + * The 'wide' class is added when the popup contains the touch icon + * + */ +#addToHomeScreen.addToHomeWide { + width:296px; +} + +#addToHomeScreen.addToHomeIpad.addToHomeWide { + width:320px; + font-size:18px; + padding:14px; +} + +/** + * + * The balloon arrow + * + */ +#addToHomeScreen .addToHomeArrow { + position:absolute; + background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(204,204,204,0)),color-stop(0.4,rgba(204,204,204,0)),color-stop(0.4,#ccc)); + border-width:0 1px 1px 0; + border-style:solid; + border-color:#505050; + width:16px; height:16px; + -webkit-transform:rotateZ(45deg); + bottom:-9px; left:50%; + margin-left:-8px; + -webkit-box-shadow:inset -1px -1px 0 #a9a9a9; + -webkit-border-bottom-right-radius:2px; +} + + +/** + * + * The balloon arrow for iPad + * + */ +#addToHomeScreen.addToHomeIpad .addToHomeArrow { + -webkit-transform:rotateZ(-135deg); + background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(238,238,238,0)),color-stop(0.4,rgba(238,238,238,0)),color-stop(0.4,#eee)); + -webkit-box-shadow:inset -1px -1px 0 #fff; + top:-9px; bottom:auto; left:50%; +} + + +/** + * + * Close button + * + */ +#addToHomeScreen .addToHomeClose { + -webkit-box-sizing:border-box; + position:absolute; + right:4px; + top:4px; + width:18px; + height:18px; line-height:14px; + text-align:center; + text-indent:1px; + -webkit-border-radius:9px; + background:rgba(0,0,0,0.12); + color:#707070; + -webkit-box-shadow:0 1px 0 #fff; + font-size:16px; +} + + +/** + * + * The '+' icon, displayed only on iOS < 4.2 + * + */ +#addToHomeScreen .addToHomePlus { + font-weight:bold; + font-size:1.3em; +} + + +/** + * + * The 'share' icon, displayed only on iOS >= 4.2 + * + */ +#addToHomeScreen .addToHomeShare { + display:inline-block; + width:18px; + height:15px; + background-repeat:no-repeat; + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAQAAADu6HTYAAADPElEQVR4Xq3TX2gcRRzA8e/M7mVv2+TSNpc/TZtrY6jUGqgaSAmEChKLrYK0YH0RFC2CSCkEfCghiKU04J8qNigq6os+iQV98MHWFwVBrQQRWs21lBw5cw3NNb1/udu72RGG5Y77IzXW77D7sAwf5scyYoL6BGXSDKFZwaGpLvIUaeoCkvX1MmsM0Ny6oRSQYOLuIS+YZOpfQdqslpUxcZrzTVAz4qPwW2O3CeIwC/RSzeY6Ow1QhUrkr+YOWfEKDkEP8Rij7CHKJmrFSDHBdwGEE5wiGChPN+PnT8VdRtEIl1d4gRj/1EVe5ZSBKGh8iqQpo/Fo5+3C/gz0MYg4zgwbqday1/Q4B8BGQ45d/Hi54lakCrU5obOcidJpu1+Lg9whjabyaOYLnrIBFFaRD+xe2ybMDWY66GmP/WA9cGfGp0CWhy0wkMN8inepFiH2rV1j0NQSNQbFLRQnS8/8YSDBBpadfv4CYDub2fmeHDNAsL1MBWUel0iA+Xik6eHcyvD3vAMSU1TGuA/YRS+dD7ovCQN43GKRFCU20Kd3V/avDVVyAZ5niTEuLA5/zBGWg9EEEhfJKN200Tat8CmRAQb9+wv7soPlHt2tQorsz1uPbr0HTY4sJwrH47zJZwABBAKLMBoQXepwgTwdHCo+fXMkQ4lrxEmQ5AaXipPqDY9V2vn09tgvTPI71EEGYxM+/uMJLJ4svpgaWGKOi/xKgmqLSUGSUd5f2vIVJ/CgBaTIUsZ7ZBsn0+NzfMOXLFCXQyTcybN6ep5ZZgUOHn7jpfUpsZshdugPGf+E5zjbyHTSRyQ8xfRPPM/s63RHeuknSoT22mjmmnAOIMkUZ6D1xSfPPAfd1WFKM3sO2CMaHx8M1NjnXKHaAGGkOW0C02WeYHUz4qMtx+w5gUDS8NckYe5lHsMYwCZEPyEEmjLDZFmAS7CDviMdxyTkMNVBKEmYLvbiQQBIBBbCQG04bGQvFWz6CfsCQLWCigILFwcfkGYBiOpbYuOizTAyYyDdCtrGaRG1LCkIgMYEFhI0WqQZoSlbGRyHKe4qOx7iv2bVQW9dp4dlM/x6kmwnWQcd/Q3FCqwTEiT5s+6D5v/pb0SSHyg7uhMWAAAAAElFTkSuQmCC); + background-size:18px 15px; + text-indent:-9999em; + overflow:hidden; +} + +#addToHomeScreen .addToHomeShare.addToHomeShareOS7 { + width:11px; + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAA8CAYAAAAQTCjdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAASCQAAEgkB80sG3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKjSURBVGiB7dpPiFVVHMDxz7m9NCtMyI2bEJEC25WrEkzHUXCRraIwdNE8ZxfYIlcis1ZEbGEzT1QCF4XgH1CyWhUoJKIWNRGEiCNKmkSiYTzfcfGuOokx77x3ZlS8382959zfn+/invvn3RdijHIRBrwkOINCYXEcdjpb7VyiYdBsLScwt5y6IloYdzqXo36Ro0gY9IKWo+5JwmzBt2HQnBw9ehYNazyn5TBee8Dh+Vq+CWu92GufnkTDR6ab7gDeBNHouMM/l9tXTXM0fGBmL726Fg1Dam74EsvKqR8VNowL2Yzj5f7rnnE4DHq2235diYYhhTGfC94up35T0y+6di/ITU0rKVd+sEi0P7xr2pSJOu8zvF+OzqEv7vDH/WFxt7/cshy/ticsN8sXYUht0kXDOlsF9XJ4UaEvNoz9X3zc5bKaZThbyr5jzJ4wlNY7KTgM+ES0vhz+KeiPw36fKC/ucAF9uFBOrTZm26SJCtaV27+xIo7cXdkTEhvOoh+XyxprU1qnim7CQdGK2HAyKRexYVShT3RItDElN+mkjiP2Ym+S3f01hv2EVal5WW6hU0ElmptaqJuBpXg6MbeFH2LDpU6CQ93zWIKnEvs0cayGU3glMfkOo1jQYewZzOuyz7FC95Jwo5OgUFfgeg993hh/eTqCTxOSm/iuk8DY0Ap1b2GhtHXxsfZN4j/X0fOx4auEIknEhqv4OiUn1L13Z/+xWfWVaG4q0dxUormpRHNTieamEs1NJZqbJ1Q0jHvdiJo5S2cVjSNOCHZhn3/SnuYnIvl3yomIIz7MXZMn9hydRCrR3FSiualEc1OJ5qYSzU0lmptKNDePjWgwcPePT7/g+4cp8wCW4GXaryK3tL+mLdD5x62ppllgu7bso8q/2HIbzGWdNmWnSJwAAAAASUVORK5CYII=); + background-size:11px 15px; +} + +/** + * + * The touch icon (if available) + * + */ +#addToHomeScreen .addToHomeTouchIcon { + display:block; + float:left; + -webkit-border-radius:6px; + border-radius:6px; + -webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5), + inset 0 0 2px rgba(255,255,255,0.9); + box-shadow:0 1px 3px rgba(0,0,0,0.5), + inset 0 0 2px rgba(255,255,255,0.9); + background-repeat:no-repeat; + width:57px; height:57px; + -webkit-background-size:57px 57px; + background-size:57px 57px; + margin:0 12px 0 0; + border:1px solid #333; + -webkit-background-clip:padding-box; + background-clip:padding-box; +} diff --git a/flatclient/css/font-awesome.css b/flatclient/css/font-awesome.css new file mode 100755 index 0000000..fff309b --- /dev/null +++ b/flatclient/css/font-awesome.css @@ -0,0 +1,1361 @@ +/*! + * 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 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'); + 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; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.3333333333333333em; + line-height: 0.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: 0.14285714285714285em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.8571428571428572em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + 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: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.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"; +} diff --git a/flatclient/css/font-awesome.min.css b/flatclient/css/font-awesome.min.css new file mode 100755 index 0000000..a93257a --- /dev/null +++ b/flatclient/css/font-awesome.min.css @@ -0,0 +1,395 @@ +@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"} diff --git a/flatclient/css/fonts/Flat-UI-Icons-24.ttf b/flatclient/css/fonts/Flat-UI-Icons-24.ttf new file mode 100755 index 0000000000000000000000000000000000000000..4e7a912c5fd27485b59de4aa3bbba028120031f9 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/flatclient/css/fonts/Flat-UI-Icons-24.woff b/flatclient/css/fonts/Flat-UI-Icons-24.woff new file mode 100755 index 0000000000000000000000000000000000000000..6169337050675ce3f7ed81f13ff924edc8877a32 GIT binary patch literal 6076 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 OgRXCo@7#x7tN#yn{mQri literal 0 HcmV?d00001 diff --git a/flatclient/css/fonts/lato-bold.ttf b/flatclient/css/fonts/lato-bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..93166dcd5a6f94cee1f26f23bc4e035c8b22de6c GIT binary patch literal 39164 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 literal 0 HcmV?d00001 diff --git a/flatclient/css/fonts/lato-bold.woff b/flatclient/css/fonts/lato-bold.woff new file mode 100755 index 0000000000000000000000000000000000000000..35934a9bba114241684184cc2f1cd470a2d00df7 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/flatclient/css/fonts/lato-regular.ttf b/flatclient/css/fonts/lato-regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..d6101f3872a59af70be3a6eb9ed42ea1e0625dd5 GIT binary patch literal 38588 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 VW4)*1g5YmnSk#bC|G8lOe*ug;7|8$t literal 0 HcmV?d00001 diff --git a/flatclient/css/fonts/lato-regular.woff b/flatclient/css/fonts/lato-regular.woff new file mode 100755 index 0000000000000000000000000000000000000000..ad1a467b71314d434d54b786887d3bf91b465368 GIT binary patch literal 35852 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 literal 0 HcmV?d00001 diff --git a/flatclient/css/images/ajax-loader.gif b/flatclient/css/images/ajax-loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..fd1a189c21fed1c7ba00c4bb4fad407bd6d1e5f9 GIT binary patch literal 7825 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 LHfkt@K(PD|Q{O_Y literal 0 HcmV?d00001 diff --git a/flatclient/css/images/icons-18-black.png b/flatclient/css/images/icons-18-black.png new file mode 100755 index 0000000000000000000000000000000000000000..791646384bf6cf9cf0720c78cfbdc8ffb6d94e7e GIT binary patch literal 1968 zcmZWqc{E%57Cwra+a!n~YH3#bDS$nNd!(P%WlZf+0%&PFh+Tm;}3^0AR#^0DNX<28gV#u8xe192_-qKVoBJdwO~R!elbR3c!FG zPyj}N0y^MEAb=ZC11vxQ4u*jaa0Dkj@C69405bMV?d|QL0Pd}=tp^I=3f0xs z;A{MS7+{yg5Y7T9@+QfZ48h+62_7851E#GAI>zZtE(7?0K;n=v5{V@2zX)_3XkZ)+ zT0#d{LBcCY*n^3KaRPb=vtyh)-a%s^JD5y5%oGUdTn2ZX%Y^}tq{Ek2M=_O(ae$o$lP4Sgb19o8%J_mto!=^^{71 zfi-{V>1i*m@xiwxVB5Q=tsrjfmo?hi^yMTrwFkcETNn6Jq=~& zS)1UTL0?psmL@O#F();btXbvWdF*n_4VPb2-z+H}HXBy8Mb8dlUiJo&^EV&7pZWO- z!i@9~lV0Qv^+|eODbhywm0e**Oj9FT(?wxlDZ_0i-_+D^USd_A8Az$9ztrzJRya({ z{B(@SR)=j9wIzF$y;el)CCuxK)yDLvr@B5hvw7n4ejqmo7ZPY1F{aNN4LOXcd_1|3~!5qY=H? zEr-4f>SWouHlVpkZH9V~%I^h;{R^$+@9Xy9I2A z>PeLRIn$qiSNO5}Uc!oFEh!Zz-`qyYrg}IY;;at(BRBk8N}RXP=_)0ML?7iing@KG zLq-QbJ}i;Ws79(8=AAb6D#J!me`%v0LOSJHIcGGpjICM07)<479$o*oRh+0W>Y7F^ zGPtmvc721ua+{H z`P1LMHdfl+86sdk1!JCsaD0?A1tr!zq?nB=;H;L81(iU}Lkt6*0GbTLX)Yo6OZ~lz z`VS|6Dr2qnW}hrnTB@+oSbV3iS2iCmTw@990$)Aq8rL(DSuP7q>8wTz<&~O4B|m=R zo6*@t>y;&SDDBF`m)3Nm#h%jV-o0|3YK3MCpS3fK^nAHWdN;0G{SxYC;<>>v z4JdOj#(e3btb4D8mRp+m@SnAk-o<)?Lr>mCm9zocA-KWhx8qPhTgB z6PiRMjkSzWo3euE<=?6#J48n_#wadMyQ7-hy9zAPCm-I*V7``f9izsPERkW=*FJMiI%-2l%YdILVG4SF-9FzANwfC^m8#5L}8$x2Oat{~zs41eSIk2mh7-T3|=btJkH8t{QB F{{sZoU`7A{ literal 0 HcmV?d00001 diff --git a/flatclient/css/images/icons-18-white.png b/flatclient/css/images/icons-18-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3419b81f6a8896807e1e6af0f14c8415fbe39da6 GIT binary patch literal 1988 zcmZ8ieK^zWAO6lJFDb?_VcNWA226zx%qL=ea-kb3gazdA|RA*`5cSHYsmWh9GE@ zi!=2g1R(;leUFhWB^y}i9t{sABWz`x!RtQD4-GO3!Jz03g3g*hDRPe;0+Oe01XC-dYHf<%<{QIEVw)!d=M%aB=lht0sRA1 z5}JT!Q3?O7z|93U%wkXvqe=W9$I&FXoX<@!AL7F0FmRT`d@duMHH7At4-sGzfy5&4 z`2^#_dS?iduW+H-ABs9U(|?lLe+2XLBh$FCHTNf13PoM+wEBa69h0^N4K5AK!?6}? zCt4DG{I?$0ZMVg>$DC9z?Bd?CezP_H(}sdV=8hkDnK{eMpy>^Tf3H5y)y;>spTBzb zHAl2dBwJL;C7(Ug#{U*hPZ2o>DUB+fbykiU))93*u6&lc6f$VioLppWv{QI6_|h(X zSNq2Fk_Sfm_uAiIb-)Q}X?%=a5aJKrBlKfCA7R$EcX#4(b*U@DeO?JB17FUW`qdQO z(OC*%YE>;e2|mZTOu9934XeBz)g#r=Li4+CJ(uO3y{!`y?g-m7OEKoI3K1$b?$@9! z)jXBrf<$w-Xvpm@4Px&IQPSHs3gL-ztq;FH!XqJ^!I1|Vo4mTR=}X8YW)_N||0U6mDdCMfB+~kIkNNgaWR^U#@GKq&$*lzRX3) zjw*`AsnBA^D3Y|vBmN>UgB7FI=Qs&wu()n z1tu}#J5IkYsL8okkc?QK)*5SjKnwag8yo&>TF~qmK_gFRj;N(WOMMH!ZoZiv7PiX$ zuKJwo0S$KQhMBtZ^63qwSz<}x*u?4Dh6W$2cLOaYPhEnGw`jzXapt=%ui1B&-u)sz zATKlCY?AZET^z}GIJ4jExFl%7SsIAdfU;CDu&k+Nn-S@$Ash0URQd(~f-GkG2~!d) zBdIxd26d=*qfft^R=rq#&{~v$h$8D%nq&KXD)x4cyzKOge#EFa!64UGT^^ZL_jOLw z&JPSP7h5VQ|0O^y^jKIB^YZ7MY}mxBUABxuuAE)ST;BYu&>pGLuBl};Ip;7&GI(>) z5$pXbqJx-qt7xk9{Gy@T^rCrpf3c2W*UfXT3Kx)us(&X1U!;(BvZ^jNJbw1);2ZI)DRb5U+8&^dy^q4MaJ&mcu9Nezc=); ztS46xsJMW3EwQV}mQ&VCoXB?jI;xyKh+5HFNbF=If{$Xhjk2*374cX4lC+o#+SIP&`G4>#`K z5>aM_j`;ACt;h90F!SP$m?nB{oyWWnUDw*36#DLzprl*+i)489mzN3PG#OI(Rm$mXwG3faivnnySuMkH(KQ7Lo@UYC`)BAC=a<4=`ftG%RgAjxOV5he`dUcj Wp+wY%7)$WSfLt68P^&3{m;MJcl$Lk^ literal 0 HcmV?d00001 diff --git a/flatclient/css/images/icons-36-black.png b/flatclient/css/images/icons-36-black.png new file mode 100755 index 0000000000000000000000000000000000000000..043bfcd521163a123843f15ac2fba220eab51d05 GIT binary patch literal 3859 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 literal 0 HcmV?d00001 diff --git a/flatclient/css/iscroll-pull-icon@2x.png b/flatclient/css/iscroll-pull-icon@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..97c8bda3987158498ac50863eb6b3aae24f7383c GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^0YJQfgBeJ!iIr{xQriQ3LR|m<|9^A{0&CBxCqOUQ zlmz(&GcbJaJ+9E>_F=Jc=Fe|D_xS(hY>cwJ!D-OGntADy+eJ>^X}h%QMAcniJr9?d zFMaiJEakt5%+e+^*kd-o>t@AieH4H>Nu8spSS<* zZ~O2Tr$b7@ImeSZ73XW~@y*|IeBPs*pA{#c6rHj@bmxN`yb5~EdHGY<@~_S1$#7tn zy3oKj=bipmIg1FXb({zCRF`Laoh)#A&YK~*ZRMVJLEalHE>}!1zoIog(=hJB?PabH zZ7=m2)r^8Y7So9|(`Te*Q_!<+0qZ)+H$|2=#9+%o^gAI56^O1pKQ4F<=u z?!OmyOn)}RVe-ioqldq9rQ9OLT3`Oz&Ymzwr|+UdXD!3ypnpq)-Z0L1!m3)7ASKf1 zsKwUyv&*T_cX4O}i|v_NX{!(LR7IG!I=o1{DpF_kWkVKM_n|e`|H{MeddhRy&Tg5` zP&LD0&%_z?d$wC`*4WX0(`-lk^&30dcYi79FF4#T_i!SMt##GEM|FW$cF5H&Q+Cvq+;;hU%i*Vbwz%s(vs1mg@m0TOH`n~WmGx3S=u>jY{{_?I zUBBpie|kOVUu$rk>b3n_P9Nv`d(ho(*2#AFzaPWw8eZEAdWbLnXUx6)-7o*pU;UZ8 eEB?*$c^~9cTESU9TLYNF7(8A5T-G@yGywoyz{IWq literal 0 HcmV?d00001 diff --git a/webclient/css/jquery.mobile-1.3.1.css b/flatclient/css/jquery.mobile-1.3.1.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile-1.3.1.css rename to flatclient/css/jquery.mobile-1.3.1.css diff --git a/webclient/css/jquery.mobile-1.3.1.min.css b/flatclient/css/jquery.mobile-1.3.1.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile-1.3.1.min.css rename to flatclient/css/jquery.mobile-1.3.1.min.css diff --git a/webclient/css/jquery.mobile-1.4.0-alpha.2.css b/flatclient/css/jquery.mobile-1.4.0-alpha.2.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile-1.4.0-alpha.2.css rename to flatclient/css/jquery.mobile-1.4.0-alpha.2.css diff --git a/webclient/css/jquery.mobile-1.4.0-alpha.2.min.css b/flatclient/css/jquery.mobile-1.4.0-alpha.2.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile-1.4.0-alpha.2.min.css rename to flatclient/css/jquery.mobile-1.4.0-alpha.2.min.css diff --git a/flatclient/css/jquery.mobile.flatui.css b/flatclient/css/jquery.mobile.flatui.css new file mode 100755 index 0000000..b13fc48 --- /dev/null +++ b/flatclient/css/jquery.mobile.flatui.css @@ -0,0 +1,3011 @@ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: local('Lato Regular'), + local('Lato-Regular'), + url(fonts/lato-regular.woff) format('woff'), + url(fonts/lato-regular.ttf) format('truetype'); +} +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 700; + src: local('Lato Bold'), + local('Lato-Bold'), + url(fonts/lato-bold.woff) format('woff'), + url(fonts/lato-bold.ttf) format('truetype'); +} +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 900; + src: local('Lato Black'), + local('Lato-Black'), + url(fonts/lato-black.woff) format('woff'), + url(fonts/lato-black.ttf) format('truetype'); +} +@font-face { + font-family: 'Lato'; + font-style: italic; + font-weight: 400; + src: local('Lato Italic'), + local('Lato-Italic'), + url(fonts/lato-italic.woff) format('woff'), + url(fonts/lato-italic.ttf) format('truetype'); +} +@font-face { + font-family: "Flat-UI-Icons-24"; + font-weight: normal; + font-style: normal; + src: url("fonts/Flat-UI-Icons-24.woff") format("woff"), + url(fonts/Flat-UI-Icons-24.ttf) format('truetype'); +} + +/* Use the following CSS code if you want to have a class per icon */ +/*Instead of a list of all class selectors, + *you can use the generic selector below, but it's slower: + *[class*="fui-"]:before { */ +.ui-icon-flat-video:before, +.ui-icon-flat-time:before, +.ui-icon-flat-settings:before, +.ui-icon-flat-plus:before, +.ui-icon-flat-new:before, +.ui-icon-flat-menu:before, +.ui-icon-flat-man:before, +.ui-icon-flat-mail:before, +.ui-icon-flat-lock:before, +.ui-icon-flat-location:before, +.ui-icon-flat-heart:before, +.ui-icon-flat-eye:before, +.ui-icon-flat-cross:before, +.ui-icon-flat-cmd:before, +.ui-icon-flat-checkround:before, +.ui-icon-flat-checkmark:before, +.ui-icon-flat-calendar:before, +.ui-icon-flat-bubble:before, +.ui-icon-flat-volume:before, +.ui-icon-flat-camera:before { + font-family: "Flat-UI-Icons-24"; + speak: none; + font-style: normal; + font-weight: normal; + line-height: 18px; + -webkit-font-smoothing: antialiased; +} + +.ui-icon-flat-video:before { + content: "\e000"; } + +.ui-icon-flat-time:before { + content: "\e001"; } + +.ui-icon-flat-settings:before { + content: "\e002"; } + +.ui-icon-flat-plus:before { + content: "\e003"; } + +.ui-icon-flat-new:before { + content: "\e005"; } + +.ui-icon-flat-menu:before { + content: "\e006"; } + +.ui-icon-flat-man:before { + content: "\e007"; } + +.ui-icon-flat-mail:before { + content: "\e008"; } + +.ui-icon-flat-lock:before { + content: "\e009"; } + +.ui-icon-flat-location:before { + content: "\e00a"; } + +.ui-icon-flat-heart:before { + content: "\e00b"; } + +.ui-icon-flat-eye:before { + content: "\e00c"; } + +.ui-icon-flat-cross:before { + content: "\e00d"; } + +.ui-icon-flat-cmd:before { + content: "\e00e"; } + +.ui-icon-flat-checkround:before { + content: "\e00f"; } + +.ui-icon-flat-checkmark:before { + content: "\e010"; } + +.ui-icon-flat-calendar:before { + content: "\e011"; } + +.ui-icon-flat-bubble:before { + content: "\e012"; } + +.ui-icon-flat-volume:before { + content: "\e013"; } + +.ui-icon-flat-camera:before { + content: "\e004"; } + +.ui-bar-a{border:1px solid #2c3e50;background:#2c3e50;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-a .ui-link-inherit{color:#3e3e3e} +.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-a a.ui-link:visited{color:#2489ce} +.ui-bar-a a.ui-link:hover{color:#2489ce} +.ui-bar-a a.ui-link:active{color:#2489ce} +.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Lato,sans-serif} +.ui-body-a,.ui-overlay-a{border:2px solid #2c3e50;color:#34495e;background:#2c3e50;background-image:none} +.ui-body-a{font-family:Lato,sans-serif;} +.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Lato,sans-serif} +.ui-body-a .ui-link-inherit{color:#333} +.ui-body-a .ui-link{color:#2c3e50;font-weight:bold;} +.ui-body-a .ui-link:visited,.ui-body-a .ui-link:hover,.ui-body-a .ui-link:active{color:#4e6d8d} +.ui-body-a.ui-input-text{border:2px solid #eee;} +.ui-body-a.ui-input-text.ui-focus{border:2px solid #4e6d8d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-a{border:1px solid #2c3e50;background:#2c3e50;font-weight:bold;color:#fff;} +.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff} +.ui-btn-hover-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:bold;color:#fff;} +.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff} +.ui-btn-down-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:bold;color:#fff;} +.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff} +.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-a .ui-btn-up-a,.ui-bar-a .ui-btn-down-a,.ui-bar-a .ui-btn-hover-a{background-color:#2c3e50;border:1px solid #2c3e50} + +.ui-bar-b{border:1px solid #16a085;background:#16a085;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-b .ui-link-inherit{color:#3e3e3e} +.ui-bar-b a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-b a.ui-link:visited{color:#2489ce} +.ui-bar-b a.ui-link:hover{color:#2489ce} +.ui-bar-b a.ui-link:active{color:#2489ce} +.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Lato,sans-serif} +.ui-body-b,.ui-overlay-b{border:2px solid #16a085;color:#34495e;background:#fff;background-image:none} +.ui-body-b{font-family:Lato,sans-serif;} +.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Lato,sans-serif} +.ui-body-b .ui-link-inherit{color:#333} +.ui-body-b .ui-link{color:#16a085;font-weight:bold;} +.ui-body-b .ui-link:visited,.ui-body-b .ui-link:hover,.ui-body-b .ui-link:active{color:#1abc9c} +.ui-body-b.ui-input-text{border:2px solid #eee;} +.ui-body-b.ui-input-text.ui-focus{border:2px solid #1abc9c;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-b{border:1px solid #16a085;background:#16a085;font-weight:bold;color:#fff;} +.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff} +.ui-btn-hover-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:bold;color:#fff;} +.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff} +.ui-btn-down-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:bold;color:#fff;} +.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff} +.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-b .ui-btn-up-a,.ui-bar-b .ui-btn-down-a,.ui-bar-b .ui-btn-hover-a{background-color:#16a085;border:1px solid #16a085} + +.ui-bar-c{border:1px solid #f2f2f2;background:#f2f2f2;color:#000;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-c .ui-link-inherit{color:#3e3e3e} +.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-c a.ui-link:visited{color:#2489ce} +.ui-bar-c a.ui-link:hover{color:#2489ce} +.ui-bar-c a.ui-link:active{color:#2489ce} +.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Lato,sans-serif} +.ui-body-c,.ui-overlay-c{border:2px solid #f2f2f2;color:#34495e;background:#fff;background-image:none} +.ui-body-c{font-family:Lato,sans-serif;} +.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Lato,sans-serif} +.ui-body-c .ui-link-inherit{color:#333} +.ui-body-c .ui-link{color:#2c3e50;font-weight:bold;} +.ui-body-c .ui-link:visited,.ui-body-c .ui-link:hover,.ui-body-c .ui-link:active{color:#eee} +.ui-body-c.ui-input-text{border:2px solid #eee;} +.ui-body-c.ui-input-text.ui-focus{border:2px solid #eee;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-c{border:1px solid #f2f2f2;background:#f2f2f2;font-weight:bold;color:#000;} +.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#000} +.ui-btn-hover-c{border:1px solid #eee;background:#eee;font-weight:bold;color:#000;} +.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#000} +.ui-btn-down-c{border:1px solid #eee;background:#eee;font-weight:bold;color:#000;} +.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#000} +.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-c .ui-btn-up-a,.ui-bar-c .ui-btn-down-a,.ui-bar-c .ui-btn-hover-a{background-color:#f2f2f2;border:1px solid #f2f2f2} + +.ui-bar-d{border:1px solid #c1392b;background:#c1392b;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-d .ui-link-inherit{color:#3e3e3e} +.ui-bar-d a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-d a.ui-link:visited{color:#2489ce} +.ui-bar-d a.ui-link:hover{color:#2489ce} +.ui-bar-d a.ui-link:active{color:#2489ce} +.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Lato,sans-serif} +.ui-body-d,.ui-overlay-d{border:2px solid #c1392b;color:#34495e;background:#fff;background-image:none} +.ui-body-d{font-family:Lato,sans-serif;} +.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Lato,sans-serif} +.ui-body-d .ui-link-inherit{color:#333} +.ui-body-d .ui-link{color:#c0392b;font-weight:bold;} +.ui-body-d .ui-link:visited,.ui-body-d .ui-link:hover,.ui-body-d .ui-link:active{color:#e84c3d} +.ui-body-d.ui-input-text{border:2px solid #eee;} +.ui-body-d.ui-input-text.ui-focus{border:2px solid #e84c3d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-d{border:1px solid #c1392b;background:#c1392b;font-weight:bold;color:#fff;} +.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#fff} +.ui-btn-hover-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:bold;color:#fff;} +.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#fff} +.ui-btn-down-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:bold;color:#fff;} +.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#fff} +.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-d .ui-btn-up-a,.ui-bar-d .ui-btn-down-a,.ui-bar-d .ui-btn-hover-a{background-color:#c1392b;border:1px solid #c1392b} + +.ui-bar-e{border:1px solid #f1c40f;background:#f1c40f;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-e .ui-link-inherit{color:#3e3e3e} +.ui-bar-e a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-e a.ui-link:visited{color:#2489ce} +.ui-bar-e a.ui-link:hover{color:#2489ce} +.ui-bar-e a.ui-link:active{color:#2489ce} +.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Lato,sans-serif} +.ui-body-e,.ui-overlay-e{border:2px solid #f1c40f;color:#34495e;background:#fff;background-image:none} +.ui-body-e{font-family:Lato,sans-serif;} +.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Lato,sans-serif} +.ui-body-e .ui-link-inherit{color:#333} +.ui-body-e .ui-link{color:#f1c40f;font-weight:bold;} +.ui-body-e .ui-link:visited,.ui-body-e .ui-link:hover,.ui-body-e .ui-link:active{color:#f4d03f} +.ui-body-e.ui-input-text{border:2px solid #eee;} +.ui-body-e.ui-input-text.ui-focus{border:2px solid #f4d03f;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-e{border:1px solid #f1c40f;background:#f1c40f;font-weight:bold;color:#fff;} +.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#fff} +.ui-btn-hover-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:bold;color:#fff;} +.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#fff} +.ui-btn-down-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:bold;color:#fff;} +.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#fff} +.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-e .ui-btn-up-a,.ui-bar-e .ui-btn-down-a,.ui-bar-e .ui-btn-hover-a{background-color:#f1c40f;border:1px solid #f1c40f} + +.ui-bar-f{border:1px solid #3498db;background:#3498db;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-f .ui-link-inherit{color:#3e3e3e} +.ui-bar-f a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-f a.ui-link:visited{color:#2489ce} +.ui-bar-f a.ui-link:hover{color:#2489ce} +.ui-bar-f a.ui-link:active{color:#2489ce} +.ui-bar-f input,.ui-bar-f select,.ui-bar-f textarea,.ui-bar-f button{font-family:Lato,sans-serif} +.ui-body-f,.ui-overlay-f{border:2px solid #3498db;color:#34495e;background:#fff;background-image:none} +.ui-body-f{font-family:Lato,sans-serif;} +.ui-body-f input,.ui-body-f select,.ui-body-f textarea,.ui-body-f button{font-family:Lato,sans-serif} +.ui-body-f .ui-link-inherit{color:#333} +.ui-body-f .ui-link{color:#3498db;font-weight:bold;} +.ui-body-f .ui-link:visited,.ui-body-f .ui-link:hover,.ui-body-f .ui-link:active{color:#5dade2} +.ui-body-f.ui-input-text{border:2px solid #eee;} +.ui-body-f.ui-input-text.ui-focus{border:2px solid #5dade2;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-f{border:1px solid #3498db;background:#3498db;font-weight:bold;color:#fff;} +.ui-btn-up-f:visited,.ui-btn-up-f a.ui-link-inherit{color:#fff} +.ui-btn-hover-f{border:1px solid #5dade2;background:#5dade2;font-weight:bold;color:#fff;} +.ui-btn-hover-f:visited,.ui-btn-hover-f:hover,.ui-btn-hover-f a.ui-link-inherit{color:#fff} +.ui-btn-down-f{border:1px solid #5dade2;background:#5dade2;font-weight:bold;color:#fff;} +.ui-btn-down-f:visited,.ui-btn-down-f:hover,.ui-btn-down-f a.ui-link-inherit{color:#fff} +.ui-btn-up-f,.ui-btn-hover-f,.ui-btn-down-f{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-f .ui-btn-up-a,.ui-bar-f .ui-btn-down-a,.ui-bar-f .ui-btn-hover-a{background-color:#3498db;border:1px solid #3498db} + +.ui-bar-g{border:1px solid #2ecc71;background:#2ecc71;color:#fff;font-weight:bold;font-family:Lato,sans-serif;} +.ui-bar-g .ui-link-inherit{color:#3e3e3e} +.ui-bar-g a.ui-link{color:#7cc4e7;font-weight:bold;} +.ui-bar-g a.ui-link:visited{color:#2489ce} +.ui-bar-g a.ui-link:hover{color:#2489ce} +.ui-bar-g a.ui-link:active{color:#2489ce} +.ui-bar-g input,.ui-bar-g select,.ui-bar-g textarea,.ui-bar-g button{font-family:Lato,sans-serif} +.ui-body-g,.ui-overlay-g{border:2px solid #2ecc71;color:#34495e;background:#fff;background-image:none} +.ui-body-g{font-family:Lato,sans-serif;} +.ui-body-g input,.ui-body-g select,.ui-body-g textarea,.ui-body-g button{font-family:Lato,sans-serif} +.ui-body-g .ui-link-inherit{color:#333} +.ui-body-g .ui-link{color:#2ecc71;font-weight:bold;} +.ui-body-g .ui-link:visited,.ui-body-g .ui-link:hover,.ui-body-g .ui-link:active{color:#55d98d} +.ui-body-g.ui-input-text{border:2px solid #eee;} +.ui-body-g.ui-input-text.ui-focus{border:2px solid #55d98d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s} +.ui-btn-up-g{border:1px solid #2ecc71;background:#2ecc71;font-weight:bold;color:#fff;} +.ui-btn-up-g:visited,.ui-btn-up-g a.ui-link-inherit{color:#fff} +.ui-btn-hover-g{border:1px solid #55d98d;background:#55d98d;font-weight:bold;color:#fff;} +.ui-btn-hover-g:visited,.ui-btn-hover-g:hover,.ui-btn-hover-g a.ui-link-inherit{color:#fff} +.ui-btn-down-g{border:1px solid #55d98d;background:#55d98d;font-weight:bold;color:#fff;} +.ui-btn-down-g:visited,.ui-btn-down-g:hover,.ui-btn-down-g a.ui-link-inherit{color:#fff} +.ui-btn-up-g,.ui-btn-hover-g,.ui-btn-down-g{font-family:Lato,sans-serif;text-decoration:none} +.ui-bar-g .ui-btn-up-a,.ui-bar-g .ui-btn-down-a,.ui-bar-g .ui-btn-hover-a{background-color:#2ecc71;border:1px solid #2ecc71} + +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #1abc9c /*{global-active-border}*/; + background: #1abc9c /*{global-active-background-color}*/; + font-weight: bold; + color: #ffffff /*{global-active-color}*/; + cursor: pointer; + text-decoration: none; + font-family: Lato, sans-serif +} +.ui-btn-active:visited, +.ui-btn-active:hover, +.ui-btn-active a.ui-link-inherit { + color: #ffffff /*{global-active-color}*/; +} + +.ui-btn-active.ui-slider-bg { + background: #1abc9c; +} + +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ + +.ui-slider-handle { + background: #16a085; + border: 1px solid #16a085; +} + +.ui-slider-label.ui-btn-corner-all, +.ui-slider-switch.ui-btn-corner-all { + border-radius: 1em; + -webkit-border-radius: 1em; +} + +.ui-slider-handle.ui-btn-corner-all { + border-radius: 50%; + -webkit-border-radius: 50%; +} + +input.ui-input-text.ui-slider-input { + border: 2px solid #eee !important; +} + +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ + +.ui-corner-all { + -webkit-border-radius: 6px /*{global-radii-blocks}*/; + border-radius: 6px /*{global-radii-blocks}*/; +} + +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + + border-color: rgb(130,130,130); + border-color: rgba(130,130,130,.3); + border-style: solid; + +} + +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + filter: Alpha(Opacity=30); + opacity: .3; + zoom: 1; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} + +/* Icons +-----------------------------------------------------------------------------------------------------------*/ + +.ui-icon, +.ui-icon-searchfield:after { + background-repeat: no-repeat; + width: 20px; + height: 20px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + line-height: 16px; + color: white; +} + +.ui-btn-icon-notext .ui-btn-inner .ui-icon:before { margin-left: 1px;} + +.ui-li-link-alt .ui-btn-inner .ui-icon { + margin: -10px -10px auto auto !important; +} + +/* supporting original icons */ +.ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, +.ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, +.ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, +.ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, +.ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on, .ui-icon-email , .ui-icon-page, +.ui-icon-question , .ui-icon-foursquare, .ui-icon-dollar , .ui-icon-euro, +.ui-icon-pound , .ui-icon-apple , .ui-icon-chat , .ui-icon-trash , .ui-icon-mappin , .ui-icon-direction, +.ui-icon-heart , .ui-icon-wrench , .ui-icon-play , .ui-icon-pause , .ui-icon-stop , .ui-icon-person , .ui-icon-music, +.ui-icon-wifi , .ui-icon-phone , .ui-icon-power , +.ui-icon-lightning , .ui-icon-drink , .ui-icon-android { + background-color: #666666 /*{global-icon-color}*/; + background-color: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; +} + +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ + +.ui-icon-alt .ui-icon, +.ui-icon-alt .ui-icon-searchfield:after { + background-color: #fff; + background-color: rgba(255,255,255,.3); + background-image: url(images/icons-18-black.png); + background-repeat: no-repeat; +} + +/* No disc +-----------------------------------------------------------------------------------------------------------*/ + +.ui-icon-nodisc .ui-icon, +.ui-icon-nodisc .ui-icon-searchfield:after, +.ui-icon-nodisc .ui-icon-alt .ui-icon, +.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after { + background-color: transparent; +} + +/* Icon sprite +-----------------------------------------------------------------------------------------------------------*/ + +/* plus minus */ +.ui-icon-plus { + background-position: -1px -1px; +} +.ui-icon-minus { + background-position: -37px -1px; +} +/* delete/close */ +.ui-icon-delete { + background-position: -73px -1px; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px -1px; +} +.ui-icon-arrow-l { + background-position: -144px -1px; +} +.ui-icon-arrow-u { + background-position: -180px -1px; +} +.ui-icon-arrow-d { + background-position: -216px -1px; +} +/* misc */ +.ui-icon-check { + background-position: -252px -1px; +} +.ui-icon-gear { + background-position: -288px -1px; +} +.ui-icon-refresh { + background-position: -323px -1px; +} +.ui-icon-forward { + background-position: -360px -1px; +} +.ui-icon-back { + background-position: -396px -1px; +} +.ui-icon-grid { + background-position: -432px -1px; +} +.ui-icon-star { + background-position: -467px -1px; +} +.ui-icon-alert { + background-position: -503px -1px; +} +.ui-icon-info { + background-position: -539px -1px; +} +.ui-icon-home { + background-position: -575px -1px; +} +/* search */ +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -611px -1px; +} +/* checkbox radio */ +.ui-icon-checkbox-on { + background-position: -647px -1px; +} +.ui-icon-checkbox-off { + background-position: -683px -1px; +} +.ui-icon-radio-on { + background-position: -718px -1px; +} +.ui-icon-radio-off { + background-position: -754px -1px; +} +/* menu edit */ +.ui-icon-bars { + background-position: -788px -1px; + +} +.ui-icon-edit { + background-position: -824px -1px; +} + +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.3), + only screen and (min--moz-device-pixel-ratio: 1.3), + only screen and (min-resolution: 200dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit, + .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url(images/icons-36-white.png); + -moz-background-size: 864px 18px; + -o-background-size: 864px 18px; + -webkit-background-size: 864px 18px; + background-size: 864px 18px; + } + + .ui-icon-alt .ui-icon { + background-image: url(images/icons-36-black.png); + } + + .ui-icon-plus { + background-position: 0px 50%; + } + .ui-icon-minus { + background-position: -36px 50%; + } + .ui-icon-delete { + background-position: -72px 50%; + } + .ui-icon-arrow-r { + background-position: -108px 50%; + } + .ui-icon-arrow-l { + background-position: -144px 50%; + } + .ui-icon-arrow-u { + background-position: -179px 50%; + } + .ui-icon-arrow-d { + background-position: -215px 50%; + } + .ui-icon-check { + background-position: -252px 50%; + } + .ui-icon-gear { + background-position: -287px 50%; + } + .ui-icon-refresh { + background-position: -323px 50%; + } + .ui-icon-forward { + background-position: -360px 50%; + } + .ui-icon-back { + background-position: -395px 50%; + } + .ui-icon-grid { + background-position: -431px 50%; + } + .ui-icon-star { + background-position: -467px 50%; + } + .ui-icon-alert { + background-position: -503px 50%; + } + .ui-icon-info { + background-position: -538px 50%; + } + .ui-icon-home { + background-position: -575px 50%; + } + .ui-icon-search, + .ui-icon-searchfield:after { + background-position: -611px 50%; + } + .ui-icon-checkbox-on { + background-position: -647px 50%; + } + .ui-icon-checkbox-off { + background-position: -683px 50%; + } + .ui-icon-radio-on { + background-position: -718px 50%; + } + .ui-icon-radio-off { + background-position: -754px 50%; + } + .ui-icon-bars { + background-position: -788px 50%; + + }.ui-icon-edit { + background-position: -824px 50%; + } +} + +/* checks,radios */ +.ui-checkbox .ui-icon, +.ui-selectmenu-list .ui-icon { + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { +} + +/* loading icon */ +.ui-icon-loading { + background: url(images/ajax-loader.gif); + background-size: 46px 46px; +} + +/* Button corner class +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-all { + -webkit-border-radius: 6px /*{global-radii-buttons}*/; + border-radius: 6px /*{global-radii-buttons}*/; +} + +.ui-btn-icon-notext.ui-btn-corner-all { + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} + +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-all, +.ui-btn-corner-all { + /*-webkit-background-clip: padding; + background-clip: padding-box;*/ +} + +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ + +.ui-overlay { + background: #666; + filter: Alpha(Opacity=50); + opacity: .5; + position: absolute; + width: 100%; + height: 100%; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ + +.ui-btn:focus, .ui-link-inherit:focus { + outline: 0; +} +.ui-btn.ui-focus { + z-index: 1; +} + +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ + +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus, +.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus { + outline-width: 1px; + outline-style: auto; +} + +/* +* jQuery Mobile 1.3.1 +* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Wed Apr 10 2013 21:57:23 UTC +* http://jquerymobile.com +* +* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors +* Released under the MIT license. +* http://jquery.org/license +* +*/ + + +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; } +.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; zoom: 1; } +.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right, +.ui-header-fixed.ui-fixed-hidden .ui-btn-left, +.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; } +.ui-header-fixed .ui-btn-left, +.ui-header-fixed .ui-btn-right { top: 4px;} +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer > .ui-btn-icon-notext, +.ui-header > .ui-btn-icon-notext, +.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; } +.ui-header-fixed > .ui-btn-icon-notext { top: 7px;} +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/* content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* corner styling for dialogs and popups */ +.ui-corner-all > .ui-header:first-child, +.ui-corner-all > .ui-content:first-child, +.ui-corner-all > .ui-footer:first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-corner-all > .ui-header:last-child, +.ui-corner-all > .ui-content:last-child, +.ui-corner-all > .ui-footer:last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.ui-page-pre-in { + opacity: 0; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225ms; + animation-timing-function: ease-in; + animation-duration: 225ms; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; + animation-duration: 125ms; + animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; + animation-duration: 225ms; + animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -webkit-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-transform: scale(1); + -moz-animation-name: popin; + -moz-animation-duration: 350ms; + transform: scale(1); + animation-name: popin; + animation-duration: 350ms; + opacity: 1; +} +.pop.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; + opacity: 0; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -webkit-animation-name: popout; + -moz-transform: scale(.8); + -moz-animation-name: popout; + transform: scale(.8); + animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@keyframes popin { + from { + transform: scale(.8); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +@keyframes popout { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translate3d(100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromright { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translate3d(-100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromleft { + from { transform: translateX(-100%); } + to { transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(-100%,0,0); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@keyframes slideouttoleft { + from { transform: translateX(0); } + to { transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(100%,0,0); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +@keyframes slideouttoright { + from { transform: translateX(0); } + to { transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translate3d(-100%,0,0); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + transform: translateX(-100%); + animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; + transform: translateX(0); + animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translate3d(100%,0,0); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + transform: translateX(100%); + animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; + transform: translateX(0); + animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -moz-animation-duration: 225ms; + transform: translateX(-100%); + animation-name: slideouttoleft; + animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -moz-animation-duration: 200ms; + transform: translateX(100%); + animation-name: slideouttoright; + animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfromtop; + animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(-100%); + -moz-animation-name: slideouttotop; + -moz-animation-duration: 200ms; + transform: translateY(-100%); + animation-name: slideouttotop; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfromtop { + from { transform: translateY(-100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +@keyframes slideouttotop { + from { transform: translateY(0); } + to { transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfrombottom; + animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(100%); + -moz-animation-name: slideouttobottom; + -moz-animation-duration: 200ms; + transform: translateY(100%); + animation-name: slideouttobottom; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfrombottom { + from { transform: translateY(100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +@keyframes slideouttobottom { + from { transform: translateY(0); } + to { transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + backface-visibility: hidden; + transform: translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; + animation-name: flipintoright; + animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 200px; + -moz-perspective: 200px; + -ms-perspective: 200px; + perspective: 200px; + position: absolute; +} +.turn { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + -moz-transform-origin: 0; + + backface-visibility :hidden; + transform: translateX(0); + transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 125ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 250ms; + animation-name: flipintoright; + animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-transform-origin: 50% 30%; + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); + transform-origin: 50% 30%; + box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -webkit-box-shadow: none; + -moz-transform-origin: none; + -moz-box-shadow: none; + transform-origin: none; + box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(-100%) scale(.7); + animation-name: flowouttoleft; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(0) scale(1); + animation-name: flowinfromright; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; + transform: translateX(100%); + animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; + animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@keyframes flowouttoleft { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@keyframes flowouttoright { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromleft { + 0% { transform: translateX(-100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromright { + 0% { transform: translateX(100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { display: block; float: none; } +/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */ +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; } +.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; } +.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; } +.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; } +.ui-grid-d > :nth-child(n) { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* preset breakpoint to switch to stacked grid styles below 35em (560px) */ +@media all and (max-width: 35em) { + .ui-responsive .ui-block-a, + .ui-responsive .ui-block-b, + .ui-responsive .ui-block-c, + .ui-responsive .ui-block-d, + .ui-responsive .ui-block-e { + width: 100%; + float:none; + } +} +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: -1px; + padding-top: 1px; +} +.ui-header-fixed.ui-fixed-hidden { + top: 0; + padding-top: 0; +} +.ui-footer-fixed { + bottom: -1px; + padding-bottom: 1px; +} +.ui-footer-fixed.ui-fixed-hidden { + bottom: 0; + padding-bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + filter: Alpha(Opacity=90); + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.6875em; +} +.ui-page-footer-fixed { + padding-bottom: 2.6875em; +} +.ui-page-header-fullscreen > .ui-content, +.ui-page-footer-fullscreen > .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -9999px; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +/* workarounds for other widgets */ +.ui-android-2x-fixed .ui-li-has-thumb { + -webkit-transform: translate3d(0,0,0); +} +.ui-navbar { max-width: 100%; } +.ui-navbar.ui-mini { margin: 0; } +.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; } +.ui-navbar ul:after { clear: both; } +.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; } +.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; } +.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; } +/* add border if not in header/footer (full width) */ +.ui-navbar li:last-child .ui-btn, +.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; } +.ui-header .ui-navbar li:last-child .ui-btn, +.ui-footer .ui-navbar li:last-child .ui-btn, +.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn, +.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; } +.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; } +.ui-header .ui-navbar li .ui-btn, +.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; } +/* fixing gaps caused by subpixel problem */ +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; } +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; } +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; } +.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em } +.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; } +.ui-mini { margin-top: .25em; margin-bottom: .25em; } +.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline, +.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; } +.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; } +.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */ +.ui-btn-block { display: block; } +.ui-header > .ui-btn, +.ui-footer > .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-block, +.ui-footer .ui-btn-block { display: block; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-fullsize .ui-btn-inner, +.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; } +div.ui-btn-text { width: auto; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini.ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini.ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-mini.ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +.ui-mini.ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +/* Corner styling inheritance */ +.ui-btn-inner { + -webkit-border-radius: inherit; + border-radius: inherit; +} +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; } +/* Fixes IE/WP filter alpha opacity bugs */ +.ui-disabled .ui-btn-hidden { display: none; } +.ui-disabled { z-index: 1; } +.ui-field-contain .ui-btn.ui-submit { margin: 0; } +label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; } +} +.ui-collapsible-inset { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; } +.ui-collapsible-inset .ui-collapsible-heading { margin: 0; } +.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; } +.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; } +.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; } +.ui-collapsible-heading .ui-btn-inner { padding-left: 12px; padding-right: 12px; } +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; } +.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; } +.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; } +.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left: 0; } +.ui-collapsible-content { + display: block; + margin: 0 -15px; + padding: 10px 15px; + border-left-width: 0; + border-right-width: 0; + border-top: none; /* Overrides ui-body-* */ + background-image: none; /* Overrides ui-body-* */ +} +.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set > .ui-collapsible.ui-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-collapsible-heading, +.ui-collapsible-heading > .ui-btn { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-collapsible-set .ui-collapsible.ui-first-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-collapsible-content, +.ui-collapsible-set .ui-collapsible.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; +} +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; } +.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; } +.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; } +.ui-bar .ui-controlgroup { margin: 0 5px; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls label.ui-select, +.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; } +.ui-controlgroup li { list-style: none; } +.ui-controlgroup .ui-btn { margin: 0; } +.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px } +.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; } +.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner, +.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner, +.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; } +.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:before, +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; } +.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; } +.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio, +.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; } +/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */ +.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; } +.ui-controlgroup-vertical .ui-btn { border-bottom-width: 0; } +.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; } +.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; } +.ui-controlgroup-horizontal .ui-btn.ui-last-child { border-right-width: 1px; } +.ui-controlgroup .ui-btn-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-controlgroup .ui-controlgroup-controls, +.ui-controlgroup .ui-radio, +.ui-controlgroup .ui-checkbox, +.ui-controlgroup .ui-select, +.ui-controlgroup li { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-last-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup .ui-shadow:not(.ui-focus) { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } + .ui-hide-label .ui-controlgroup-controls { width: 100%; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { + width: 92.5%; + max-width: 500px; + margin: 10% auto 15px auto; + padding: 0; + position: relative; + top: -15px; +} +.ui-dialog-contain > .ui-header, +.ui-dialog-contain > .ui-content, +.ui-dialog-contain > .ui-footer { + display: block; + position: relative; + width: auto; + margin: 0; +} +.ui-dialog-contain > .ui-header { + border: none; + overflow: hidden; + z-index: 10; + padding: 0; +} +.ui-dialog-contain > .ui-content { + padding: 15px; +} +.ui-dialog-contain > .ui-footer { + z-index: 10; + padding: 0 15px; +} +.ui-popup-open .ui-header-fixed, +.ui-popup-open .ui-footer-fixed { + position: absolute !important; /* See line #553 of popup.js */ +} +.ui-popup-screen { + background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */ + top: 0; + left: 0; + right: 0; + bottom: 1px; + position: absolute; + filter: Alpha(Opacity=0); + opacity: 0; + z-index: 1099; +} +.ui-popup-screen.in { + opacity: 0.5; + filter: Alpha(Opacity=50); +} +.ui-popup-screen.out { + opacity: 0; + filter: Alpha(Opacity=0); +} +.ui-popup-container { + z-index: 1100; + display: inline-block; + position: absolute; + padding: 0; + outline: 0; +} +.ui-popup { + position: relative; +} +.ui-popup.ui-content, +.ui-popup .ui-content { + overflow: visible; +} +.ui-popup > p, +.ui-popup > h1, +.ui-popup > h2, +.ui-popup > h3, +.ui-popup > h4, +.ui-popup > h5, +.ui-popup > h6 { + margin: .5em 7px; +} +.ui-popup > span { + display: block; + margin: .5em 7px; +} +.ui-popup .ui-title { + font-size: 16px; + font-weight: bold; + margin-top: .5em; + margin-bottom: .5em; +} +.ui-popup-container .ui-content > p, +.ui-popup-container .ui-content > h1, +.ui-popup-container .ui-content > h2, +.ui-popup-container .ui-content > h3, +.ui-popup-container .ui-content > h4, +.ui-popup-container .ui-content > h5, +.ui-popup-container .ui-content > h6 { + margin: .5em 0; +} +.ui-popup-container .ui-content > span { + margin: 0; +} +.ui-popup-container .ui-content > p:first-child, +.ui-popup-container .ui-content > h1:first-child, +.ui-popup-container .ui-content > h2:first-child, +.ui-popup-container .ui-content > h3:first-child, +.ui-popup-container .ui-content > h4:first-child, +.ui-popup-container .ui-content > h5:first-child, +.ui-popup-container .ui-content > h6:first-child { + margin-top: 0; +} +.ui-popup-container .ui-content > p:last-child, +.ui-popup-container .ui-content > h1:last-child, +.ui-popup-container .ui-content > h2:last-child, +.ui-popup-container .ui-content > h3:last-child, +.ui-popup-container .ui-content > h4:last-child, +.ui-popup-container .ui-content > h5:last-child, +.ui-popup-container .ui-content > h6:last-child { + margin-bottom: 0; +} +.ui-popup > img { + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + vertical-align: middle; +} +.ui-popup:not(.ui-content) > img:only-child, +.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child, +.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-popup iframe { + vertical-align: middle; +} +@media all and (min-width: 28em){ + .ui-popup .ui-field-contain label.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-label, + .ui-popup .ui-field-contain label.ui-select, + .ui-popup .ui-field-contain label.ui-input-text { + font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; + } + .ui-popup .ui-field-contain .ui-btn.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-controls, + .ui-popup .ui-field-contain .ui-select, + .ui-popup .ui-field-contain input.ui-input-text, + .ui-popup .ui-field-contain textarea.ui-input-text, + .ui-popup .ui-field-contain .ui-input-search { + width: 100%; display: block; + } +} +.ui-popup > .ui-btn-left, +.ui-popup > .ui-btn-right { + position: absolute; + top: -9px; + margin: 0; + z-index: 1101; +} +.ui-popup > .ui-btn-left { left: -9px; } +.ui-popup > .ui-btn-right { right: -9px; } +.ui-popup-hidden { top: -99999px; left: -9999px; } +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; } +.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-icon, +.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:last-child { border-bottom-width: 0; } +.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */ +@media all and (min-width: 28em){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { opacity: 1; } +.ui-field-contain .ui-select .ui-btn { margin: 0; } +/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +/* Display none because of issues with IE/WP's filter alpha opacity */ +.ui-select .ui-disabled select { display: none; } +@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; } +.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; } +.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { padding: 6px; min-width: 160px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header { margin: 0; padding: 0; } +.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 78%; display: inline-block; } + .ui-hide-label .ui-select { width: 100%; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text, +.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; } +.ui-input-search { padding: 0 30px; } +div.ui-input-text { padding: 0 .4em; } +div.ui-input-has-clear { padding: 0 30px 0 .4em; } +input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini, +.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; } +.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text, +.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; } +textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +textarea.ui-mini { height: 45px; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; } +/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */ +input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; } +/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */ +input[type=number]::-webkit-outer-spin-button { margin: 0; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; } + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search, + .ui-hide-label div.ui-input-text, + .ui-input-search input.ui-input-text, + div.ui-input-text input.ui-input-text { width: 100%; } +} +.ui-rangeslider { + zoom: 1; + margin: 0; +} +.ui-rangeslider:before, +.ui-rangeslider:after { + content: ""; + display: table; +} +.ui-rangeslider:after { + clear: both; +} +/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */ +.ui-rangeslider input.ui-input-text.ui-slider-input { + margin: .57143em 0; +} +.ui-rangeslider.ui-mini input.ui-slider-input { + margin: .28571em 0; +} +.ui-rangeslider input.ui-slider-input.ui-rangeslider-last { + float: right; +} +.ui-rangeslider .ui-rangeslider-sliders { + position: relative; + overflow: visible; + height: 30px; + margin: .5em 68px; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin: .25em 68px; +} +.ui-field-contain .ui-rangeslider input.ui-slider-input, +.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input, +.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, +.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin-top: 0; + margin-bottom: 0; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track { + position: absolute; + top: 6px; + right: 0; + left: 0; + margin: 0; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track { + top: 8px; +} +.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg { + display: none; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + background-color: transparent; + background: none; + border-width: 0; + height: 0; +} +/* this makes ie6 and ie7 set height to 0 to fix z-index problem */ +html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 15px; + border-width: 1px; +} +html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 12px; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-rangeslider label.ui-slider { + float: left; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input { + position: relative; + z-index: 1; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first, + .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first { + margin-right: 17px; + } + .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + float: left; + width: 78%; + margin: 0 -68px; + } + .ui-field-contain .ui-rangeslider .ui-slider-track, + .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track { + right: 68px; + left: 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first { + margin: 0; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + width: auto; + float: none; + margin: 0 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track { + right: 0; + left: 0; + } +} +.ui-listview { margin: 0; } +ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; } +.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; } +.ui-collapsible-content > .ui-listview { margin: -10px -15px; } +.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; } +.ui-collapsible-content .ui-listview-inset { margin: .5em 0; } +.ui-listview, .ui-li { list-style: none; padding: 0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; } +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; } +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; } +.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-static { background-image: none; } +.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview .ui-li > .ui-btn-text { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child, +.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child, +.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit, +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset), +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-link-alt { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-link-alt { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 59px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; } +ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; } +.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; } +.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; } +.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; } +.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; } +.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; } +.ui-listview-filter-inset { margin: -15px -5px; background: transparent; } +.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-li.ui-screen-hidden{ display:none; } +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { + font-size: 16px; + line-height: 1.4; + font-weight: normal; + margin: 0; + display: block; +} +.ui-field-contain label.ui-slider { + margin-bottom: .4em; +} +div.ui-slider { + height: 30px; + margin: .5em 0; + zoom: 1; +} +div.ui-slider.ui-mini { + margin: .25em 0; +} +.ui-field-contain div.ui-slider, +.ui-field-contain div.ui-slider.ui-mini { + margin: 0; +} +div.ui-slider:before, div.ui-slider:after { + content: ""; + display: table; +} +div.ui-slider:after { + clear: both; +} +/* High level of specificity to override Textinput CSS. */ +input.ui-input-text.ui-slider-input { + display: block; + float: left; + margin: 0; + padding: 4px; + width: 40px; + height: 22px; + line-height: 22px; + font-size: 14px; + border-width: 0; + background-image: none; + font-weight: bold; + text-align: center; + vertical-align: text-bottom; + outline: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.ui-slider-input::-webkit-outer-spin-button, +.ui-slider-input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.ui-slider-track, +.ui-slider-switch { + position: relative; + overflow: visible; + height: 15px; + margin: 0 15px 0 68px; + top: 6px; +} +.ui-slider-track.ui-mini { + height: 12px; + top: 8px; +} +.ui-slider-bg { + border: none; + height: 100%; +} +/* High level of specificity to override button margins in grids */ +.ui-slider-track .ui-btn.ui-slider-handle, +.ui-slider-switch .ui-btn.ui-slider-handle { + position: absolute; + z-index: 1; + top: 50%; + width: 28px; + height: 28px; + margin: -15px 0 0 -15px; + outline: 0; +} +.ui-slider-track.ui-mini .ui-slider-handle { + height: 14px; + width: 14px; + margin: -8px 0 0 -7px; +} +.ui-slider-handle .ui-btn-inner { + padding: 0; + height: 100%; +} +.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: -9px 0 0 -9px; + border-top: none; +} +select.ui-slider-switch { + display: none; +} +div.ui-slider-switch { + display: inline-block; + height: 32px; + width: 5.8em; + margin: .5em 0; + top: 0; +} +/* reset the clearfix */ +div.ui-slider-switch:before, div.ui-slider-switch:after { + display: none; + clear: none; +} +div.ui-slider-switch.ui-mini { + width: 5em; + height: 29px; + margin: .25em 0; + top: 0; +} +.ui-field-contain .ui-slider-switch, +.ui-field-contain .ui-slider-switch.ui-mini { + margin: 0; +} +.ui-slider-inneroffset { + margin: 0 16px; + position: relative; + z-index: 1; +} +.ui-slider-switch.ui-mini .ui-slider-inneroffset { + margin: 0 15px 0 14px; +} +.ui-slider-switch .ui-btn.ui-slider-handle { + margin: 1px 0 0 -15px; +} +.ui-slider-switch.ui-mini .ui-slider-handle { + width: 25px; + height: 25px; + margin: 1px 0 0 -13px; + padding: 0; +} +.ui-slider-handle-snapping { + -webkit-transition: left 70ms linear; + -moz-transition: left 70ms linear; +} +.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: 0; + border-top: none; +} +.ui-slider-switch .ui-slider-label { + position: absolute; + text-align: center; + width: 100%; + overflow: hidden; + font-size: 16px; + top: 0; + line-height: 2; + min-height: 100%; + border-width: 0; + white-space: nowrap; + cursor: pointer; +} +.ui-slider-switch.ui-mini .ui-slider-label { + font-size: 14px; +} +.ui-slider-switch .ui-slider-label-a { + z-index: 1; + left: 0; + text-indent: -1.5em; +} +.ui-slider-switch .ui-slider-label-b { + z-index: 0; + right: 0; + text-indent: 1.5em; +} +@media all and (min-width: 28em){ + .ui-field-contain label.ui-slider { + vertical-align: top; + display: inline-block; + width: 20%; + margin: 0 2% 0 0; + } + .ui-field-contain div.ui-slider { + display: inline-block; + width: 78%; + } + .ui-field-contain.ui-hide-label div.ui-slider { + display: block; + width: auto; + } + .ui-field-contain div.ui-slider-switch, + .ui-field-contain.ui-hide-label div.ui-slider-switch { + display: inline-block; + width: 5.8em; + } + .ui-field-contain div.ui-slider-switch.ui-mini { + width: 5em; + } +} +.ui-table { + border: 0; + border-collapse: collapse; + padding: 0; + width: 100%; +} +.ui-table th, +.ui-table td { + line-height: 1.5em; + text-align: left; + padding: .4em .5em; + vertical-align:top; +} +.ui-table th .ui-btn, +.ui-table td .ui-btn { + line-height: normal; +} +.ui-table th { + font-weight: bold; +} +.ui-table caption { + text-align:left; + margin-bottom:1.4em; + opacity: .5; +} +/* Add strokes between each row */ +.table-stroke thead th { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +.table-stroke tbody th, +.table-stroke tbody td { + border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .05); +} +/* Add alternating row stripes */ +.table-stripe tbody tr:nth-child(odd) td, +.table-stripe tbody tr:nth-child(odd) th { + background-color: #eeeeee; /* non-RGBA fallback */ + background-color: rgba(0,0,0,0.04); +} +/* Add stroke to the header and last item */ +.table-stripe thead th, +.table-stripe tbody tr:last-child { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-columntoggle-btn { + float: right; + margin-bottom:.8em; +} +/* Remove top/bottom margins around the fieldcontain on check list */ +.ui-table-columntoggle-popup fieldset { + margin:0; +} +/* Hide all prioritized columns by default */ +@media only all { + th.ui-table-priority-6, + td.ui-table-priority-6, + th.ui-table-priority-5, + td.ui-table-priority-5, + th.ui-table-priority-4, + td.ui-table-priority-4, + th.ui-table-priority-3, + td.ui-table-priority-3, + th.ui-table-priority-2, + td.ui-table-priority-2, + th.ui-table-priority-1, + td.ui-table-priority-1 { + display: none; + } +} +/* Preset breakpoints if ".ui-responsive" class added to table */ +/* Show priority 1 at 320px (20em x 16px) */ +@media screen and (min-width: 20em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-1, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 { + display: table-cell; + } +} +/* Show priority 2 at 480px (30em x 16px) */ +@media screen and (min-width: 30em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-2, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 { + display: table-cell; + } +} +/* Show priority 3 at 640px (40em x 16px) */ +@media screen and (min-width: 40em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-3, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 { + display: table-cell; + } +} +/* Show priority 4 at 800px (50em x 16px) */ +@media screen and (min-width: 50em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-4, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 { + display: table-cell; + } +} +/* Show priority 5 at 960px (60em x 16px) */ +@media screen and (min-width: 60em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-5, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 { + display: table-cell; + } +} +/* Show priority 6 at 1,120px (70em x 16px) */ +@media screen and (min-width: 70em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-6, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 { + display: table-cell; + } +} +/* Unchecked manually: Always hide */ +.ui-table-columntoggle th.ui-table-cell-hidden, +.ui-table-columntoggle td.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden { + display: none; +} +/* Checked manually: Always show */ +.ui-table-columntoggle th.ui-table-cell-visible, +.ui-table-columntoggle td.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible { + display: table-cell; +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-reflow td .ui-table-cell-label, +.ui-table-reflow th .ui-table-cell-label { + display: none; +} +/* Mobile first styles: Begin with the stacked presentation at narrow widths */ +@media only all { + /* Hide the table headers */ + .ui-table-reflow thead td, + .ui-table-reflow thead th { + display: none; + } + /* Show the table cells as a block level element */ + .ui-table-reflow td, + .ui-table-reflow th { + text-align: left; + display: block; + } + /* Add a fair amount of top margin to visually separate each row when stacked */ + .ui-table-reflow tbody th { + margin-top: 3em; + } + /* Make the label elements a percentage width */ + .ui-table-reflow td .ui-table-cell-label, + .ui-table-reflow th .ui-table-cell-label { + display: block; + padding: .4em; + min-width: 30%; + display: inline-block; + margin: -.4em 1em -.4em -.4em; + } + /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ + .ui-table-reflow th .ui-table-cell-label-top, + .ui-table-reflow td .ui-table-cell-label-top { + display: block; + padding: .4em 0; + margin: .4em 0; + text-transform: uppercase; + font-size: .9em; + font-weight: normal; + } +} +/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ +@media ( min-width: 35em ) { + /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */ + .ui-table-reflow.ui-responsive { + display: table-row-group; + } + /* Show the table header rows */ + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th, + .ui-table-reflow.ui-responsive tbody th, + .ui-table-reflow.ui-responsive tbody td, + .ui-table-reflow.ui-responsive thead td, + .ui-table-reflow.ui-responsive thead th { + display: table-cell; + margin: 0; + } + /* Hide the labels in each cell */ + .ui-table-reflow.ui-responsive td .ui-table-cell-label, + .ui-table-reflow.ui-responsive th .ui-table-cell-label { + display: none; + } +} +/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ +/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ +@media ( max-width: 35em ) { + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + clear: left; + } +} +/* panel */ +.ui-panel { + width: 17em; + min-height: 100%; + max-height: none; + border-width: 0; + position: absolute; + top: 0; + display: block; +} +.ui-panel-closed { + width: 0; + max-height: 100%; + overflow: hidden; + visibility: hidden; +} +.ui-panel-fixed { + position: fixed; + bottom: -1px; /* fixes gap on Chrome for Android */ + padding-bottom: 1px; +} +.ui-panel-display-overlay { + z-index: 1001; /* fixed toolbars have z-index 1000 */ +} +.ui-panel-display-reveal { + z-index: 0; +} +.ui-panel-display-push { + z-index: 999; +} +.ui-panel-inner { + padding: 15px; +} +/* content-wrap */ +.ui-panel-content-wrap { + position: relative; + left: 0; + min-height: inherit; + border: none; + z-index: 999; +} +.ui-panel-content-wrap-display-overlay, +.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */ +.ui-panel-content-wrap-closed { + position: static; +} +/* dismiss */ +.ui-panel-dismiss { + position: absolute; + top: 0; + left:0; + height: 100%; + width: 100%; + z-index: 1002; + display: none; +} +.ui-panel-dismiss-open { + display: block; +} +/* animate class is added to panel, wrapper and fixed toolbars */ +.ui-panel-animate { + -webkit-transition: -webkit-transform 200ms ease; + -moz-transition: -moz-transform 200ms ease; + transition: transform 200ms ease; +} +/* hardware acceleration for smoother transitions on WebKit browsers */ +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal), +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div, +.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div, +.ui-panel-animate.ui-panel-content-wrap, +.ui-panel-animate.ui-panel-content-fixed-toolbar { + -webkit-backface-visibility: hidden; + -webkit-transform: translate3d(0,0,0); +} +/* positioning: panel */ +/* panel left */ +.ui-panel-position-left { + left: -17em; +} +/* animated: panel left (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-display-push { + left: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* panel left open */ +.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */ +.ui-panel-position-left.ui-panel-open { + left: 0; +} +/* animated: panel left open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* panel right */ +.ui-panel-position-right { + right: -17em; +} +/* animated: panel right (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-display-push { + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-position-right.ui-panel-display-reveal, /* negate "panel right" for reveal */ +.ui-panel-position-right.ui-panel-open { + right: 0; +} +/* animated: panel right open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* positioning: content wrap, fixed toolbars and dismiss */ +/* panel left open */ +.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-left.ui-panel-dismiss-open { + left: 17em; + right: -17em; +} +/* animated: panel left open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-right.ui-panel-dismiss-open { + left: -17em; + right: 17em; +} +/* animated: panel right open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* negate "panel left/right open" for overlay */ +.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay, +.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay { + left: 0; +} +/* always disable overflow-x to prevent zoom issue on Android */ +.ui-page-active.ui-page-panel { + overflow-x: hidden; +} +/* shadows and borders */ +.ui-panel-display-reveal { + -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + box-shadow: inset -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-reveal { + -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + box-shadow: inset 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-overlay { + -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15); + box-shadow: 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-overlay { + -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15); + box-shadow: -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-left { + border-right-width: 1px; + margin-right: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-left: 1px; +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-right { + border-left-width: 1px; + margin-left: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-right: 1px; +} +/* wrap on wide viewports once open */ +@media (min-width:55em){ + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left { + margin-right: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { + margin-left: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal { + width: auto; + } + .ui-responsive-panel .ui-panel-dismiss-display-push { + display: none; + } +} + +/* customizations to jqm.structure.css */ +.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 2px; border-left-width: 2px; } diff --git a/flatclient/css/jquery.mobile.flatui.min.css b/flatclient/css/jquery.mobile.flatui.min.css new file mode 100755 index 0000000..f359221 --- /dev/null +++ b/flatclient/css/jquery.mobile.flatui.min.css @@ -0,0 +1 @@ +@font-face{font-family:Lato;font-style:normal;font-weight:400;src:local('Lato Regular'),local('Lato-Regular'),url(fonts/lato-regular.woff) format('woff'),url(fonts/lato-regular.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:local('Lato Bold'),local('Lato-Bold'),url(fonts/lato-bold.woff) format('woff'),url(fonts/lato-bold.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:900;src:local('Lato Black'),local('Lato-Black'),url(fonts/lato-black.woff) format('woff'),url(fonts/lato-black.ttf) format('truetype')}@font-face{font-family:Lato;font-style:italic;font-weight:400;src:local('Lato Italic'),local('Lato-Italic'),url(fonts/lato-italic.woff) format('woff'),url(fonts/lato-italic.ttf) format('truetype')}@font-face{font-family:Flat-UI-Icons-24;font-weight:400;font-style:normal;src:url(fonts/Flat-UI-Icons-24.woff) format("woff"),url(fonts/Flat-UI-Icons-24.ttf) format('truetype')}.ui-icon-flat-video:before,.ui-icon-flat-time:before,.ui-icon-flat-settings:before,.ui-icon-flat-plus:before,.ui-icon-flat-new:before,.ui-icon-flat-menu:before,.ui-icon-flat-man:before,.ui-icon-flat-mail:before,.ui-icon-flat-lock:before,.ui-icon-flat-location:before,.ui-icon-flat-heart:before,.ui-icon-flat-eye:before,.ui-icon-flat-cross:before,.ui-icon-flat-cmd:before,.ui-icon-flat-checkround:before,.ui-icon-flat-checkmark:before,.ui-icon-flat-calendar:before,.ui-icon-flat-bubble:before,.ui-icon-flat-volume:before,.ui-icon-flat-camera:before{font-family:Flat-UI-Icons-24;speak:none;font-style:normal;font-weight:400;line-height:18px;-webkit-font-smoothing:antialiased}.ui-icon-flat-video:before{content:"\e000"}.ui-icon-flat-time:before{content:"\e001"}.ui-icon-flat-settings:before{content:"\e002"}.ui-icon-flat-plus:before{content:"\e003"}.ui-icon-flat-new:before{content:"\e005"}.ui-icon-flat-menu:before{content:"\e006"}.ui-icon-flat-man:before{content:"\e007"}.ui-icon-flat-mail:before{content:"\e008"}.ui-icon-flat-lock:before{content:"\e009"}.ui-icon-flat-location:before{content:"\e00a"}.ui-icon-flat-heart:before{content:"\e00b"}.ui-icon-flat-eye:before{content:"\e00c"}.ui-icon-flat-cross:before{content:"\e00d"}.ui-icon-flat-cmd:before{content:"\e00e"}.ui-icon-flat-checkround:before{content:"\e00f"}.ui-icon-flat-checkmark:before{content:"\e010"}.ui-icon-flat-calendar:before{content:"\e011"}.ui-icon-flat-bubble:before{content:"\e012"}.ui-icon-flat-volume:before{content:"\e013"}.ui-icon-flat-camera:before{content:"\e004"}.ui-bar-a{border:1px solid #2c3e50;background:#2c3e50;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-a .ui-link-inherit{color:#3e3e3e}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Lato,sans-serif}.ui-body-a,.ui-overlay-a{border:2px solid #2c3e50;color:#34495e;background:#2c3e50;background-image:none}.ui-body-a{font-family:Lato,sans-serif}.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Lato,sans-serif}.ui-body-a .ui-link-inherit{color:#333}.ui-body-a .ui-link{color:#2c3e50;font-weight:700}.ui-body-a .ui-link:visited,.ui-body-a .ui-link:hover,.ui-body-a .ui-link:active{color:#4e6d8d}.ui-body-a.ui-input-text{border:2px solid #eee}.ui-body-a.ui-input-text.ui-focus{border:2px solid #4e6d8d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-a{border:1px solid #2c3e50;background:#2c3e50;font-weight:700;color:#fff}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-a .ui-btn-up-a,.ui-bar-a .ui-btn-down-a,.ui-bar-a .ui-btn-hover-a{background-color:#2c3e50;border:1px solid #2c3e50}.ui-bar-b{border:1px solid #16a085;background:#16a085;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-b .ui-link-inherit{color:#3e3e3e}.ui-bar-b a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-b a.ui-link:visited{color:#2489ce}.ui-bar-b a.ui-link:hover{color:#2489ce}.ui-bar-b a.ui-link:active{color:#2489ce}.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Lato,sans-serif}.ui-body-b,.ui-overlay-b{border:2px solid #16a085;color:#34495e;background:#fff;background-image:none}.ui-body-b{font-family:Lato,sans-serif}.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Lato,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#16a085;font-weight:700}.ui-body-b .ui-link:visited,.ui-body-b .ui-link:hover,.ui-body-b .ui-link:active{color:#1abc9c}.ui-body-b.ui-input-text{border:2px solid #eee}.ui-body-b.ui-input-text.ui-focus{border:2px solid #1abc9c;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-b{border:1px solid #16a085;background:#16a085;font-weight:700;color:#fff}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-b .ui-btn-up-a,.ui-bar-b .ui-btn-down-a,.ui-bar-b .ui-btn-hover-a{background-color:#16a085;border:1px solid #16a085}.ui-bar-c{border:1px solid #f2f2f2;background:#f2f2f2;color:#000;font-weight:700;font-family:Lato,sans-serif}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Lato,sans-serif}.ui-body-c,.ui-overlay-c{border:2px solid #f2f2f2;color:#34495e;background:#fff;background-image:none}.ui-body-c{font-family:Lato,sans-serif}.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Lato,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2c3e50;font-weight:700}.ui-body-c .ui-link:visited,.ui-body-c .ui-link:hover,.ui-body-c .ui-link:active{color:#eee}.ui-body-c.ui-input-text{border:2px solid #eee}.ui-body-c.ui-input-text.ui-focus{border:2px solid #eee;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-c{border:1px solid #f2f2f2;background:#f2f2f2;font-weight:700;color:#000}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#000}.ui-btn-hover-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#000}.ui-btn-down-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#000}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-c .ui-btn-up-a,.ui-bar-c .ui-btn-down-a,.ui-bar-c .ui-btn-hover-a{background-color:#f2f2f2;border:1px solid #f2f2f2}.ui-bar-d{border:1px solid #c1392b;background:#c1392b;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-d .ui-link-inherit{color:#3e3e3e}.ui-bar-d a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Lato,sans-serif}.ui-body-d,.ui-overlay-d{border:2px solid #c1392b;color:#34495e;background:#fff;background-image:none}.ui-body-d{font-family:Lato,sans-serif}.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Lato,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#c0392b;font-weight:700}.ui-body-d .ui-link:visited,.ui-body-d .ui-link:hover,.ui-body-d .ui-link:active{color:#e84c3d}.ui-body-d.ui-input-text{border:2px solid #eee}.ui-body-d.ui-input-text.ui-focus{border:2px solid #e84c3d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-d{border:1px solid #c1392b;background:#c1392b;font-weight:700;color:#fff}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#fff}.ui-btn-hover-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#fff}.ui-btn-down-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#fff}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-d .ui-btn-up-a,.ui-bar-d .ui-btn-down-a,.ui-bar-d .ui-btn-hover-a{background-color:#c1392b;border:1px solid #c1392b}.ui-bar-e{border:1px solid #f1c40f;background:#f1c40f;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-e .ui-link-inherit{color:#3e3e3e}.ui-bar-e a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Lato,sans-serif}.ui-body-e,.ui-overlay-e{border:2px solid #f1c40f;color:#34495e;background:#fff;background-image:none}.ui-body-e{font-family:Lato,sans-serif}.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Lato,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#f1c40f;font-weight:700}.ui-body-e .ui-link:visited,.ui-body-e .ui-link:hover,.ui-body-e .ui-link:active{color:#f4d03f}.ui-body-e.ui-input-text{border:2px solid #eee}.ui-body-e.ui-input-text.ui-focus{border:2px solid #f4d03f;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-e{border:1px solid #f1c40f;background:#f1c40f;font-weight:700;color:#fff}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#fff}.ui-btn-hover-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#fff}.ui-btn-down-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#fff}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-e .ui-btn-up-a,.ui-bar-e .ui-btn-down-a,.ui-bar-e .ui-btn-hover-a{background-color:#f1c40f;border:1px solid #f1c40f}.ui-bar-f{border:1px solid #3498db;background:#3498db;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-f .ui-link-inherit{color:#3e3e3e}.ui-bar-f a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-f a.ui-link:visited{color:#2489ce}.ui-bar-f a.ui-link:hover{color:#2489ce}.ui-bar-f a.ui-link:active{color:#2489ce}.ui-bar-f input,.ui-bar-f select,.ui-bar-f textarea,.ui-bar-f button{font-family:Lato,sans-serif}.ui-body-f,.ui-overlay-f{border:2px solid #3498db;color:#34495e;background:#fff;background-image:none}.ui-body-f{font-family:Lato,sans-serif}.ui-body-f input,.ui-body-f select,.ui-body-f textarea,.ui-body-f button{font-family:Lato,sans-serif}.ui-body-f .ui-link-inherit{color:#333}.ui-body-f .ui-link{color:#3498db;font-weight:700}.ui-body-f .ui-link:visited,.ui-body-f .ui-link:hover,.ui-body-f .ui-link:active{color:#5dade2}.ui-body-f.ui-input-text{border:2px solid #eee}.ui-body-f.ui-input-text.ui-focus{border:2px solid #5dade2;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-f{border:1px solid #3498db;background:#3498db;font-weight:700;color:#fff}.ui-btn-up-f:visited,.ui-btn-up-f a.ui-link-inherit{color:#fff}.ui-btn-hover-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-hover-f:visited,.ui-btn-hover-f:hover,.ui-btn-hover-f a.ui-link-inherit{color:#fff}.ui-btn-down-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-down-f:visited,.ui-btn-down-f:hover,.ui-btn-down-f a.ui-link-inherit{color:#fff}.ui-btn-up-f,.ui-btn-hover-f,.ui-btn-down-f{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-f .ui-btn-up-a,.ui-bar-f .ui-btn-down-a,.ui-bar-f .ui-btn-hover-a{background-color:#3498db;border:1px solid #3498db}.ui-bar-g{border:1px solid #2ecc71;background:#2ecc71;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-g .ui-link-inherit{color:#3e3e3e}.ui-bar-g a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-g a.ui-link:visited{color:#2489ce}.ui-bar-g a.ui-link:hover{color:#2489ce}.ui-bar-g a.ui-link:active{color:#2489ce}.ui-bar-g input,.ui-bar-g select,.ui-bar-g textarea,.ui-bar-g button{font-family:Lato,sans-serif}.ui-body-g,.ui-overlay-g{border:2px solid #2ecc71;color:#34495e;background:#fff;background-image:none}.ui-body-g{font-family:Lato,sans-serif}.ui-body-g input,.ui-body-g select,.ui-body-g textarea,.ui-body-g button{font-family:Lato,sans-serif}.ui-body-g .ui-link-inherit{color:#333}.ui-body-g .ui-link{color:#2ecc71;font-weight:700}.ui-body-g .ui-link:visited,.ui-body-g .ui-link:hover,.ui-body-g .ui-link:active{color:#55d98d}.ui-body-g.ui-input-text{border:2px solid #eee}.ui-body-g.ui-input-text.ui-focus{border:2px solid #55d98d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-g{border:1px solid #2ecc71;background:#2ecc71;font-weight:700;color:#fff}.ui-btn-up-g:visited,.ui-btn-up-g a.ui-link-inherit{color:#fff}.ui-btn-hover-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-hover-g:visited,.ui-btn-hover-g:hover,.ui-btn-hover-g a.ui-link-inherit{color:#fff}.ui-btn-down-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-down-g:visited,.ui-btn-down-g:hover,.ui-btn-down-g a.ui-link-inherit{color:#fff}.ui-btn-up-g,.ui-btn-hover-g,.ui-btn-down-g{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-g .ui-btn-up-a,.ui-bar-g .ui-btn-down-a,.ui-bar-g .ui-btn-hover-a{background-color:#2ecc71;border:1px solid #2ecc71}.ui-btn-active{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff;cursor:pointer;text-decoration:none;font-family:Lato,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-active.ui-slider-bg{background:#1abc9c}.ui-slider-handle{background:#16a085;border:1px solid #16a085}.ui-slider-label.ui-btn-corner-all,.ui-slider-switch.ui-btn-corner-all{border-radius:1em;-webkit-border-radius:1em}.ui-slider-handle.ui-btn-corner-all{border-radius:50%;-webkit-border-radius:50%}input.ui-input-text.ui-slider-input{border:2px solid #eee!important}.ui-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-br{border-color:#828282;border-color:rgba(130,130,130,.3);border-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background-repeat:no-repeat;width:20px;height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:16px;color:#fff}.ui-btn-icon-notext .ui-btn-inner .ui-icon:before{margin-left:1px}.ui-li-link-alt .ui-btn-inner .ui-icon{margin:-10px -10px auto auto!important}.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-email,.ui-icon-page,.ui-icon-question,.ui-icon-foursquare,.ui-icon-dollar,.ui-icon-euro,.ui-icon-pound,.ui-icon-apple,.ui-icon-chat,.ui-icon-trash,.ui-icon-mappin,.ui-icon-direction,.ui-icon-heart,.ui-icon-wrench,.ui-icon-play,.ui-icon-pause,.ui-icon-stop,.ui-icon-person,.ui-icon-music,.ui-icon-wifi,.ui-icon-phone,.ui-icon-power,.ui-icon-lightning,.ui-icon-drink,.ui-icon-android{background-color:#666;background-color:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png)}.ui-icon-alt .ui-icon,.ui-icon-alt .ui-icon-searchfield:after{background-color:#fff;background-color:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}.ui-icon-nodisc .ui-icon,.ui-icon-nodisc .ui-icon-searchfield:after,.ui-icon-nodisc .ui-icon-alt .ui-icon,.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after{background-color:transparent}.ui-icon-plus{background-position:-1px -1px}.ui-icon-minus{background-position:-37px -1px}.ui-icon-delete{background-position:-73px -1px}.ui-icon-arrow-r{background-position:-108px -1px}.ui-icon-arrow-l{background-position:-144px -1px}.ui-icon-arrow-u{background-position:-180px -1px}.ui-icon-arrow-d{background-position:-216px -1px}.ui-icon-check{background-position:-252px -1px}.ui-icon-gear{background-position:-288px -1px}.ui-icon-refresh{background-position:-323px -1px}.ui-icon-forward{background-position:-360px -1px}.ui-icon-back{background-position:-396px -1px}.ui-icon-grid{background-position:-432px -1px}.ui-icon-star{background-position:-467px -1px}.ui-icon-alert{background-position:-503px -1px}.ui-icon-info{background-position:-539px -1px}.ui-icon-home{background-position:-575px -1px}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px -1px}.ui-icon-checkbox-on{background-position:-647px -1px}.ui-icon-checkbox-off{background-position:-683px -1px}.ui-icon-radio-on{background-position:-718px -1px}.ui-icon-radio-off{background-position:-754px -1px}.ui-icon-bars{background-position:-788px -1px}.ui-icon-edit{background-position:-824px -1px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-resolution:200dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-bars,.ui-icon-edit,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:864px 18px;-o-background-size:864px 18px;-webkit-background-size:864px 18px;background-size:864px 18px}.ui-icon-alt .ui-icon{background-image:url(images/icons-36-black.png)}.ui-icon-plus{background-position:0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-179px 50%}.ui-icon-arrow-d{background-position:-215px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-287px 50%}.ui-icon-refresh{background-position:-323px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-395px 50%}.ui-icon-grid{background-position:-431px 50%}.ui-icon-star{background-position:-467px 50%}.ui-icon-alert{background-position:-503px 50%}.ui-icon-info{background-position:-538px 50%}.ui-icon-home{background-position:-575px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px 50%}.ui-icon-checkbox-on{background-position:-647px 50%}.ui-icon-checkbox-off{background-position:-683px 50%}.ui-icon-radio-on{background-position:-718px 50%}.ui-icon-radio-off{background-position:-754px 50%}.ui-icon-bars{background-position:-788px 50%}.ui-icon-edit{background-position:-824px 50%}}.ui-checkbox .ui-icon,.ui-selectmenu-list .ui-icon{-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-btn-icon-notext.ui-btn-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-corner-all,.ui-btn-corner-all{}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;zoom:1}.ui-mobile .ui-header,.ui-mobile .ui-footer{border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right,.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{position:absolute;top:3px}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{top:4px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer>.ui-btn-icon-notext,.ui-header>.ui-btn-icon-notext,.ui-header-fixed.ui-fixed-hidden>.ui-btn-icon-notext{top:6px}.ui-header-fixed>.ui-btn-icon-notext{top:7px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b>:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}@media all and (max-width:35em){.ui-responsive .ui-block-a,.ui-responsive .ui-block-b,.ui-responsive .ui-block-c,.ui-responsive .ui-block-d,.ui-responsive .ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right,.ui-btn-left>.ui-btn,.ui-btn-right>.ui-btn{margin:0}.ui-btn-block{display:block}.ui-header>.ui-btn,.ui-footer>.ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}div.ui-btn-text{width:auto}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-inner{-webkit-border-radius:inherit;border-radius:inherit}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:0;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}@media all and (min-width:28em){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading .ui-btn-inner{padding-left:12px;padding-right:12px}.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{text-align:center}.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner{padding-left:30px}.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner{padding-right:30px}.ui-collapsible-heading .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -15px;padding:10px 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .4em}.ui-controlgroup-controls label.ui-select,.ui-controlgroup-controls label.ui-submit{position:absolute;left:-9999px}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn{margin:0}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio,.ui-controlgroup-horizontal .ui-select{float:left;clear:none;margin:0}.ui-controlgroup-horizontal .ui-select .ui-btn-text{width:auto}.ui-controlgroup-vertical .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup .ui-btn-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup .ui-controlgroup-controls,.ui-controlgroup .ui-radio,.ui-controlgroup .ui-checkbox,.ui-controlgroup .ui-select,.ui-controlgroup li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup .ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}@media all and (min-width:28em){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px;padding:0;position:relative;top:-15px}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{border:0;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain>.ui-content{padding:15px}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em 7px}.ui-popup>span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:700;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}@media all and (min-width:28em){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-hidden{top:-99999px;left:-9999px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{text-align:left;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-controlgroup-horizontal .ui-checkbox .ui-icon,.ui-controlgroup-horizontal .ui-radio .ui-icon{display:none}.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-btn-inner{padding:.6em 20px}.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner{padding:.55em 11px .5em}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header{margin:0;padding:0}.ui-selectmenu.ui-popup .ui-header{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:28em){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;min-height:1.4em;line-height:1.4em;font-size:16px;display:block;width:100%;outline:0}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}div.ui-input-text input.ui-input-text,div.ui-input-text textarea.ui-input-text,.ui-input-search input.ui-input-text{border:0;width:100%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search,div.ui-input-text{margin:.5em 0;background-image:none;position:relative}.ui-input-search{padding:0 30px}div.ui-input-text{padding:0 .4em}div.ui-input-has-clear{padding:0 30px 0 .4em}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini,.ui-input-search.ui-mini,div.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{margin:0}textarea.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}textarea.ui-mini{height:45px}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search .ui-input-clear,.ui-input-text .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}input[type=number]::-webkit-outer-spin-button{margin:0}@media all and (min-width:28em){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{width:78%;display:inline-block}.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search,.ui-hide-label div.ui-input-text,.ui-input-search input.ui-input-text,div.ui-input-text input.ui-input-text{width:100%}}.ui-rangeslider{zoom:1;margin:0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider input.ui-input-text.ui-slider-input{margin:.57143em 0}.ui-rangeslider.ui-mini input.ui-slider-input{margin:.28571em 0}.ui-rangeslider input.ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:.5em 68px}.ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin:.25em 68px}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}@media all and (min-width:28em){.ui-field-contain .ui-rangeslider label.ui-slider{float:left}.ui-field-contain .ui-rangeslider input.ui-slider-input{position:relative;z-index:1}.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first{margin-right:17px}.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{float:left;width:78%;margin:0 -68px}.ui-field-contain .ui-rangeslider .ui-slider-track,.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track{right:68px;left:68px}.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first{margin:0}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders{width:auto;float:none;margin:0 68px}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track{right:0;left:0}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-15px}.ui-collapsible-content>.ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset,.ui-panel-inner .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li.ui-btn,.ui-li.ui-field-contain,.ui-li-divider,.ui-li-static{margin:0}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li.ui-last-child,.ui-li.ui-field-contain.ui-last-child{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>.ui-li.ui-first-child{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>.ui-li.ui-last-child{border-bottom-width:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:700}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:400;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview .ui-li>.ui-btn-text{-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li.ui-first-child,.ui-listview .ui-btn.ui-first-child>.ui-li>.ui-btn-text>.ui-link-inherit{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child,.ui-listview .ui-btn.ui-last-child>.ui-li>.ui-btn-text>.ui-link-inherit,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset),.ui-collapsible-content>.ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-link-alt{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:59px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:400;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}ol.ui-listview>.ui-li .ui-li-heading{display:inline-block;width:100%;margin-left:-1.3em;text-indent:1.3em;vertical-align:middle}ol.ui-listview>.ui-li .ui-li-desc:not(.ui-li-aside){text-indent:1.55em}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:700;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:400;margin:0;display:block}.ui-field-contain label.ui-slider{margin-bottom:.4em}div.ui-slider{height:30px;margin:.5em 0;zoom:1}div.ui-slider.ui-mini{margin:.25em 0}.ui-field-contain div.ui-slider,.ui-field-contain div.ui-slider.ui-mini{margin:0}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-input-text.ui-slider-input{display:block;float:left;margin:0;padding:4px;width:40px;height:22px;line-height:22px;font-size:14px;border-width:0;background-image:none;font-weight:700;text-align:center;vertical-align:text-bottom;outline:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track,.ui-slider-switch{position:relative;overflow:visible;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-bg{border:0;height:100%}.ui-slider-track .ui-btn.ui-slider-handle,.ui-slider-switch .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}.ui-slider-handle .ui-btn-inner{padding:0;height:100%}.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}select.ui-slider-switch{display:none}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;margin:.5em 0;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{width:5em;height:29px;margin:.25em 0;top:0}.ui-field-contain .ui-slider-switch,.ui-field-contain .ui-slider-switch.ui-mini{margin:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0;border-top:0}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}@media all and (min-width:28em){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{display:inline-block;width:78%}.ui-field-contain.ui-hide-label div.ui-slider{display:block;width:auto}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch{display:inline-block;width:5.8em}.ui-field-contain div.ui-slider-switch.ui-mini{width:5em}}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.table-stroke thead th{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:block;padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive{display:table-row-group}.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-overlay{z-index:1001}.ui-panel-display-reveal{z-index:0}.ui-panel-display-push{z-index:999}.ui-panel-inner{padding:15px}.ui-panel-content-wrap{position:relative;left:0;min-height:inherit;border:0;z-index:999}.ui-panel-content-wrap-display-overlay,.ui-panel-animate.ui-panel-content-wrap>.ui-header,.ui-panel-content-wrap-closed{position:static}.ui-panel-dismiss{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 350ms ease;-moz-transition:-moz-transform 350ms ease;transition:transform 350ms ease}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal)>div,.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal>div,.ui-panel-animate.ui-panel-content-wrap,.ui-panel-animate.ui-panel-content-fixed-toolbar{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-position-left.ui-panel-open{left:0}.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,.ui-panel-dismiss-position-left.ui-panel-dismiss-open{left:17em;right:-17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,.ui-panel-dismiss-position-right.ui-panel-dismiss-open{left:-17em;right:17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay{left:0}.ui-page-active.ui-page-panel{overflow-x:hidden}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-push.ui-panel-open.ui-panel-position-left{border-right-width:1px;margin-right:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-left:1px}.ui-panel-display-push.ui-panel-open.ui-panel-position-right{border-left-width:1px;margin-left:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-right:1px}@media (min-width:55em){.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left{margin-right:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right{margin-left:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push{display:none}}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:2px;border-left-width:2px} \ No newline at end of file diff --git a/flatclient/css/jquery.mobile.iscrollview-pull.css b/flatclient/css/jquery.mobile.iscrollview-pull.css new file mode 100755 index 0000000..7db5f95 --- /dev/null +++ b/flatclient/css/jquery.mobile.iscrollview-pull.css @@ -0,0 +1,112 @@ +/******************************************* + Default Pull-up and Pull-down styling + Replace/modify/override to your preferences +*******************************************/ +.iscroll-pullup { + /* The wrapper is position:relative or position:absolute, so the pullUp is positioned here + relative to the scroller, not the page. If we don't do this, the pullUp will initially + appear briefly at the bottom of content if content is shorter than the wrapper. + */ + position: absolute; /* relative to the scroller */ + bottom: 0; /* at the bottom of the scroller */ + width: 100%; +} + +.iscroll-pulldown, +.iscroll-pullup { + background: #fff; + height: 40px; + line-height: 40px; /* Center text vertically */ + font-weight: bold; + font-size: 14px; + color: #888; +} + + +/* MSIE not supported by iScroll, so not MSIE transitions or animation */ +.iscroll-pulldown .iscroll-pull-icon, +.iscroll-pullup .iscroll-pull-icon { + margin-left: 0.5em; + display: block; + float: left; + width: 40px; + height: 40px; + background: url(iscroll-pull-icon@2x.png) 0 0 no-repeat; + -webkit-background-size: 40px 80px; + -moz-background-size: 40px 80px; + -o-background-size: 40px 80px; + background-size: 40px 80px; + -webkit-transition: -webkit-transform 250ms linear; + -moz-transition: -moz-transform 250ms linear; + -o-transition: -o-transform 250ms linear; + transition: transform 250ms linear; +} + +/* Note that translateZ(0) triggers hardware acceleration on WebKit browsers + Acceleration is automatic on Mozilla */ + +.iscroll-pulldown .iscroll-pull-icon { + -webkit-transform: rotate(0deg) translateZ(0); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg) translateZ(0); +} + +.iscroll-pullup .iscroll-pull-icon { + -webkit-transform: rotate(-180deg) translateZ(0); + -moz-transform: rotate(-180deg); + -o-transform: rotate(-180deg); + transform: rotate(-180deg) translateZ(0); +} + +.iscroll-pulldown.iscroll-pull-pulled .iscroll-pull-icon { + -webkit-transform: rotate(-180deg) translateZ(0); + -moz-transform: rotate(-180deg); + -o-transform: rotate(-180deg); + transform: rotate(-180deg) translateZ(0); +} + +.iscroll-pullup.iscroll-pull-pulled .iscroll-pull-icon { + -webkit-transform: rotate(0deg) translateZ(0); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg) translateZ(0); +} + +.iscroll-pulldown.iscroll-pull-loading .iscroll-pull-icon, +.iscroll-pullup.iscroll-pull-loading .iscroll-pull-icon { + background-position: 0 100%; + -webkit-transform: rotate(0deg) translateZ(0); + -webkit-transition-duration: 0ms; + -webkit-animation: iscroll-pull-loading 2s infinite linear; + -moz-transform: rotate(0deg); + -moz-transition-duration: 0ms; + -moz-animation: iscroll-pull-loading 2s infinite linear; + -o-transform: rotate(0deg); + -o-transition-duration: 0ms; + -o-animation: iscroll-pull-loading 2s infinite linear; /* Opera 12+ only */ + transform: rotate(0deg) translateZ(0); + transition: transform 0ms linear; + animation: iscroll-pull-loading 2s infinite linear; + } + +@-webkit-keyframes iscroll-pull-loading { + from { -webkit-transform: rotate(0deg); } + to { -webkit-transform: rotate(360deg); } +} + +@-moz-keyframes iscroll-pull-loading { + from { -moz-transform: rotate(0deg); } + to { -moz-transform: rotate(360deg); } +} + +@-o-keyframes iscroll-pull-loading { + from { -o-transform: rotate(0deg); } + to { -o-transform: rotate(360deg); } +} + +@-keyframes iscroll-pull-loading { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + diff --git a/flatclient/css/jquery.mobile.iscrollview.css b/flatclient/css/jquery.mobile.iscrollview.css new file mode 100755 index 0000000..025a9fa --- /dev/null +++ b/flatclient/css/jquery.mobile.iscrollview.css @@ -0,0 +1,72 @@ +/* The widget adds some styling that needs to be computed at run-time (min-height of scroller + * content so that pull-up will be hidden, and scroller margin transferred from wrapper padding.) + * All styles that are added staticly are added through this stylesheet, for maximum flexibility + * + * The widget adds these styles to page elements when it is constructed, and removes them when + * it is destroyed. The styling itself is added by this style sheet. So, any styles added here + * will be removed when the widget is destroyed. (For example, if you call "destroy" on the widget.) + */ + +/* The iscroll-page style is added to the page when the first iscrollview widget is created + * on the page, and removed when the last iscrollview widget on the page is destroyed. + */ +.iscroll-page { + /* Add any styles that you want on pages that use iScroll */ +} + +/* The wrapper is the element that contains the scroller. In the most typical usage, this + * is .ui-content, but could be any element. */ +.iscroll-wrapper { + min-height: 0; /* Override any min-height, for example, in case a background image is + used on ui-content div used as wrapper. */ + + /* The wrapper needs to be positioned relative or absolute for proper positioning of the + scrollbar with iscroll4 default styling of the scrollbar. Either relative or absolute on the + wrapper will cause the absolute positioning of the scrollbar in iScroll to be relative to + the wrapper. */ + position: relative; + + /* iScroll examples all show the z-index of the wrapper raised to 1 (default is 0). There may + be an issue related to touch/click that this solves on specific platforms or depending on + the ordering of elements in the HTML source if elements are fixed positioned. + This would make sure that the wrapper sees click before underlying content. ' + + Howver, raising the wrapper Z-index creates a serious problem on page transitions on + iPhone, so I don't use it here. */ + +} + +/* The scroller is the element that contains the elements that are scrolled. The height of this + * element is typically longer than the wrapper. (It's the stuff that we scroll.) The widget + * creates this element for you. It wraps all of the children of the wrapper. + */ +.iscroll-scroller { + /* Add any styles that you want to add to scrollers */ +} + +/* The "fixed" elements are the elements that are outside of the wrapper. The widget will + * set headers and footers to this style, as well as any element that has a data-iscroll-fixed + * attribute. The widget adds-up the height of these elements when it sizes the wrapper. + */ +.iscroll-fixed { + /* One often sees headers/footers/etc. raised to a z-index of 1000 in iScroll examples. This + is probably because the scroll bar has been mis-placed, and raising the z-index of the + header/footer masks the problem. I don't do it here. */ + + /* Add any styles that you want to add to fixed elements */ +} + +/* iscroll-content is the content that is scrolled - NOT including any pull-down and pull-up + * element, and also not including a special placeholder element used when there is a pull-up. + */ +.iscroll-content { + /* Add any styles that you want to add to iscroll content */ +} + + +/* Note on scrollbar styles: iscroll4 adds inline CSS to the scrollbar when it creates it. + It sets the z-index to 100 and positions it relative to the wrapper, at the right edge of + the wrapper. If you want to override this behaviour, set the scrollBarClass option, and then + style that class as you please */ + +/* See jquery.mobile.iscroll-pulldown.css for styling of pull-down and pull-up elements */ \ No newline at end of file diff --git a/webclient/css/jquery.mobile.structure-1.3.1.css b/flatclient/css/jquery.mobile.structure-1.3.1.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.structure-1.3.1.css rename to flatclient/css/jquery.mobile.structure-1.3.1.css diff --git a/webclient/css/jquery.mobile.structure-1.3.1.min.css b/flatclient/css/jquery.mobile.structure-1.3.1.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.structure-1.3.1.min.css rename to flatclient/css/jquery.mobile.structure-1.3.1.min.css diff --git a/webclient/css/jquery.mobile.structure-1.4.0-alpha.2.css b/flatclient/css/jquery.mobile.structure-1.4.0-alpha.2.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.structure-1.4.0-alpha.2.css rename to flatclient/css/jquery.mobile.structure-1.4.0-alpha.2.css diff --git a/webclient/css/jquery.mobile.structure-1.4.0-alpha.2.min.css b/flatclient/css/jquery.mobile.structure-1.4.0-alpha.2.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.structure-1.4.0-alpha.2.min.css rename to flatclient/css/jquery.mobile.structure-1.4.0-alpha.2.min.css diff --git a/webclient/css/jquery.mobile.theme-1.3.1.css b/flatclient/css/jquery.mobile.theme-1.3.1.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.theme-1.3.1.css rename to flatclient/css/jquery.mobile.theme-1.3.1.css diff --git a/webclient/css/jquery.mobile.theme-1.3.1.min.css b/flatclient/css/jquery.mobile.theme-1.3.1.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.theme-1.3.1.min.css rename to flatclient/css/jquery.mobile.theme-1.3.1.min.css diff --git a/webclient/css/jquery.mobile.theme-1.4.0-alpha.2.css b/flatclient/css/jquery.mobile.theme-1.4.0-alpha.2.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.theme-1.4.0-alpha.2.css rename to flatclient/css/jquery.mobile.theme-1.4.0-alpha.2.css diff --git a/webclient/css/jquery.mobile.theme-1.4.0-alpha.2.min.css b/flatclient/css/jquery.mobile.theme-1.4.0-alpha.2.min.css old mode 100644 new mode 100755 similarity index 100% rename from webclient/css/jquery.mobile.theme-1.4.0-alpha.2.min.css rename to flatclient/css/jquery.mobile.theme-1.4.0-alpha.2.min.css diff --git a/flatclient/css/webclient.css b/flatclient/css/webclient.css new file mode 100755 index 0000000..aa99c93 --- /dev/null +++ b/flatclient/css/webclient.css @@ -0,0 +1,593 @@ +/* + * Mopidy Webclient CSS + * (c) Wouter van Wijk 2012-2013 + */ + +/**************************** + * Responsive stuff + * * iphone 3 20em + * landscape 30 + * iphone 4 40em + * landscape 60 + * ipad landsc 64 + * portr 48 + ****************************/ + +@media all and (min-width: 40.1em) { + /*header*/ + .header-breakpoint.ui-grid-b .ui-block-a { + width: 30%; + } + .header-breakpoint.ui-grid-b .ui-block-b { + width: 30%; + } + .header-breakpoint.ui-grid-b .ui-block-c { + width: 30.1%; + } + /*playlists*/ + .pl-breakpoint.ui-grid-a .ui-block-a { + width: 32.95%; + } + .pl-breakpoint.ui-grid-a .ui-block-b { + width: 65.4%; + } + .pl-breakpoint.ui-grid-a .ui-block-a { + clear: left; + } + .pl-breakpoint.ui-grid-a .ui-block-a { + clear: left; + } + #playlisttracksdiv { + margin-left: 10px; + } + /*search*/ + .srch-breakpoint.ui-grid-a .ui-block-b { + margin-left: .5em; + } + .srch-breakpoint.ui-grid-a .ui-block-a, .srch-breakpoint.ui-grid-a .ui-block-b { + width: 49%; + } + .scroll { + overflow-y: auto; + overflow-x: hidden; + } +} + +/* tablet etc */ +@media all and (min-width: 30.1em) and (max-width: 40em) { + /*header*/ + .header-breakpoint.ui-grid-b .ui-block-a { + width: 45.95%; + clear: left; + } + .header-breakpoint.ui-grid-b .ui-block-b { + display: none; + width: 0; + } + .header-breakpoint.ui-grid-b .ui-block-c { + width: 40%; + } + /*search*/ + .srch-breakpoint.ui-grid-a .ui-block-b { + margin-left: .2em; + } + .srch-breakpoint.ui-grid-a .ui-block-a, .srch-breakpoint.ui-grid-a .ui-block-b { + width: 49.5%; + } + .scroll { + overflow-y: scroll; + overflow-x: hidden; + } +} + +/* phone landscape */ +@media all and (max-width: 30em) { + /*header*/ + .header-breakpoint.ui-grid-b .ui-block-a { + width: 35%; + clear: left; + } + .header-breakpoint.ui-grid-b .ui-block-b { + display: none; + } + .header-breakpoint.ui-grid-b .ui-block-c { + width: 33%; + } + /*playlists*/ + .pl-breakpoint .ui-block-a, .pl-breakpoint .ui-block-b { + width: 100%; + } + /*search*/ + .srch-breakpoint.ui-grid-a .ui-block-a, .srch-breakpoint.ui-grid-a .ui-block-b { + width: 100%; + } + #playlistspane, .scroll { +/* overflow-y: auto; + overflow-x: hidden; +*/ + width: 100%; + heigth: 90%; + } +} + +/* phone portrait */ +@media all and (max-width: 25em) { + + #playlistspane, .scroll { + overflow-y: auto; + overflow-x: hidden; + width: auto; + max-width: 100%; + heigth: 100%; + } +} + +/*********** + * Side Panel and Navigation + */ +.mainNav .fa{ + float: right; +} +.mainNav .navtxt{ + float: left; +} +.mainNav .navtxt:after{ + clear: left; +} + +.bottom{ + width: 100%; + margin: -15px; + margin-top: 30px; +} + + + + +/**headers and controls**/ + + +#playimg { + margin-top: 2px; +} + +#nextimg, #previmg, #backimg, #controlsimg { + margin-top: 6px; +} + +#headermenubtn{ + width: 50px; +} +#headersearchbtn{ + text-align: right; +} +#headersearchbtn .ui-btn-inner{ + padding: 6px; + font-size: 15px; +} + +/*********************** + * Track Slider + ***********************/ + +#trackslider { + display: inline; + width: 100%; +} + +#slidercontainer { + margin-top: 7px; + margin-bottom: 5px; + margin-right: 10px; +} + +.ui-slider-track { + margin-left: 38px; + margin-right: 35px; +} + +.ui-mobile .ui-page .ui-slider-input, .ui-mobile .ui-dialog .ui-slider-input { + display: none !important; +} + +#songelapsed, #songlength { + font-size: 10px; + margin-top: 12px; +} + +/************************ + * Volume Slider + ***********************/ +#mutebt { + float: left; + margin-left: 8px; + margin-top: 8px; +} + +#volumeslider { + display: inline; +} + +/*********** + * pages, content + */ +#page{ + background-color: #fff; +} + +#searchresults { + display: none; +} + +#currentpane, #searchpane, #albumspane, #artistspane, #radiopane { + display: none; +} + + + +#artistviewimage, #albumviewcover { + float: right; + heigth: 90px; +} + +/********************* + * listviews + ********************/ +.table li a { + color: #555 !important; + font-size: 80% !important; + display: block; + padding: 2px; + padding-right: 4px; + padding-left: 4px; +} + +.table li { + background-color: #F8F8F5; + border: 1px solid #CECECE; + border-bottom: 0; + padding: 0; +} + +.table { + padding: 0; + list-style-type:none; +} + +/*.table li:first-child { */ + /*-moz-border-radius-topleft: 2px;*/ + /*-moz-border-radius-topright: 2px;*/ + /*-webkit-border-top-left-radius: 2px;*/ + /*-webkit-border-top-right-radius: 2px;*/ + /*border-top-right-radius: 2px;*/ + /*border-top-left-radius: 2px;*/ +/*}*/ + +.table li:last-child { + /*-moz-border-radius-bottomleft: 2px;*/ + /*-moz-border-radius-bottomright: 2px;*/ + /*-webkit-border-bottom-left-radius: 2px;*/ + /*-webkit-border-bottom-right-radius: 2px;*/ + /*border-bottom-left-radius: 2px;*/ + /*border-bottom-right-radius: 2px;*/ + border-bottom: 1px solid #CECECE; +} + +.albumdivider h1, .table li h1 { + font-size: 120% !important; +} + +.albumdivider { + background-color: #ddd !important; +} + +.smalldivider { + font-size: 25% !important; + heigth: 5px !important; + background-color: #ddd !important; +} + +#playlistslist li a { + padding: 7px; +} + +#playlistslist, #playlisttracks { + margin: 0 !important; + padding: 0 !important; +/* border: 1px solid blue; */ +} + +.albumli { + padding-left: 5px; +} + +.playlistactive { + background-color: #ccc; +} + +.artistcover { + float: right; + width: 30px; + heigth: 30px; + margin-right: 3px; + margin-top: 3px; +} + +.currenttrack2 { + background-image: url('../images/icons/play_alt_12x12.png'); + background-repeat: no-repeat; + background-position: 4px center; +} +.currenttrack { + background-image: url('../images/icons/play_alt_16x16.png'); + background-repeat: no-repeat; + background-color: #eee; + background-position: 6px center; +} + +.currenttrack2 a { + margin-left: 15px; +} +.currenttrack a { + margin-left: 20px; +} + + + + +.song .moreBtn{ + float: right; + padding: 15px 18px 12px 22px; + display: inline-block; + line-height: 100%; +} + + +/******************* + * Now Playing area + *******************/ +.nowPlayingControls{ + font-size: 1.2em; + line-height: 50px; +} +.nowPlayingControls .fa{ + vertical-align: -webkit-baseline-middle; + vertical-align: middle; +} +.nowPlayingControls #btplayNowPlaying{ + font-size: 190%; + margin-left: 20px; + margin-right: 20px; +} + + +/******************* + * Popups + *******************/ +#modalalbum a, #modalartist a { + color: #444; + text-decoration: none; +} + +.popupArtistName, .popupTrackName, .popupAlbumName, .popupArtistName { + font-style: oblique; +} + +#controlspopup, #artistpopup, #coverpopup { + max-width: 550px; + background: white; + padding: 5px; +} + +#h_artistname { + margin-bottom: 65px; + margin-top: 10px; +} + +#buttons, #controlspopupimage, #coverpopupimage, #artistpopupimage { + display: block; + margin-left: auto; + margin-right: auto; + margin-bottom: 5px; +} + +#popupTracksLv li, #popupQueueLv li { + border-bottom: 1px solid #aaa; +} + +#popupTracksLv, #popupQueueLv { + border: 1px solid #aaa; +} + +/*dont hide clear buttons in text input */ +.ui-input-clear-hidden { + display:block !important; +} + + +/*************** + * common use + ***************/ + +#playlistspane { +/* height: 90% !important;*/ + margin: 0px !important; + padding: 2px !important; +} + +a { + text-decoration: none !important; +} + +.nobreak, .btsquare { + display: inline !important; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hidden, #allresultloader, .loader { + display: none; +} + +.breakafter { + margin-right: 15px; +} + +.pright { + display: inline; + margin-top: 4px; + float: right; +} +/********************** + * Song information + **********************/ +.ui-footer{ + border: 0px; +} +#normalFooter{ + height: 48px; +} +#nowPlayingFooter{ + text-align: center; + color: white; +} +#infoname { + overflow: hidden; + white-space: nowrap; + font: bold; + font-size: 14px; +} + +#infoartist { + overflow: hidden; + font-size: 11px; + white-space: nowrap; +} + +#infocover { + height: 48px; + width: 48px; + position: absolute; +} + + +.songinfo-text{ + display:inline-block; + padding: 6px; + color: white; + position: absolute; + padding-left: 50px; + padding-right: 50px; +} +.playPausebtn{ + padding-right: 10px; + position: absolute; + right: 0px; +} + +#controldiv{ + background: none repeat scroll 0% 0% rgb(44, 62, 80); + height: 48px; + padding: 8px 8px 8px 8px; + +} + +#controldiv img { + margin-left: auto; + margin-right: auto; + display: block; +} + + +#nowPlayingpane{ + text-align: center; +} + + +.footer { + position: fixed; + z-index: 1000; + bottom: 0; + width: 100%; +} + +/*helper*/ + +.hidden{ + display: none; +} +.ui-loader h1{ + color: #efefef; +} + + + + +/* panel workaround to make it responsive wrap push on wide viewports once open */ +@media (min-width: 35em){ + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-push, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal { + margin-right: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-wrap-display-push.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-wrap-display-reveal.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { + margin: 0 0 0 17em; + } + .ui-responsive-panel .ui-panel-dismiss-display-reveal { + display: none; + } +} +/*smartphones*/ +@media (max-width: 35em){ + #nowPlayingpane{ + padding: 15px 25px 0px 25px; + } + #nowPlayingpane #controlspopupimage{ + max-width: 100%; + } + .nowPlaying-artistInfo { + font-size: 12px; + } + .nowPlaying-artistInfo h4{ + margin: 0px; + font-weight: normal; + font-size: 12px; + } + .nowPlaying-artistInfo h3{ + margin: 0px 0px 3px 00px; + white-space: nowrap; + overflow: hidden; + + } + #controlspopupimage{ + margin-bottom: 3px; + } + #nowPlayingpane #slidercontainer { + margin-left: -5px; + margin-right: -5px; + } + + .nowPlayingControls{ + font-size: 1.3em; + line-height: 50px; + } +} + +/* disable text selection for mouse swipe */ +body * { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} \ No newline at end of file diff --git a/flatclient/fonts/FontAwesome.otf b/flatclient/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..4dfe30ac7a723e20d0a472069a09cd8bdf04b80a GIT binary patch literal 63008 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 K1Qw9m z!{*Yankw-wi)ssJ0&1ZIYn`jYM_z-+#G&Eu6+GUFih_%(HHYugHs=@-PpUjL>HR>czkO->ebiUy{bWmz@a;nvqyu#eV9E_)+ zz|2EP;Xh9|Uu?4E75_I?$l-8QRw;aLY$5#k@mnZAYgPy4zyH32@Ha%hxTM5tu?9G0 z&Su$N*Cl|>ya>y$hEST+2)LgLWCpO_EIc*Q5Y!a%cVCu?A74&|vc!DRP^GKNsNi@hCj(Me z(uMWCUg^sUr3gPc9ex%xKm4mIunT$i zG5Jt>jwVXI7kU_a1N~DR+B)9#62O?hIA6l;#Pi5c6nk$lJi-u7QqybYO>d#g0cs65 z%8Gu%ih9FqN-Hxflogd02Ob6_lJ^b%ivGD&T&ga}H|G~9ct!#=NyQ-r>hg*)D!x?3 z@al)lS-wZQL61?U$e+Wg5pFb|nwbo}355irI-2q-8{}JgS#15j^!-Zw^pmIv(nyf6 zR905-JHixUJX$t}pCRw-ZPYyT(S^nHFwiy&C^sk!@KCXWsFoj3*TaCn0B+a*yeI5% xv;^ifhEG)0*Q2l3#U>-S5Q3{bGY3671ybQ_T&^h#Wup>!7lti7)bkkre*uhwo*DoE literal 0 HcmV?d00001 diff --git a/flatclient/fonts/fontawesome-webfont.eot b/flatclient/fonts/fontawesome-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..e054c93d180825402bbac5a1967931c8d6dc17d9 GIT binary patch literal 38239 zcmZ^IRZtvE)a3w!+u#m^ySux)ySuwfa0YjW;O;KL-Q6v?Ly$m#gk-W0Km%y}$F=}(fD^zR;PIbA1z-)WJm#ixy9uo&G`p~2Y4XBL^8c0F*f^jhurdAWh}Eez0BeIb^-g!Jj*I8k`-RB zHUaGojX871&S7Zmii-tRA9Zm(q=PYB+%+S*ms9_|T8cNleC5&wZi{4lQ_@2z#>PFSq-i?knt}(Y2U|IlJ6SDB|a%&VSs0JSS_ZCZnJA=))?dPAE>3gl@o1HN2?u z6Ls!Do7{>P-@_y!;bVd|!#t34gt2roruO2s2G&AK7y$HtzMO+NA`o)qMgk%OW_FHE zWKqq4B!v?U}I1KzdD_ekY5Xc^%^Kkj52hjaM@bN(t}u3-Ze^>YiuA*A%Xv%;nt}4@;DmE7gA_JV$$Q zkT4po4ROY^C~AjtxPatv%WUG0Tg9oYP;tKttmPLcNN<&>bfIryiM>{AgEv>0XCDEfrpynGGJ$kQ$HKbPTw#fQ&f+6Mfd4vPLj=XmK*_*2FmOAcw++kr} zD`@eq#w5r^!c0$YUfxtq1}_{|+c>O?G>1Z+v8k%nL%gGUjKlJ69Sa=9M}6xUFKm{W zVu35W%??6j7QTcK;{u|HCHBuBERbh%`z~>TI}<(%I^r^17;{vJrd}qEUy??D&K4Ra zMeKoS_7SaCo5&l7JSq%E-MvmswcnG0LV?uwOip~MGno#iK$EH;XNmE{#oztac!a6{ zd8@F~CXNT&^Am+wnF^dy{4{@h+ap>+lh>Vpn>k~2+!BX*0a@M}B8a$WX8WXAVmW!= zloEL$YCW0-+ct%N9~?sj>pr}5oY6PLY#OMC>kYYDFB#Sbemp8ysMQ2p$*3U(|LnCVc|-m7uvBW#1TYRq)3lB%qvO

    JQ6vGItzvJ1&`zP#7IY4h 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 literal 0 HcmV?d00001 diff --git a/flatclient/fonts/fontawesome-webfont.svg b/flatclient/fonts/fontawesome-webfont.svg new file mode 100755 index 0000000..36d43b8 --- /dev/null +++ b/flatclient/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/flatclient/fonts/fontawesome-webfont.ttf b/flatclient/fonts/fontawesome-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..7ec2e1de899c20a4ca1c98f4b7d7daa828c9269f GIT binary patch literal 80776 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 LHfkt@K(PD|Q{O_Y literal 0 HcmV?d00001 diff --git a/flatclient/images/default_cover.png b/flatclient/images/default_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..60cd1b413905dfa3435ac01abfa4ca8b91087202 GIT binary patch literal 2986 zcmeHJYgCfi8n&VdyK5aZGfb^CA{{%98i`aRnr0Seh-OF`c?~lW@sboZfs&D{?BXS7 zz#=PxWEAhl@iyit$4p%u#8M|s5wC$IqGvll=hs>5{GD&DZ@u5%@BZFz@8^Bq_xUnT z_dTv{x*m6mB;PJPT@DgWo)7C(V;Yxn$+ zSRz-Hj!-MtT!oC1HyBM4m@A8{2?s6yHh+Pjtz^~J=ckddcm~6&_0zs?b)vIH)@LfJ zLqiMy-rQ4&-;>(Fu_jE~RjC{@d2B^2Y<6~bYI1V&0YhM)$!3G4Q}r7#o`TN(+J|Pv zE(QKc3*d^~hql?A(MwKkEeNw!&A`{&wiOr)LA*9kvH?TnzBqYK2Kh zrmp?!&BXfc+Qd;8Z70yz?~j7QbV1oSN&RIO?=~X0uahnRUyYo~a*QkuaWY@a`!Lb0 z(Og8rI3?bdbmmINzcn;Im?M49_7|Mgxy@&g;ya>CLqgA-X#{gJ(#E!@RvCyH28(l2 z)H54|Go)ii6OUE|Lt$pWC}PJ&yjQPY@$fHl(57LB#BQex{3EP(t8v5Nc`GB7J36Ze z(cZ!{R%}8BNZ^UV5DwKt=&jWoK5J9D`3`JS_F+M%BFrbTN>$SQ%MK=%Y=~#v)7slW zIID|$)E#QAE^gK$%S&O4b7EqPbK8a%gpalM3t*d zvx*=b{E^q+$p-R%RcZ`5@4LEADF!bMK{yPdQZsJW zCiIT?Wj6A`#^~RspRjsy7D<`Yks8|Rm-acNWdQj*H~$YqKj<0}Ri$dWAW<;-G&J0c zE*?=dfpN_{7Gbx`mQW-O5uWoXY`$D^t1J2+FS-zLaA`|H@%=|b1N;3^su_joYJIbFCQA2D_skyD!>kSw+sN0Fz!MQmUs-WH4Yv>?^<2*hw5soTo zign?rC`rHe1Uo!<9qKSR*v#!1p`LTL*rwIe-DSLYE_ui17xWWOkNj#!d`DyUK4_)S zj;mV29@N+E3U8FWY2=5j7MFn^x7-xi`y5Ei0xHWROy>`J{0z3 zE4P`$EA-H<41eVui5;+`~-zABVzlHaY8RLJ_(5fEFhrw~cN&*0nD6%qWOGEZ9 zWhO*eURjw*6a}?J+)Jub(Wn3L@!NH`#QR(Hb=mgst{+l_=c8rMAA-XJg##f#)y1Wx z$S6`JrZCMV58JTV$6Uv%_Z3Rr84K<(4)$$U5lA|*HZ53ZZgxnFAW0MrR8&?~RTY2n zO?rxOglYl&H|x*t)E(}ME~Ojh66dE|9g8V9D5W7&oyReX_DeR*Q@rDL5=;H&hmOIb zo~izN*4?`C2cWH&S5#z3<34!dHj}wC+)5RtIz@}fJ%;fT4AfDL0RyTTiyluqqZItW zc0r`7udj*j{%UN6;jw$Nsk{&)l^7Zz>IRTz5Cl+pcj`S~J>bj|-}>qpVZ|?m6zNt+ zVl|s0J*~4h^AY<;?tA1mI35N>B0eEu6Q|JzG{mU5f|$~fFDW%&$Ezj~T2AKC9RxcY ze3(e7Y2soQ%mKg0$H&hB&Zc=_TGZ=V_2sp-WzUEv%*5qDd(I^qX;aW%eB3QBKAlcy z^Xzq2EV|z@iQ*PfB>f<{Paf3lGNfgZ% zy5_Yl+`bBgNl{>wdC zpp#_o)Un6tRD4VQo^p3^_(xV>yC-JlLx}8oh#CSY-`m?;#KDVtI6)#}4*I(>73ak3R5C|pS%Yt{h@H0(X{KXPj6oz{<2*fzk_Y&NNmt*6BYb7VNkpe z=r;p8-4gJK_URfr<{ z%!mF0r@Xe?bF|kTkxL=hvg)aI(2pg?_?4h|2uPSyp_~tv$%j9DDFgL0u>lX7zb-KQ zK53^|snN0aq|JRD>|f3BAOS^5r-}bnp}Nub2_+gX%r6cR4&7M^)r+rsLe?DlQGC_; fZ}S%j7FIaDDa(yvSAPZn)kZ#8f6rHkNzDHOb4F$8 literal 0 HcmV?d00001 diff --git a/flatclient/images/empty.png b/flatclient/images/empty.png new file mode 100755 index 0000000000000000000000000000000000000000..d665e179efd797451084235f105425247fea0a14 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pv241o;Is pI6S+N2ITN~x;Tb#$R;N!@B(=T42&&nK2`x)44$rjF6*2UngG277DE64 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons-18-black.png b/flatclient/images/icons-18-black.png new file mode 100755 index 0000000000000000000000000000000000000000..791646384bf6cf9cf0720c78cfbdc8ffb6d94e7e GIT binary patch literal 1968 zcmZWqc{E%57Cwra+a!n~YH3#bDS$nNd!(P%WlZf+0%&PFh+Tm;}3^0AR#^0DNX<28gV#u8xe192_-qKVoBJdwO~R!elbR3c!FG zPyj}N0y^MEAb=ZC11vxQ4u*jaa0Dkj@C69405bMV?d|QL0Pd}=tp^I=3f0xs z;A{MS7+{yg5Y7T9@+QfZ48h+62_7851E#GAI>zZtE(7?0K;n=v5{V@2zX)_3XkZ)+ zT0#d{LBcCY*n^3KaRPb=vtyh)-a%s^JD5y5%oGUdTn2ZX%Y^}tq{Ek2M=_O(ae$o$lP4Sgb19o8%J_mto!=^^{71 zfi-{V>1i*m@xiwxVB5Q=tsrjfmo?hi^yMTrwFkcETNn6Jq=~& zS)1UTL0?psmL@O#F();btXbvWdF*n_4VPb2-z+H}HXBy8Mb8dlUiJo&^EV&7pZWO- z!i@9~lV0Qv^+|eODbhywm0e**Oj9FT(?wxlDZ_0i-_+D^USd_A8Az$9ztrzJRya({ z{B(@SR)=j9wIzF$y;el)CCuxK)yDLvr@B5hvw7n4ejqmo7ZPY1F{aNN4LOXcd_1|3~!5qY=H? zEr-4f>SWouHlVpkZH9V~%I^h;{R^$+@9Xy9I2A z>PeLRIn$qiSNO5}Uc!oFEh!Zz-`qyYrg}IY;;at(BRBk8N}RXP=_)0ML?7iing@KG zLq-QbJ}i;Ws79(8=AAb6D#J!me`%v0LOSJHIcGGpjICM07)<479$o*oRh+0W>Y7F^ zGPtmvc721ua+{H z`P1LMHdfl+86sdk1!JCsaD0?A1tr!zq?nB=;H;L81(iU}Lkt6*0GbTLX)Yo6OZ~lz z`VS|6Dr2qnW}hrnTB@+oSbV3iS2iCmTw@990$)Aq8rL(DSuP7q>8wTz<&~O4B|m=R zo6*@t>y;&SDDBF`m)3Nm#h%jV-o0|3YK3MCpS3fK^nAHWdN;0G{SxYC;<>>v z4JdOj#(e3btb4D8mRp+m@SnAk-o<)?Lr>mCm9zocA-KWhx8qPhTgB z6PiRMjkSzWo3euE<=?6#J48n_#wadMyQ7-hy9zAPCm-I*V7``f9izsPERkW=*FJMiI%-2l%YdILVG4SF-9FzANwfC^m8#5L}8$x2Oat{~zs41eSIk2mh7-T3|=btJkH8t{QB F{{sZoU`7A{ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons-18-white.png b/flatclient/images/icons-18-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3419b81f6a8896807e1e6af0f14c8415fbe39da6 GIT binary patch literal 1988 zcmZ8ieK^zWAO6lJFDb?_VcNWA226zx%qL=ea-kb3gazdA|RA*`5cSHYsmWh9GE@ zi!=2g1R(;leUFhWB^y}i9t{sABWz`x!RtQD4-GO3!Jz03g3g*hDRPe;0+Oe01XC-dYHf<%<{QIEVw)!d=M%aB=lht0sRA1 z5}JT!Q3?O7z|93U%wkXvqe=W9$I&FXoX<@!AL7F0FmRT`d@duMHH7At4-sGzfy5&4 z`2^#_dS?iduW+H-ABs9U(|?lLe+2XLBh$FCHTNf13PoM+wEBa69h0^N4K5AK!?6}? zCt4DG{I?$0ZMVg>$DC9z?Bd?CezP_H(}sdV=8hkDnK{eMpy>^Tf3H5y)y;>spTBzb zHAl2dBwJL;C7(Ug#{U*hPZ2o>DUB+fbykiU))93*u6&lc6f$VioLppWv{QI6_|h(X zSNq2Fk_Sfm_uAiIb-)Q}X?%=a5aJKrBlKfCA7R$EcX#4(b*U@DeO?JB17FUW`qdQO z(OC*%YE>;e2|mZTOu9934XeBz)g#r=Li4+CJ(uO3y{!`y?g-m7OEKoI3K1$b?$@9! z)jXBrf<$w-Xvpm@4Px&IQPSHs3gL-ztq;FH!XqJ^!I1|Vo4mTR=}X8YW)_N||0U6mDdCMfB+~kIkNNgaWR^U#@GKq&$*lzRX3) zjw*`AsnBA^D3Y|vBmN>UgB7FI=Qs&wu()n z1tu}#J5IkYsL8okkc?QK)*5SjKnwag8yo&>TF~qmK_gFRj;N(WOMMH!ZoZiv7PiX$ zuKJwo0S$KQhMBtZ^63qwSz<}x*u?4Dh6W$2cLOaYPhEnGw`jzXapt=%ui1B&-u)sz zATKlCY?AZET^z}GIJ4jExFl%7SsIAdfU;CDu&k+Nn-S@$Ash0URQd(~f-GkG2~!d) zBdIxd26d=*qfft^R=rq#&{~v$h$8D%nq&KXD)x4cyzKOge#EFa!64UGT^^ZL_jOLw z&JPSP7h5VQ|0O^y^jKIB^YZ7MY}mxBUABxuuAE)ST;BYu&>pGLuBl};Ip;7&GI(>) z5$pXbqJx-qt7xk9{Gy@T^rCrpf3c2W*UfXT3Kx)us(&X1U!;(BvZ^jNJbw1);2ZI)DRb5U+8&^dy^q4MaJ&mcu9Nezc=); ztS46xsJMW3EwQV}mQ&VCoXB?jI;xyKh+5HFNbF=If{$Xhjk2*374cX4lC+o#+SIP&`G4>#`K z5>aM_j`;ACt;h90F!SP$m?nB{oyWWnUDw*36#DLzprl*+i)489mzN3PG#OI(Rm$mXwG3faivnnySuMkH(KQ7Lo@UYC`)BAC=a<4=`ftG%RgAjxOV5he`dUcj Wp+wY%7)$WSfLt68P^&3{m;MJcl$Lk^ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons-36-black.png b/flatclient/images/icons-36-black.png new file mode 100755 index 0000000000000000000000000000000000000000..043bfcd521163a123843f15ac2fba220eab51d05 GIT binary patch literal 3859 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 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/AUTHORS b/flatclient/images/icons/AUTHORS new file mode 100755 index 0000000..aff50f0 --- /dev/null +++ b/flatclient/images/icons/AUTHORS @@ -0,0 +1,10 @@ +Iconic was created and is maintained primarily by P.J. Onori (www.github.com/somerandomdude) + + +Many thanks to all the contributors of Iconic. Their help has added immeasurable worth to the project. + +Philip Shaw (www.codestyle.org): Provided guidance for Unicode assignment method in Iconic's fonts. + +Yann Hourdel (www.github.com/yhourdel): Developed the font creation Python scripts. + +Ian Storm Taylor (www.github.com/ianstormtaylor): Created JSON files containing Unicode character assignments in Iconic's font files for better browser compatibility and easier management for font creation. \ No newline at end of file diff --git a/flatclient/images/icons/LICENSE b/flatclient/images/icons/LICENSE new file mode 100755 index 0000000..f718f1d --- /dev/null +++ b/flatclient/images/icons/LICENSE @@ -0,0 +1,82 @@ +This work is licensed under Creative Commons' Attribution-ShareAlike 3.0 United States (CC BY-SA 3.0) - http://creativecommons.org/licenses/by-sa/3.0/us/ + +If you use these icons, please add a link to Iconic (http://somerandomdude.com/work/iconic/) somewhere on your site or in your app. + + + +LEGAL MUMBO-JUMBO + +You are free: + +to Share — to copy, distribute and transmit the work +to Remix — to adapt the work +to make commercial use of the work + +Under the following conditions: + +Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). +Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. +With the understanding that: + +Waiver — Any of the above conditions can be waived if you get permission from the copyright holder. +Public Domain — Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license. +Other Rights — In no way are any of the following rights affected by the license: +Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; +Apart from the remix rights granted under this license, the author's moral rights; +Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. +Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. + + +Full License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with one or more other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. +"Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of derivatives of works made available under that license under this License or either a Creative Commons unported license or a Creative Commons jurisdiction license with the same License Elements as this License. +"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. +"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. +"Licensor" means the individual, individuals, entity or entities that offers the Work under the terms of this License. +"Original Author" means the individual, individuals, entity or entities who created the Work. +"Work" means the copyrightable work of authorship offered under the terms of this License. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; +to create and reproduce Derivative Works provided that any such Derivative Work, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. +For the avoidance of doubt, where the Work is a musical composition: + +Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or, in the event that Licensor is a member of a performance rights society (e.g. ASCAP, BMI, SESAC), via that society, royalties for the public performance or public digital performance (e.g. webcast) of the Work. +Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). +Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of a recipient of the Work to exercise of the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. When You distribute, publicly display, publicly perform, or publicly digitally perform the Work, You may not impose any technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise of the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by Section 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by Section 4(c), as requested. +You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) either the Creative Commons (Unported) license or a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g. Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative Commons Compatible License. If you license the Derivative Work under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Derivative Work under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and with the following provisions: (I) You must include a copy of, or the Uniform Resource Identifier for, the Applicable License with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform; (II) You may not offer or impose any terms on the Derivative Works that restrict the terms of the Applicable License or the ability of a recipient of the Work to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties; and, (IV) when You distribute, publicly display, publicly perform, or publicly digitally perform the Work, You may not impose any technological measures on the Derivative Work that restrict the ability of a recipient of the Derivative Work from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of the Applicable License. +If You distribute, publicly display, publicly perform, or publicly digitally perform the Work (as defined in Section 1 above) or any Derivative Works (as defined in Section 1 above) or Collective Works (as defined in Section 1 above), You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, consistent with Section 3(b) in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear, if a credit for all contributing authors of the Derivative Work or Collective Work appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You distribute or publicly digitally perform the Work (as defined in Section 1 above) or a Collective Work (as defined in Section 1 above), the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. \ No newline at end of file diff --git a/flatclient/images/icons/arrow_down_12x12.png b/flatclient/images/icons/arrow_down_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..0bac240d0755438a0d7b717085e497e75136faaa GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GZJsWUAr-fh5*?UVUt4pZe~HY3JIslSjeRFR`S7SPeKKX3 ztJL5vxJgDiB*AWi5ku01>g&qC89SI8C7!J3cKEMio{XF| zHEJu2^#mTqPmpp~Td>znTPaknml<;F? zV9v7>P#3tw5X2nB{n+@B3A5&mXD$kL4Z30t5sV#)v&0#aRVNDi8uREVgz-FKW!BO2 zRR}uM!1-zmcS?)AN58TT56gl&GX+;;10FjArB=O-Z3j#bCpWS<2bd&FI2;h*IUB)y qAdw^NtOc)waSP-0Gyw(<0|t97XMxL_H|_%+$>8bg=d#Wzp$PysrAdPT literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_down_24x24.png b/flatclient/images/icons/arrow_down_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..35b9b9c1cc80e52b0bc5a6e44fe2f6c729efeaea GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XUU|AWhE&{2N>N}4TO0YFVad106UunFIc*yJ?S+|p53XQU zzQ~lYDMaDAK~B}o3nFLOgPu2TVU%o>cKCYkcot)b5@QFegJide_kyhN&R^9Oq7QYX zSs49bIJMG%yYOks3ac3pPb4rJOjkF0WFT{MlAFT2jl-SW7|sf@CGoN|HZU+V Ycs|Nk;aIH!^fUv5r>mdKI;Vst0Q66BS^xk5 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_down_32x32.png b/flatclient/images/icons/arrow_down_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..f6ca2657197986e7ebdf001c19bd6befdd7ea762 GIT binary patch literal 380 zcmV-?0fYXDP)Whw~P!kR1rNW8&x!j_vtf@)yVS8xUfmc5x5yG-f~*VcN%0JBbZExZ7JW z;DVW>qg1qI-xXQ_GAn%s^tUaSgu@wVrEzMPlIY;wU$CIWAABG%v%~;y6_`oF3U>-5 zmT}1r8G2!W?!>rSot?#U2=rS14e=7&PIlWrdNIr z(;GSsnIu0qnsgL1cJMCvWblniO~sK}h512}0&8D@>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jq7d*c1>jT@U<1ba`s3QgPPKu zrX+6RSqE5G1nW5zDqMM6aG*tvfop9=LdJn37yf>4WR*I{>Cwb_U_x`InM3hGwh6qw zFRnT98XOQ>)9Z6VqU6XT&gdhy4AoL1%?msjAF*ag**hHNS(qikz{JDg{M>N<)sm$< Qfo^B;boFyt=akR{06LIg5C8xG literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_down_alt1_16x16.png b/flatclient/images/icons/arrow_down_alt1_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..9f891fd6455280af2f699c8ce3c422e44c759eb6 GIT binary patch literal 310 zcmV-60m=S}P)@Ot0F@JAIj{?YN$%Qr2J+@Eb_;*-89oz2EsJ6QqUMO( zOHeVb1SiV07kaq87WZe^L(^b literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_down_alt1_24x24.png b/flatclient/images/icons/arrow_down_alt1_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..145647b9f1f9183b67219605335adf03688b8ad8 GIT binary patch literal 395 zcmV;60d)R}P)nkKSaGv{80$fDC6oaSj>9+}# zXKg0N-e?!A9rVS-eTWor#sqU6L}=$>RT|-c`B~(GU$hnrebD z2vzJv2q$%wTnYP2F%wRzOfUKf)3s!<1m5CVZB3eH(oQLa_e|idpmWGqO#j^6ZvVS* pIFf8(B)MHT-YcX#&7T?RsIe|H+U z9M=rj{LX6?t^+Rn`LV1e-^~QXE8Nz&H1q=rC{W18O8^qT<5oV1Rtn0BK_N%603^?u zd;(!`ViESK08V)cabVn%WH%z;L0l}`naG@){{>9@qjF4}Goe}!$`QzcIm%83eCm!7 zxaB+hoQEa@YZxE@oQfSzClH{CTd}>SLax}`Q(>k8SnUwZ6(mM-0dKbKy%#T~<$ z3>83E^b1YHJTa!KWlBW4mpH4m1S|Zg$SGUoT6zYmP$K%06Sv|X4u*>GASWD1fbDs3 zuS9r~6RhIywe}S;fV?K|<`xtlZ5WAYZi&y&tZ+M`{fM?)Ve||48X9hwV&lYIT_4~c z&5R(RGb1R+&1_^5SF^$E4JI!!ngtwAe{MzHOF-=L{35^r#*LXFWye7*00000NkvXX Hu0mjflM%%q literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_down_alt1_8x8.png b/flatclient/images/icons/arrow_down_alt1_8x8.png new file mode 100755 index 0000000000000000000000000000000000000000..11432379d5c2230c22dc116774c485af6c7f1da9 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xay?xfLn>}1r7$#wW?y4xSXrkKmeA0^?hqp(CbXkbP;2Kr zMr)3grdKVEZW?Wkb!sZf8yQ*ERL-#~#4#L^Zur6MGlBJ$!URn=hZz2)tO}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jq83eiSa6!e)S13S8ir?i0L>y zjX}-ivN*%tnH)V#hdd7mhKMiV$4Top;`dpAGIkJc|`iL#V%>xWwjsZ&?n!hm5a+)whF@%@dp@EU% Y(?8=&ku6J31O33@>FVdQ&MBb@0F$I*mjD0& literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_left_alt1_16x16.png b/flatclient/images/icons/arrow_left_alt1_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..ebf9661daeac4e962518962777d3c0f14b92615d GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XZhN{ohE&{2N^xLbeQk|DL(oTuHw|i~3?1Tatt@&DVks_{ zRxm8N#=Mb{xvqe*gSnB-wn3WVYK>e6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{aj;n z?&$NSE@~MKiOdTQXsJAyRH3G`koOwTmv|+?xWWX*1(Hu#-A#V}Js~4jbBvky7ejCT zlafOYCmL8LC{56A*uuQ4_eBHeT{acxXTpMP><)Sn9m)#A9UfD;6E#2D2zD7>;kJ>c4%$|BoB3LIW9ziCR7C|$9WrfRzVZ{QFUxsXXZ k>|2`;eZKW?%SV6#0C+=mWP@lVDF6Tf07*qoM6N<$g8k5*3;+NC literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/arrow_left_alt1_32x32.png b/flatclient/images/icons/arrow_left_alt1_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..e4bd88f2e9f08685e9a31dd7fb11dd2080f5ffea GIT binary patch literal 486 zcmV@P)v=5;>LooPo8+CMc#&Kqg*J1gOKgHkmEdPzRPGLu^Iub!zb53PrvB7T{SYsSX$oQj~+%KgdfWWc(j(jA=>s=%+8g}I0RM@MXJL|a5aD=gsB5~mfLE~ z$w2EsB6cQPMKheZ5s3p5XdGXPNurTd%cIYE0RA4Jfeth^@4te|V*@QP1Pa~okO;14J;*N09329o@iNTxuzL?y_)hy!W^z~ZQP6Se4 c&wm9N0FSwsFj?@ij{pDw07*qoM6N<$f`FFOw*UYD literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cd_12x12.png b/flatclient/images/icons/cd_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..f40544499ba9280876b7c458a64ae59a69ba58d9 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G%RF5iLn>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jvj{0A-=Z4SI)k8z$CJ`nL$lw zSvGlUY76a+Uo*f!^MGa4wIJAC7XTzXTRv6aDrMG`D#4JIZ|xrqu&5z;dk z7{2gu5Y~Al*I>)rmdKI;Vst E0QC@6)c^nh literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cd_16x16.png b/flatclient/images/icons/cd_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..f52b52d25e5a3585920310f33389d59b02181c0c GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XwtKobhE&{2N^xLbeQk|DL(oTuHw|i~3?1Tatt@&DVks_{ zRxm8N#=Mb{xvqe*gSnB-wn3WVYK>e6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{anNL z$w5ijL<9lH9s75itw`WcM&?)p_-r|eTd0WV3v)fhsUYLE2n*?q@*`6Ff+_E XvOGDrVZmXb7Z^NU{an^LB{Ts5$YWg& literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cd_24x24.png b/flatclient/images/icons/cd_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..21cbeff163e364918fb31acd9a1d590bfa57909f GIT binary patch literal 366 zcmV-!0g?WRP)?taT! z7YBC`Yr=Yk)CH|ffudo)AXdm9F!Vdf8Sd@ztlI+Epl_YCV|aokYGDCtKT58V+m>+a z&3on-iS~)Hpl1FtadHgBhJ`^UFwR3E6_`X6=wwPzTH={FBF1|Q4$G|X0iISrtK7;D zLA*&toMW4r>>E@C1#xbH2n*GgA0)ncWsyq){}^G(rIZLsB(*VRau?7AovB5io#mO- zBOtV|#>pzc?bR=euoIOY$xGAS&TBYmi8^RWX_KGQ^m*vtmahN<034EC)mE{tM*si- M07*qoM6N<$f=FMNKL7v# literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cd_32x32.png b/flatclient/images/icons/cd_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..5c41f0c00c0df22e532acc637fcdcafacea807eb GIT binary patch literal 469 zcmV;`0V@89P);(^aj8dk>k8wQ5{3LY3qbOM z$e&;u97%+}D}Y>HLl~5HNW{R-cMukos-FmsvJ=MRE#8EWQ^o9>~JcBs?QGv)g;j)3nwjVHK(Nx>2DG8WSq0yb1ThHgyW1udhv`6_Rb@S~Rx#w%;a zF>Err!*Tk+hU`B$m=NfMIjAL_-!1`pXSgp(s1gWJ_Kj#C@lMd-?w9s4EUC_i#*w&g z>j2%+$_N5(W&~+96dhQ^ui4=729t*v%_ba9--mYXB_Q;8eiC2+Pl|>GsxM5z00000 LNkvXXu0mjfI~&iN literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cd_8x8.png b/flatclient/images/icons/cd_8x8.png new file mode 100755 index 0000000000000000000000000000000000000000..b48ce939c33b182c1eed1674c914e230d1ddedd6 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1r7$#wW?y4xSXrkKmeA0^?hqp(CbXkbP;2Kr zMr)3grdLN;f6biG!`kSk(ZUjZ`buGj=GTl*{0?d&j|>+~m^i_lk%@<)>60iM Uo523tK(iS}3|Ln>}1r8qFJzP2WuA?W+Un4=pe9AH23sVBgd%^}N9 zK%XV4R>7~~ls?0wZU-6uBb^Rs#UmC7DI8@B=;0BXa6`eg%_rcT6Wbw%HEo=)(rQ&Y zSshkOI!e4!k+{IVGL=Q>|HR%#Ef+o(kxDg_Z2JY8Vh-iv9?eRVt};2eexCT`_r$qe zLEPNem`pr#76`n!!)c&?R9MjKVAIKUtgY*t=# S>2Dg)`3#<}elF{r5}E*NJzO6E literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cog_16x16.png b/flatclient/images/icons/cog_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..7134698b20cf3ba39fade7a5d4038c421964705b GIT binary patch literal 342 zcmV-c0jd6pP)AbOgi*ouIrCQo8|cKsF&GU`ux8S_TAII;Bp}@i}%}@xsoRaSzKtZoAtyCyVDr zK%gMD&iY0Ua@ltr49gWz0y5wRh$`6xs0615Rf!b@`ccpt4Yg5m!mNN)JOtsBWyro> z+yTkfl54`G{>@xR7uT^Q4u%Yk>dL4}OMu=}tAfgKG-UV6$C$wve;OXpk{oFVgWD+| zV_Ns7#))KSIxt#yv=W<@(f9a5d9@g2>O}cP=_QZ77xiQw5~J^2lH?>kiP)CFuMYgX oXm5i3jZlmJ@_=8T^HYEU0A>bQ{~iMfH~;_u07*qoM6N<$f*D|oz5oCK literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cog_24x24.png b/flatclient/images/icons/cog_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..785b909b3a0f6b87a2c5c66bb5d7cb7165ea135c GIT binary patch literal 443 zcmV;s0Yv_ZP)2LzFbr%X2IvNa3Frv0 z0Z521?F5twC=&n^P`(I>5nu#1AWT3!=jxU~sYu@prO_Bpv+Y{J0PPUp)5CXJtF zKAR4F;*=+N;(%Mzur_Ix00MIabZyZPyQG`2vD7IfP6wDO@Dj!z=Pk3r6vhx^B3vtg zzO_vwDi#`__L`m`j0&@Bp;)Y;}kEZ zc0}Mf6Zp>={w>zjV$+9~F?Ht`nWk1f+&kzqo81E7(xEdJlrxmdbs{MO-^u7pIY}B5 zU=N5o5KiRw6Ge8|m1*CGQ(%3P8ji+}r^SXt)L~pDz}mH;PTjy~O#61#XxIdd-fc0w lNOI&X^d+_J-KxxWAa literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/cog_32x32.png b/flatclient/images/icons/cog_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..71bc3777134b4b855f424220a1a03c1aa5ccf4d4 GIT binary patch literal 532 zcmV+v0_**WP)XQo{u82JHxJ(2US?bg5eK&z%G0q!W^D&gZ-DJD=kyKwe(o zD)_X6Vfpw_Dz2?n6edrGv0aFvIN0${2X@pDJPa|U92)6AVKRDdYcmLHrIg7l8%;h8*(n0e(vjdGT}Io zGS(&>2P83MoQ6XXQz~yo!{*Ys#LSMzRfs5?k2Uih8j!n%;9b)K5fB^tl WUY+pB@TKJd0000}1B``FFW?z$bc==nQN9Pzv>YVfgd_0m1SN(Tp z)pN+)@NUBd2RFAB6S)*T7c?k_9Ijlkh~0;Wg&{EPL8%I}Vm=d#1jD?Oy1Q&TmvRD4 OW$<+Mb6Mw<&;$Ucy);Mw literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/first_12x12.png b/flatclient/images/icons/first_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..8373a1ebf9bb4717bb074334581ae571ec3106a8 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gd7dtgAr-fhQWS*NL~Xvu;Bhvc(MT$xDN(VJ*FvQE$ZN+O zF$rcasSPu^j<6XRs@eE4WZLzwkw{}^Rt%oVC~Uaw(G>?Chl>ons?G}g9JcT}_=-13 zELk~GMg8HXUe@WJ2Dcq%O;GNecx4HrKmtR=dX3Y^Th8?XZD#Ov^>bP0l+XkK#h^dk literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/first_16x16.png b/flatclient/images/icons/first_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..535b469e49dc0d2a72e930629a88b6b317ca5f8c GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xsy$sCLn>}1r6>rmiQ0UR!Q*VYQgAWz1S|d{Y&s6->Qhc` znBd^%w5`eH(2*G@Hi|~hX^q&wC|l(e>y8}N7fepu9+fg0ZWDUTx`~IuP5A_Cn?p@w zjyMDFPKF~2&QhA6m<-n`O0c!WIF~3qD&kdUow;(}n+%sSUWW!ohFxBUKf4v&i-FEy N@O1TaS?83{1OU1~NT2`! literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/first_24x24.png b/flatclient/images/icons/first_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..b9913c23ef6ef549a2751068b44b3c4b5ec09eb2 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X)_S@)hE&{2N?9Nnu{CWkjc(_$EsCaCtB@G5!LIG4ywcr86id1lD{ z2~)c~KJvProFZ{QU=BaW&$fxPW^zSeJmk@Rr#q(h(vlSpebNmK%nTE4y!oy?ej)~R OID@CFpUXO@geCw?F=Vd* literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/first_32x32.png b/flatclient/images/icons/first_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..4803640d3c048ec23f76bc23419f67a3584356ef GIT binary patch literal 306 zcmV-20nPr2P)!PwD%{0BrZ!udXR#&x84Z~GwA%ab-=WIALFJ%c)Ke64u~b-Lcm zhtJ)Qk9l%v>NGrq`o}=4v(ANQP@5RgP{R#qsbL06sUZexsH+ShsEZAtsMQA0)G7lO z)XhpUBmrqg(ZDDp&vF;0AU023~Ow_>OiRtcp=i- zFsXzZ8>XfB9~-V~6lYU=(wb4uMl%CB8}1r5s=kTN|0ru;iIBqvU@_3ExeO9&_1~n8k8- zIS3gTs^#pOU}|V6z)--NsMx3=%+vUT$xpbUOOL_OBT(6=XW|5NMkXGHx!FVdQ&MBb@03K~HtN;K2 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/fork_21x24.png b/flatclient/images/icons/fork_21x24.png new file mode 100755 index 0000000000000000000000000000000000000000..15af7aca3a5d9e520517b166ff23ae391ce1b8aa GIT binary patch literal 387 zcmV-}0et?6P)jZq@ zsP{UpJvD5}SZ@R#3UAGQ!N%)~{#bAx>y+;2&auiW@EtSn2TEO*Trx19CHET?V0}+& zSQr6+LYDwJk`ihC9C~gsA!l&7TUI;53CdAw+~@R#)(b~2CGPDuFvnlLV1z6%L@z8t hmAlLZ^y%LM3;^$o$B>F!NhuCYtFNumX9)V~u!cdjis6XxVJ9Z_16K@` zG~clYu?Dyuo literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/headphones_16x14.png b/flatclient/images/icons/headphones_16x14.png new file mode 100755 index 0000000000000000000000000000000000000000..0c490201f632e6edf575d6c63900984cc9e07058 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3HGN^yhQ|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9McX`G978H@C8anpufDb>oFV9|gABtFrhte14tp3oqz^kW z$t$c*ce$Lyu;iO^rVG15vrJ=K%mD+2tk0Dz(k2}0bf{s_ddqO+r${oNK`taKApF!Fb|gNlp#}!vGGpc1C%P3;!7v4lvxZ WHaG5kBkd3L0fVQjpUXO@geCw>zFJuT literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/headphones_24x21.png b/flatclient/images/icons/headphones_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..c63e9e3ada4bc2693d82c3da2ce6b3f4939d77aa GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^5DSr z1<%~X^wgl##FWaylc_d9MGrk)978H@C8Zo-4qF?k&#*+O!9uQs_rel=hL27PaROpO zKNzP=_EhljGX#BZjA&rAXONu7u_cB1q8J0Oe}j}C7enNxh6Stv)7QHT+cEI=u?Os9 zGPxmh;R@@b-z|dPGw!={i>=W+{4hA6KvU^Br|_(KEJ?iVj4NW4CJE>S8a&vfAZHoz zL9#FHB%@4PLPWzH5%Ea^2e}JpG;Uy!`gh_1Bd6Gdkkc*4U$c8`c);Yy{o$#b(xZpW zC+!x9B`~)At<-tSN4Xq P(6bDlu6{1-oD!M<^aO3| literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/headphones_32x28.png b/flatclient/images/icons/headphones_32x28.png new file mode 100755 index 0000000000000000000000000000000000000000..d578833b0fc6d2dc2b7d35d626337eff2aaf554c GIT binary patch literal 399 zcmV;A0dW3_P)iL}1WQI#W&$PwNTZtQX^0mXY6EeH=GGKDz5+-fR=s!ZtU@Ic zV*sK*FuyvH6yDOaumHX!*no*S0V34~pgpg-)xc9E>m+ePypU9F#r1?QDL~156HQfp zsx^Tn0BM;V;(eiPLON<8vyYYTrqkTv{E%`hPeIJ=c{-x`(q50qa9i-;+si78_}jZ!ui01s;b8`J5XuL9`U&jEZ~4o8gHRD#fZ^F!Nhu6Xq1o5C8CHIEcyoY(k-fpfKu6^Rvv3H5 z3TKcA$58`b9-RPIz5rS21!{*(3=jAuGUS3f#F2n3eW#DB{&$GxEPpt Y7(VP5ulteL400BOr>mdKI;Vst0Qq?`_W%F@ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_fill_12x11.png b/flatclient/images/icons/heart_fill_12x11.png new file mode 100755 index 0000000000000000000000000000000000000000..65a69db07b3fc42e3e4779fe16fd3defd760e005 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqA8v(jv*Ddl47=|?PXwQcD5H#H*h$>uAtYl$?*|Wz&EA| z7TmLv*j6r9xN(mn}n*^MaT18?qX*j2MD`FN|?t n@Q9nGnP~~-N)eR>gTe~DWM4f6+=tB literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_fill_16x14.png b/flatclient/images/icons/heart_fill_16x14.png new file mode 100755 index 0000000000000000000000000000000000000000..1a3296c22f3a94f4f0d26be25b80f96b921b1171 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3HGN^yhQ|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MTb0H978H@C8aPlg=SxqW>{ILP?q4(!0Hggk=p!3Xu=b| zh9`%dnDh;tOy9F7F|zp-FnUQRO#IDoq)#W{^2W?#O9j~+s(#J9FvnM`AR%difPo`( zcg%(cK`HLvCqJBGOwh47v`3&rX9?S67OAXOn=wVeoYIb6Mw<&;$T%*kY#u literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_fill_24x21.png b/flatclient/images/icons/heart_fill_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..27f9707c9526322bfa2d3f7be7948ff38a34a34f GIT binary patch literal 400 zcmV;B0dM|^P)1RCwC7Rncw2FckEQ7$74sLb5@! z0g+ID8&3dC089X#AoRDYL^ps9$_R{*5jdlZWK0s=CO+w8%d+qMtoNQpS@`-smKYXb zVl7|6PjLS>FKX_KF)YD%aBA(nfFIa*Xcojea0D~e4Rcs?UOAU=aRv)>p$QjWi7N_L z*1QiHHFM#!R4NQ~#5WIxMdT6g5G0Wb3}a9S)US;}9>}D=XA$ebq}6F;gB*2m7N?5G zN>|-fvpB6{gJC^Td<*f-L#uF1Ocdom#SakI_JXwSg2~CFbv*Sdh^K97+J=J7&0Cz= z_yp-XfhbHH{sm)?bWCyk>z@p0k}!SazFdcRXSDJvc9_iAdRw0o;y-=o#pi)LYDC*V u*B}F$?D$P8exIw+n~SLt)`>T60t^78yj+{raUMGW0000vYT1rPMYcb3K|37mY0T6x*kM7=I@rx=svQB_VDeIK zKnwB%O&jG8c9!G!r$^8dM+(B+0>I7>DjXf=`3PIXC!ulY-+?=b0Y1T}3=i(F$rU)a z8D8yFSZ5wDHzgLCni&5gfO10qQjZj&7`TX$RKnV!;i=FNd11c+1C39O7F^C^lv))p z>L)AWuPneqjt^6i=Y!=~oWu$hE+&}#%S#9Fp@~RtT;zj7gr;E^fqd83LG@mNbsdjr z#I5ld9RPyh_pl00HzHrgss%-$Mzo?`QxBhjXgp6I8o_C{yf&=Ssv#WS(}-)XcfNju z$}u@^@1&=}H|hETB4~PoFj!09kRY!s@mDpJ>&d_x0i76)vj77CzxsWGZ&a*)00000 LNkvXXu0mjfh9k$# literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_fill_8x7.png b/flatclient/images/icons/heart_fill_8x7.png new file mode 100755 index 0000000000000000000000000000000000000000..7e310e18e3fb98f914b51221c24fd84d7e1ddf1f GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3HEvBYEP0lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqF_%K$B>F!Nikc~YMGds57)49STHP=T~MOLJxOH~3(uK! zCLwu=f@XdN*3JqM6{FTxmb?QCH3U`IjT#wGL@+E-Q}Fa_=vv6Mp#NF3!6pfZ21bUH X6=I$&8ih}Q#xr=j`njxgN@xNATxBt6 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_stroke_12x11.png b/flatclient/images/icons/heart_stroke_12x11.png new file mode 100755 index 0000000000000000000000000000000000000000..70c2c7db39500624129e6e38a16b93b47f65f1cb GIT binary patch literal 291 zcmV+;0o?wHP)WC+`PtrG8r!c1_08CW{r~ITFL+b002ovPDHLkV1k_2j1~X@ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_stroke_24x21.png b/flatclient/images/icons/heart_stroke_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..f8c1ab1080164925251673609c52d9a6b99d47a2 GIT binary patch literal 472 zcmV;}0Vn>6P)Dp0NDzP_KWS5D= zmM1vF?-GDsa2DHgS~JnrR^vewQNeu}8Tgy5rfu#cMZDn1t=ZD(4tWEPbAC8n%PFRa z<+q{f9uz1t`;&?ciQrn3F8^v{9mI;n7_cJv2rUQI!s2s9!cK|D*{Bdny*MbfhzI;c zag9`wR7-Y@ie1g9KL#z$$UEYV0hyOAW{d4sVTXKRY}&O}QA{c)2es5KxF& zqBNVJ@kfkal}ZA?g!1hlZ)x&vw+lu=htH(J=ks9x+njp1no{gXfB^uhTCv9U&(N{} O0000-&aWH)n`TC{_)2HP`V(1L>%j6#Kh4oh%$BD(=hjgYVl48GtS z&@6Zj(_EzkolWTbkdQRT7Lu^P3DC}Km5&q6gDY$;RzlO6e+xUnGH+Or*Nh5biFYiy zH{p1&f{zbGxWZQ=h9e}qqq8mo$Aa8Ay8eVC?#OP4wSRUl1n)qOClpBJgb=*9wNzD( zsS!%E3Dp)HbsZoqm9!Ru>w9Q~KRv|`n09F$LLC#hap7A^U`|~TOJYk&Sf4Nn8gt*{}k_w%V zrTd(|#rFgRAH{r|L}Hg7jW~FA-m>SKy14=oRa3X9XKDo$IrKe7Ty7*wx5<$dPzKdtZecF4W)>YO`5!jAw006>=LK?ijN1poj507*qo IM6N<$g1W2*J^%m! literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/heart_stroke_8x7.png b/flatclient/images/icons/heart_stroke_8x7.png new file mode 100755 index 0000000000000000000000000000000000000000..895893cd2a4a6526d7fa10783c569ea80d9b692a GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3HEvBYEP0lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqH<3c$B>F!Nikc~YMGds57)49STHP=T~MOL9kNNVLtjCY zhb4(wU_Pfu4MWn;4HFLVI@}U$S(sBfLFPn@i$Wa#mRE`aix`*4o?yGEu$ozNA(KJ5 ziql$#&5crG22QLFUB4Pb7^he>YDAuB;A`l5)@-mz!l8kYfty#I{RZFZCZH1-JYD@< J);T3K0RS>aKhyvK literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/info_12x24.png b/flatclient/images/icons/info_12x24.png new file mode 100755 index 0000000000000000000000000000000000000000..2bbb3b3610b13f29d2741d51b1364d524fcf3409 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MN>Ro978H@C8anpt-iKKoFV9S;|)fw5{3@u!%j^02d)?x zE?`PI$`kOdDuwlhl#GNyBlCqc))=V`ObaH8U}fi7AzZCsS>JiZ*(>IEGZ*N=iAv6t*@}o?*$a#t25OFAN>rhn<+r7pzV_ zvar&YxlEuVk3(3@^)Js3#x@xDSr z1<%~X^wgl##FWaylc_d9MV6i}jv*Ddk`fr2LbI>!XHOKE-PtIRz@qiH|42DYW}!>i xK@l;b3INF!Nhu9Yq1o5W8CF(lY&X8bg=d#Wzp$PzyomdKI;Vst E0Ff6&fdBvi literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/last_16x16.png b/flatclient/images/icons/last_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..3e0e4b7fb15736eb17d0d713faaaba6fec329a5b GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X>OEZ?Ln>}1MQly`Td81{pdf6(Xy{>lVgg$cPXbHUpZ+8J z8IE)&DmIE2WI6=%moXYC+%)yEIP$uaS6a=c$Yp0+Cr9|BQeN(fajiR-O_UKg2zbRB z@kNSh@%Ba;eUqfi9zBdK!lHJ}A8vJ>XIPYTbgFpAHqpDRD!03M7?^k%){9&3pSP^l Q3g{FDPgg&ebxsLQ0MxfgiU0rr literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/last_24x24.png b/flatclient/images/icons/last_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..221a0763c74a564ccba0d85617aead660ecd292b GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XR(rZQhE&{2irAX=w^G3@VS!)*Q__To3f@u~iHyn@9{l(C z!|gCfLQJTlF-+`$gYpHTNi{8pWeNlmnZI7?l2)@R3h9(qQ@RrH1V~<;_*Pm?=<4J* z(rQLEzLWB2Xmr>wsyXbGsMYdw*+enBgaxGn2fM_aYj)0?q@c9QB2n@3RTuFNoh=2X zmSPiPdp2JxFGkCiC KxvXv~Bw-1F-w4~XeS;#|S)1CR!G}-cazTP^Hg%r>+7oSB83;_o%{HdNN9k=V{ zJY^E7Bb~;YK=G!r@&2C#(rKU}=N`FJ(3lrS13UBGX`o|{D-9Uty3l~pfSCrIma>}$ z96#tT8VK0hyJ$$z4{o6`G6)p*5-bPVNe{Atu>@mF;Rpd;$G0$CdkQdLT7==+D!}#P zDh$^>0>ZBA!f@RxAf-w9*B6Ak-Xf6RnhC@8T0pw%I=%u706-mdcKQxL<^TWy07*qo IM6N<$f;}1MQly`Td81{aDZ_}gMgTe~DWM4f^*%Gl literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/layers_24x21.png b/flatclient/images/icons/layers_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..f8ddd798a2f1f3df14a504cf1ff2c5b88fd00d09 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^5DSr z1<%~X^wgl##FWaylc_d9MP;5Yjv*Ddl2Q~H!q!HWNV)p2;^aoJ))rPiWKyM|>-i%ciHQiwS@ zC4-xjRdeG{hCIb7{v|Skv%3=3t&#V2UA!{GM0Dc3E(RtZhTt^~&Szq;r2$>Q;OXk; Jvd$@?2>^6TM#umF literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_12x11.png b/flatclient/images/icons/list_12x11.png new file mode 100755 index 0000000000000000000000000000000000000000..74fe93c2ec62e5e61d9457803c2dbbce535c7dd7 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlB3(}x$B>F!Ns(LA{?@axwH@0q;Q*V4w0;7kCfg(CfI4O7 kt&FEvOlE7H%)rFMAiP!GvNP2n3aF96)78&qol`;+0D#se#sB~S literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_16x14.png b/flatclient/images/icons/list_16x14.png new file mode 100755 index 0000000000000000000000000000000000000000..64e9a2c881eaa9405c4076d0690694aac90bb4b5 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3HGN^yhQ|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9McSS&jv*Ddl47=|{jFwG;Na#IVY%q=ubxeaLHO_l_MXLw i22yOzN<0iqJPe;c%gAc((n$eoWAJqKb6Mw<&;$VEKO~y~ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_24x21.png b/flatclient/images/icons/list_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..0a98faea66214e3582086b284e68ebd099e2ddd3 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^5DSr z1<%~X^wgl##FWaylc_d9MQ)xhjv*Ddl47=|{jFqUV`Em>Cm<%2ae{%>;p2av5C)%s z!;%v+RxwRr6<_d%n`d!?0>k4BEh*N;D>F<)dzUR*IH8MyiHG5Tu!btry7x{%6B#^R L{an^LB{Ts5>9R0! literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_32x28.png b/flatclient/images/icons/list_32x28.png new file mode 100755 index 0000000000000000000000000000000000000000..b0e2fe444f7b74b7a73f7b5513cdc1175bacc906 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ew!3HE54((L}l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jio!fy978H@y}7cRx50pi;i9*hi_;qCJ$z0{E_RDHzTjm2 zuH~*b=hdlAdAu`r9yQ_XeRAjho)ya;+dR|LlHYA7@KV-euBdeadkXuT2H6R+8<_XM cKcIMkLG!tWuATJyCm`2&y85}Sb4q9e04HHSEC2ui literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_8x7.png b/flatclient/images/icons/list_8x7.png new file mode 100755 index 0000000000000000000000000000000000000000..47f1f6b43cd2266fa879edd9b2bf3514ae0d8c1e GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3HEvBYEP0lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlA{kE?$B>F!Nikc~{{G)E!NE=7tOH+y43`=Miv+{rJ{i%_ S$xQh`bqt=aelF{r5}E+Z=^%9g literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_nested_12x11.png b/flatclient/images/icons/list_nested_12x11.png new file mode 100755 index 0000000000000000000000000000000000000000..ef4320e641d21a915937a4fb0b30fa644453155a GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlA_q?w$B>F!Ns(LA{?@axwH@0q;Q*V4w0;7kCfg(CfI4O7 zt&H48?Gn#7F8H|ey^UCm(2hCBn~od2vgrS|kVPPY!LD50@~_N+-9WP#JYD@<);T3K F0RUbaGF<=w literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_nested_16x14.png b/flatclient/images/icons/list_nested_16x14.png new file mode 100755 index 0000000000000000000000000000000000000000..1541096ad39549e8a7dc7b1c9e6e115a18b715b3 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3HGN^yhQ|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MaG^kjv*Ddl47=|{jFwG;Na#IVY%q=ubxeaLHO_l_MR6^ qOWIBr@Gu7*PBD=UP~>4?;$bj+A|qSv;j9nT&fw|l=d#Wzp$PyuJ0~*$ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_nested_24x21.png b/flatclient/images/icons/list_nested_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..18ebe0dd09dba80bacacd2e16fa83d72ade4e6b4 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^5DSr z1<%~X^wgl##FWaylc_d9MRA@kjv*Ddl47=|{jFqUV`Em>Cm<%2ae{%>;p2av5C)%s z!;%v+RxwRr6<_d%n`d!?0)w(1XVy|ZHJhRk&)6S2627s_bGlYc-8JJxfr#hIZW(U3 j;OiNYF3&e{C>&t0U8bS>G((vaXcL2{tDnm{r-UW|0695q literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/list_nested_32x28.png b/flatclient/images/icons/list_nested_32x28.png new file mode 100755 index 0000000000000000000000000000000000000000..cca0edd604a4941d4ed2eba10b76dc226d7f0f47 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ew!3HE54((L}l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jit;^O978H@CBJl}%#C`Q0v*y1cz7_bJHgE6g6CX z%3``n(e>$(2^#Efr#k};ZplgH@?S8S&&(phpgu=KH}|%7A;_7Yu6{1-oD!MF!Nikc~{{G)E!NE=7tOH*{i=l>DC*w^O3EwH1 eEO!|M5*Sk6%E?T5F>w!23xlVtpUXO@geCx*8YbQV literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_12x12.png b/flatclient/images/icons/loop_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..cfc4f81556ba16b96b38f8e8bec3af8ce3b728bc GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G`#oJ8Ln>}1r8qFJzP2WxA?TyS8V1o{3`e9Jb{OcWd|(z1 zI9R9P*Pu0zf61$bUHlHBO$;9U7>*>cX#L_}BHb7vr&Y+iAJ!96 z4%fIGM6H|Fq#ae zcpYAIFL2~|-27*={44!{34SfV8Bea2pD^bE!%}gEW=lb-ogaHVCI<8OS}>}7_h-?X g*YL)zfq|L9be?nChOXIDfL>wnboFyt=akR{03!!ucK`qY literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_16x16.png b/flatclient/images/icons/loop_16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..35d225c9f7cb78ff830809989abddee0b12f5389 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X9(%ethE&{2N;$w3wl-3qVF_1*g zz4kG_sALdZq2sZWe_AEe1e1ib4jze3QoRn%4v`k}(PC^_IR~EEHZU+VWc&zZ-1g&c QDA2nMp00i_>zopr076u64FCWD literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_24x24.png b/flatclient/images/icons/loop_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..2f6788d8b24651d20dd6923155df869ff4975a80 GIT binary patch literal 414 zcmV;P0b%}$P)2LzFbo8g0XhOBlnv+v zfQ0x$CjcfuOaL1IUxY+E0c-#xFhVzgv*e&)5}MNR!IBk4PR{l@wW}H)vOgRnEEDJ$ z8Vhp)&7ix{aB!A)n;zgZEDLDl5eqp;;pp~s0D!LE$OvHDaO72lGU{k23VO0-F{|7vxPVj6sBIaOInz>0-Ye~1W8}3N}&@#HeiH|zy|GS>5yF4XA^@_A9B*CL-@GweE#7sSUAYX z=P8C-0gu2Eh!v9#Xn-%EdVX4WoUg!vxBy->q?`!yH(;*|B)Eb+g*pMr!c8u~8bP$b z0)XSC`~n7zhI|XPyJFU+Y}|w6(!Yp++LRR{KQIo(Y~D%tGfN2@(y~-Cc^`l&?Hsvq zlIyZXn@?bm?^pD_$lMY3xoR9bkhhe^#+Gl`R8V)otB#z_fQ39W9V<-`!nWkbL!abB zM7IR9ksJ5G9OV5y@NGG_IcfHu7$cEoJf_>v`TCw>3B1ZJfM9BemQ8(Ig8vsl}1MQ%;o>m1?nfKg%YfddCF@E>8~5h!5jV2*4! zQnw&QX~I1IBis!YiXjti10J)xEqGGDqL15w(V5NUK+6%cgab?x8#$F`b|oam`|K#XkcDToECGkYry@7$5LGiFk;P$3R3P5Kt Nc)I$ztaD0e0su?9NCf}@ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt1_12x9.png b/flatclient/images/icons/loop_alt1_12x9.png new file mode 100755 index 0000000000000000000000000000000000000000..c857dc0888aafac81631f4f131b173b2b0001279 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jik5h~IEGZ*N=jj93eCR8&9L&XL(YK)*%*eT;~OR%;MWOg zWLoiv*`Y?jccZODSr z1<%~X^wgl##FWaylc_d9MO!>w978H@C8abpg=SylW?1>v;mv^tc^QUB2R2MNz^}k3 zJc-3{mgIu0Ylkg#GK3T^aG306ob9(j+wsxY6Jmyptmm0O)~l3$RWOv<=IG3+v#DCqgg z{>uCwmyEVXRv(K+T+%l4r+IPKb#o~4^*YL>!fpUuq zkR0}5Lp!xV{sgSlxM%@B6YjfJ+u?f_c0+8_|4_JBzL;{D>Fd@bE5)dwF>8JYEgqbh}pUb`x~1tKv)lrY21M!y9(n+SX@lV$?p~kB9qCbYubs- zLjET(B{0z?Af!3bGm<~B4otD_IuSiHIj!ig2+zS=y33B_J&}c_LTzE{q(;!l02jb^ z@B|J|g*nBEJQcmud%}|&kV=k#z%?xu{oxiR=-t?8kwX?hJAA$ihn@S}(vJWG0E`%C U&r*n?=>Px#07*qoM6N<$f*bIee*gdg literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt1_32x24.png b/flatclient/images/icons/loop_alt1_32x24.png new file mode 100755 index 0000000000000000000000000000000000000000..c81afdd716343e9f36eaee35f7a80250340544d7 GIT binary patch literal 440 zcmV;p0Z0CcP)7tVCLv5B{u&e6KsS&P7=aD6mlOk~=iSM{OB#ZyeeWL7RtgQSxBC_@IYa`n7XP7z zs33~d@z8JyQbQiXR!m|(1G&JOIsGwU5)*P?<1?&W z*ucpI2}4plGdVy{?@X?M|0xW$MF2`)L?y)?a=var;mAS9)0Chbh|y*fYRq+Up*7`5 zd|qq(?80BrvGWLG>gMvKfuvy z+y9@~z*Ilk)7rGJa1K<&!jMeFDX6$|6H_V+Po~-c6@`1cIEGZ*N=jj93eCPYpFN0;XT<}j2#*Dd!U3D)wRSRU z9N;+Quua*AnOh*f<<$+2%UmHP3?7XlP8=l+CZbEKZ3Wnk99jQ4vnDdAtYkRC*V7`y bDUiTm!6LI{u9dt2& zr<)4|L=v1PtzggcatPxsdB?UQ*ztkF1b+Uo84qd}Ec;oZ#Q%^zz~e!8=89Y%21Yi9 Y*^BIIL!VVC0R6z=>FVdQ&MBb@0M7$i@Bjb+ literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt2_16x14.png b/flatclient/images/icons/loop_alt2_16x14.png new file mode 100755 index 0000000000000000000000000000000000000000..359fbc09124e0bf5b4b010cc349aabbf6e4ff2fa GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3HGN^yhQ|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MHf9?978H@C8abpg=SylW?1>v;mv^tc^QUB2R2MNz^}k3 zJc-3{mgIu0Ylkg*JoJ9>rhFOjex5%e(P73Fh?7X7GaJ5HwgJ!pzT23cxmh!rm7D?`a zlYd>*QVZ%B*cK@7;$~VX+1fbc49jB%772zG4`YvgP+3w1^c;hytDnm{r-UW|sfKB8 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt2_24x21.png b/flatclient/images/icons/loop_alt2_24x21.png new file mode 100755 index 0000000000000000000000000000000000000000..db264ecf721c47e14a816771d6e9a2fa3b7aa428 GIT binary patch literal 409 zcmV;K0cQS*P) zHEEV?laaJ1Z7y%;m$X1xz;n7h1ArwWCn7QMKT?b5F~JkqdcwAw0Ky&Y>9wmXp>0q(z9_DfxSghNWNH}Tryxg zjj;%r2%ND`efDx06a1F|I#lVgwvrl2j0jA{(mK{%Y0Y(y8c1i=Ss}+#-m4H0smfMr1pH1HqaSEab^<~@1mzt=ZSHx;=Rs;|9&Kpe(eXOgSvXj4B+0aT?t0MSy8G$QcipSJ`Gb34|IU{dJ6&G z^=e~?pJY}X$y~O@GhxrRP(C#eG8!83-X{W$=lNjEw?VT=0Q2A!nZ)#A^71M|44}fy jgFqr9Y!tSk_9MUmee0aA`oesY00000NkvXXu0mjfnU2#T literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt2_8x7.png b/flatclient/images/icons/loop_alt2_8x7.png new file mode 100755 index 0000000000000000000000000000000000000000..9b55915899575eae43d1d9c3469fb4358bf94519 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3HEvBYEP0lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqD)U0$B>F!Nhu6Xq1o5wvj?&9ta#uQ;jutbcnb3*6BaIm zCW8*%%Lh7^{ALocW)iJ&Fl%G&U~a6i7f?T>(m2aO>RPjj!J?bolSCS_8fJ2d{oy~t u=h4OEkYu1Ou|VrPGizWCqY?uX4};z@b>@ZdFZ}~r%HZkh=d#Wzp$Py6vpaGC literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt3_12x9.png b/flatclient/images/icons/loop_alt3_12x9.png new file mode 100755 index 0000000000000000000000000000000000000000..19c46d853408b622ada524d9d4d7a06c6ef92770 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiY9xyIEGZ*N=i7u9JV&{KEn~#6G=S|jEoAg4bJ_x0@e&4 z*%bVExHDSr z1<%~X^wgl##FWaylc_d9MJqgA978H@B_${bt%=(F&qhFdLASA?06$NIM2ZK)CI#gH z2L_Mz>`ClGJhKJFgd#YK8CT8?izUIMV4*Dm{Uhfw^YZ!Us$O z>`Yf}9XOeF%o?4lYy%c5Hb(sHf5fyxL8Ik4^F{`_UWJ`ZJmL(hzb2}7u&__K+{mzU zmSf_fj%RyV6j+No84P$NIt^J>Rhdk68G`yQ2&i*0ut+dWS2k8_7x9_~bTfmetDnm{ Hr-UW|$QMp| literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt3_24x18.png b/flatclient/images/icons/loop_alt3_24x18.png new file mode 100755 index 0000000000000000000000000000000000000000..0a9f2b999e49d4501164cb361775ba6e6343539d GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>Jihg^#IEGZ*N=jJ3uqJBrKN|t<2f>GrI7k{WBu!9d+_H&* zg{7gw_QIsPoJlznp)1_?MUOcigiFwjx?!06M!n)Rb{g}1~Cft25k5rUQ-zgDJL zoMG=f!K9OMa1%p^^u)a$3Zj4AANeu7(sl_y+;mL+Rsm3Bhj8OBvxLbm8yk2I8!Cxr zYaJ41S-`SEE~7!QQ}ToT!5W6MHqRGoHj5k<{cx1gM^GbGbV6WBgUsZ9DY9FpgV%9ox1hHLmqT$mQ_!bWmFsG5HiFX_wB0l| pGNc=^O6_8ZS{ERa!obMJaQ;xh>a5K6x4>Xv@O1TaS?83{1OVNRczgf= literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt3_32x24.png b/flatclient/images/icons/loop_alt3_32x24.png new file mode 100755 index 0000000000000000000000000000000000000000..2be291a34b5e1338b19834e4666cf47a1b1267ab GIT binary patch literal 388 zcmV-~0ek+5P)^VrBRGL{0^OkfEkfMD5$p(#;0AgR-k*lF4do>sJPIYrUEaqf%Y<>e+ZSRJx?X4U z*dj7 z#leN7QR%=<)Tl4^c~R&9a`JO4F{-`?$}FW^;?_8e#P8U1M$M{bly(UWs@E}79x$q{ zo_Nc%1mq=+s`eOBLngwDVi5O;0zAX45AYM+xlM?TD#;kK!jct7g9;p@BR|6H_V+Po~-c6$N{`IEGZ*N=i7u6t*_9UamvbAxBJr-9tJdaJzhmXyk%P zZHbDF;uCxsf*KXfltUO&?o=&Ma#nHWQwWZj&=btS_0N6tGbSI#6FYvMP&>fj(7?!0 XktHK6qP&p@Xgq_btDnm{r-UW|`pPuj literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt4_12x9.png b/flatclient/images/icons/loop_alt4_12x9.png new file mode 100755 index 0000000000000000000000000000000000000000..5479fd4b973680749bf4291aa687f4095e8f5293 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jipo4)978H@B_${@t%=(F&qhGI;YN=`8^Z)Wg$2vyI_wz= zmAEI|;6K9V62W4$V;<|OVnzY+wpNz90}q${H!wZX#8~l%VR~}ouZ8j*!VYzZ7CvVR zxLc#Jmf_QvN~OOH*El{Mc3HuzFk6ZDSr z1<%~X^wgl##FWaylc_d9MLnJ_jv*Ddk`fdI*FzzY6w(51A&+Vp3Swe)Ld{!d!oXK?yX`iXX+yBIuO{an^LB{Ts58MR2x literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt4_24x18.png b/flatclient/images/icons/loop_alt4_24x18.png new file mode 100755 index 0000000000000000000000000000000000000000..27d39109a09bf76907ea7740ab6e64d12ee50147 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>JimrLOIEGZ*N=jHD6tOk!Z>2(*gLrz<0yzVQqzS5wTQ)JU zuryTIUYJxjgF*R9wZi&F7UmThH(3?mlb9H!G7+ zwFMCjA|ee^a~u*48k;oaZ_2o>cu5B)3SkQxA3hLaJ(baT!N)OlI`c+F zjg!WYx|kQJD4XUa9hus-B9+mrkoRn3-xVIC1_ovZr&Pa(Q+6b$1AWNg>FVdQ&MBb@ E0F!-c_5c6? literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/loop_alt4_32x24.png b/flatclient/images/icons/loop_alt4_32x24.png new file mode 100755 index 0000000000000000000000000000000000000000..2eea496b205ca2fc38581e9682af3e513c79e1f7 GIT binary patch literal 380 zcmV-?0fYXDP)NPw0EfW(z{Xo zNT5(e7E1tP1=WIxI(*OqBX|U#I;ecV%lnA{n$r;~BgLE;ph^&N)kKbSx(N`6I2r0Z z2Kl%fhHRH6_ai7R%{*L^3g^SPgh<}`GYq@`8~F?zRO-nk&k!v?0I>_-t-!n|mj9wW z!5rsSXBNl{I?aSzfDMRoAu+EDrhUMRYi9*e8a5nVQ)64ooJk(&7t8Aif#fWZH(Zu~ zk%pB~aWGII^#=18@031D5Mvl^d@kruO9($|ksKgJDJc|#eiKCFRfstd*zU-Uj@yB! a00RKB*KD_3dv{3y0000|6H_V+Po~-c75RF)IEGZ*N=iJy7`8UDUe1GclY=Ci#g(_|j6%|l7KS=1 zADG01g=RJ!VN;mb?^>=Xz~0~!!GDCyLH7Sfja>{u0vtw+8Lf(D?hGsv4Bsw_J}B2u R3I-a?;OXk;vd$@?2>^k6F<<}y literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/magnifying_glass_12x12.png b/flatclient/images/icons/magnifying_glass_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..2b3e0c07b7a48b2dffc75b13cdf5620e812ce042 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gn>}3|Ln>}1r8qFJzP2WuA?T~aoCcK|h7Rt-PE7g+i!{X; zg1$FOxY#!&v1tRG(qiw2qVj<}26g)J%986(&y*ZDyEopJD4+##rVP zU$}X0FnTaE?_!%^&AXt^k)2CJs-cT#Le5L~Yb+_}+p{7LbS$Z`4>8=7tMFXX;izMc zvzkqp;{ir5eTF301<&O-JP3Hh(WR1O$NqESgovXG44<8uOfG%UVqx|9xw~E z3$~{*D{PhbRW|y;aHQ42S!LB-|*JGWRgBN#KkBgd24(CZh5oI41lX?d( z;fNm%LerFVx*|C;%8pDEyO6waLd@9@XIOaO{#=sfcCt6X`IqNK9wr7xHU`a$fm@>f S+3g2s9YU8q#tnX|yV8gDT#D(0l{PGBW2)nssf26&Nv6VW^bmsuo5 l9)|z>Co_>a1sv@rzyLfjehief_$dGY002ovPDHLkV1iZ&zwZD5 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/magnifying_glass_32x32.png b/flatclient/images/icons/magnifying_glass_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..d2bd47daa5edc0fffcc063bfe958c04f9ebcc2aa GIT binary patch literal 543 zcmV+)0^t3LP)Im4N~4G#fq(ct!r{q4{p^HHWEu_J3%}(K;*&J7)(}_-(N{y! z={k5pT51UJ3U~B)f_!fr&8D@hXE`;2cnku!Qxmu-UWL}yyh&*Yd~#7zSsvQNP|SQ^ z6}hAhs~8oiAtrUux5%;eBKS#50{*ubW`_#vN#xP@v8#RcT?bA~;AbKAf7R5CG<4L| z8NZp}=9d3w?U-gpo_JI}0l;%{9taHH&^T6zbs#V}f+o^*Y&^j;ifkd=cTF{<><*z< z1bo2z=6$V2-2riG@Rq>JGQ9=|?`i<=?_?>v!NC7LLj{S^!KFH2BM}7LRtY(YVBmed hpe2!q1V{T7U;vMsv3{Zfco_fy002ovPDHLkV1i?Y?>+zk literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/magnifying_glass_8x8.png b/flatclient/images/icons/magnifying_glass_8x8.png new file mode 100755 index 0000000000000000000000000000000000000000..dfe04e2678352a9dcd6c5caab58e97980d34749f GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XGCf@!Ln>}1r8G2!W?$oGSoziA4TGo^!;w}W9u9^{ESg*` zNdmj)vwAXmq$fmpJYZYVnc#auErGQs;3}s>mYqO7!y}g!F}5A&J5)OP9Qt@zb}p3n tG!T5z#(H9vLta6PWUn4469Xd~!<*w$CuSf1kO8!m!PC{xWt~$(695=iKB52s literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/mic_18x24.png b/flatclient/images/icons/mic_18x24.png new file mode 100755 index 0000000000000000000000000000000000000000..2eb65271f60e5ae2bcfa74bd6033b9b92580f5c5 GIT binary patch literal 371 zcmV-(0gV2MP)}1r8qFJzP9H7c?YJ1qy+*zdl+?g{E-n8I?>^; z>~r6MgIO)bUig!FZc<}_#^w90I}R~EQ!1%^wX@+$jEAW>1B(R1+3DgsKNP-i1DeU; M>FVdQ&MBb@0EVSC^8f$< literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/new_window_24x24.png b/flatclient/images/icons/new_window_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..0d83e59200f7da71853c5d640958ea34a1a41b20 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1r5s=kTO0X*ej`^yXXCMiD@~2t8(L>v5fT$R z;nB75L|WgmgB~8PJAzJUM7EfAWCWJ*KUPp$_Q#RWD&|#tq(Go{G4FZ>CJqCJw^JnD UW<5UH3pAU-)78&qol`;+0Cem;jsO4v literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/pause_12x16.png b/flatclient/images/icons/pause_12x16.png new file mode 100755 index 0000000000000000000000000000000000000000..340993051c9afc7e7d951570d9f7add87b276367 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!3HFi66di4DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MXH`Ijv*Ddl47=|{jFzH5fBqP(Q(FodU}$AU{99BRf7@} b1{MhheFt_GruJAdpaup{S3j3^P68U}fi7AzZCsS>Jiu62P978H@B}Hyc`&-YZqoAWQL2$N(-d7)<5T?a!y;3Gw i7gjie7%p}U90m;BsqE&J{|DSr z1<%~X^wgl##FWaylc_d9MOL0Jjv*Ddl47=|{jF!SQP5GDAUNMf@vje$3EN_^o+yK? kgDY6k7>rvP92yuIHVd%3xIbDQ12l!f)78&qol`;+0JDKCAOHXW literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/pause_32x32.png b/flatclient/images/icons/pause_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..575176970132599f9a5a01e86cd7e89d83a2b9ba GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gp`I>|Ar-gYTtCQrK!Kw*F+(Qc@-@ZP$MQVH72*tE{_i{R z(ECBtteGy)COly9Se+)lzFOg{)~l=Y?e6~kedZL%0WfewY{8$l{p>YNJPh%neAaLN RdU}AQJYD@<);T3K0RY9_J{14} literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/pause_6x8.png b/flatclient/images/icons/pause_6x8.png new file mode 100755 index 0000000000000000000000000000000000000000..943c9a3122932554fff99a3d0c65141a6dfab792 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJx0U~c5>$3n-k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X6g*uVLn>}1#cWOcThFGz!OfY%a?!v}n3>POLY0Auhrz;w VU8J`C#VVj$22WQ%mvv4FO#phsAgcfX literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/pause_9x12.png b/flatclient/images/icons/pause_9x12.png new file mode 100755 index 0000000000000000000000000000000000000000..3a249dc2ca799d969e85dc7bcd01126eac821358 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRO!3HEZ#7tidq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6)AbTIEGZ*N{ZQ<_P3r*gM*thrDfy9qcbHs7#4TESj(Ys afZ_HtcA2Sjs^$PyGkCiCxvXDSr z1<%~X^wgl##FWaylc_d9MfsjCjv*Ddk|MUI{jF3mOHdFpU^MhF^ay4)l#*!V`mg*^ zpP?`*!s7vJjhO;-)3$}T4>+7KQ?ogDG)vk}dc!TZHEa?YDM<=~8w6JJy;DgtF<}xl z6G&#hmXNA=ETl$?LycD~$;b7&!-bF(27v^I3yS9Io4UUw08U}fi7AzZCsS>Jil%$IIEGZ*T65(#XM+Jx>q7~n39C6C?Vi2mb;kpZT@#n_ zducA6F2h_a@bUTQuv_0AUojQ3SflOYbVhNZBXfC4&C96imAiBnRh-!s;u0n+ey;ST z*CIVxbGxQh>q0}WZhScTDSr z1<%~X^wgl##FWaylc_d9MF%`x978H@ZJBnL^RNL=OYFkNU0w^H*v?jYJ;lj=rMcIX zb{65D`X{@YZD+9Dtvz;vZ~puD`CoZdI*V-P99#-F`M^>v1+|NC$kp(Rb1?{G5B za^t$MV4}*z(QESW`Layag3BGr(YrHjSYl0#D$cAnS0fCSq|Cc&v6JLVcivscwi*Rh^V|tvW)!qt%3+@FDUVpA27B45 i6My9~_|MG}Phb$9TIg)0BE$>y3xlVtpUXO@geCw9XlD!n literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/play_32x32.png b/flatclient/images/icons/play_32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..ed94e60db8f9ac945e9c2182ddac5674564fd92f GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS3F%DLn>|^ndZ%P*nr37>;>kpT8)=#{U&{}T6$rziFwf* zUryE16wk#RTe^Dg?Wy4?I+uC-{Po|#zh-%S-OX=pTw2*WBiLbKVQ$iG3nq?@j1Ohb zvRS2Rnk}$+oW*>qIL|D>CVv|vd$*c&LCw4nvj=~|N^di~{H?U@Ad|rD1g4H07Y37D z7sfwpy)VpL`lVt&ulHZhPPU3EM?Xul?OS<%2kY4@J`90bVht8s%^k|K{24;C_!)w; zv>Pn9iXG71%67oCl%GL$t4PDNUmOkds-jmjFf*(^+3_+-_?$3n-k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XTs>VJLn>}1MQly`Td81{;K1zTz$3)sX{O+9z{L7b`J+BV zVN!(01J)8wiHww_1B?+DeiSU8peohK#CyW(!Kw*cnOGzkl)I%Q3!SVs0S#pEboFyt I=akR{0Ouz!(*OVf literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/play_9x12.png b/flatclient/images/icons/play_9x12.png new file mode 100755 index 0000000000000000000000000000000000000000..307e50805260ba5689c955357d9b3d9eb86a2ffb GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRO!3HEZ#7tidq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6-9ZvIEGZ*N{ZN;_P0{OEa3q2j0TA%3`;gJPFHeU@T6Yl zAFF~N4>#wYhCCso16f+TJb7;T99_=ACN)!{gF&a_$%AVTgRXE)$vKcJbWI`Q;8N*W g!LYk07!(dLmdKI;Vst0Ji8o%>V!Z literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/play_alt_12x12.png b/flatclient/images/icons/play_alt_12x12.png new file mode 100755 index 0000000000000000000000000000000000000000..4d23adaf331802ba8fbdac4e68bc68290f1683b8 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GTRmMILn>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jKMXGDYhX(vJF?R7(3qOF=x%l zWu6drWT9aL=j`BySp}IQ2}ufq8yrd(-(ce55ZKSq@%iEtI|IkVlJ5)`Buxl@x0scU zCnuqCm!McATR@L?g!Ie>hA%plH7+W@V-z+Cad?=|afJJVNnJyiq|;Rc1{Mhhg+z-U U*#&B>Ko2l@y85}Sb4q9e0Ame6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{ajbP0l+XkKjuKZS literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/play_alt_24x24.png b/flatclient/images/icons/play_alt_24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..f6719bef0b45864dd28e927e85ffafeec334fd35 GIT binary patch literal 365 zcmV-z0h0cSP)L(ncHhB}L2MvwZ@PtOAgbeG z|ByJeK#YXt0I38Nb0F08C(Ho(8HRcWxuUf-?Ugft1^Csu3d035aX%T5dMG&}?`EPq zXI`tg*y5dV2BnlPg%3WQhO8)E=!?!X^$@biZOG@N0Fl;HC^PhkCc#5!V`ln&u8=h$ zHkl%1)WS$YHiJv>cu!*wG@(LeV-s@`OsM4Mk%<`%3RM3#cn~uxu0>DbnAjOUMGzg9 z@+CW=*o9PA_q8c?q9UR@3+`^~H5|&s1!huo$yaImdgd-;DXM`Ndvwl=fEeO`~dj-e1F_&#l-i|VU9#{%^+Uku|}J#ey9cPP{@9e03@E_Q9O7p7qwRm3OTU_AbC#Y zZ%PJd5@CY^$mNBK1Je$P?s)k@#l_P1gl@&W5_J2caHK9L!26(>fLsyBEyUo(J(TSR z?Ia{3BhH%#)}de2$%FPTDCEkisl!za0lK4FHfXaEB2u9C+8aV1$$@(NV2l*90D)FJ zMo0$IHP%-M#42{K5KvD>66<1anI_L7_63v@l`ya|l?lyo*~G*S$6A1;3#KG?u$nHb zLPMwfFAyTW4y|}+>XL958p8yMmB-nbh<>HoGAH@)^&jm}1r7$#wW?y4xSXrkKmeA0^?hqp(CbXkbP;2Kr zMr)3grdKSDtN}edzh+M8spT*+67gTe~DWM4f?T0)I literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_12x14.png b/flatclient/images/icons/reload_12x14.png new file mode 100755 index 0000000000000000000000000000000000000000..902918618abb0f24a43916bd92e03ed330b78882 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!3HFy_x^nYq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6`l2TaSW-rm6URTIc#mDy}XAc!^Y$Yj|c1%B!uOTayn=+ zu1d6@pwA$b?h>?sVacmT3x*EX4KoTEQ-rxg3~z|Ya0N05UrCvfG{IWhQH}80iG>HNgTe~DWM4fD7j>P literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_18x21.png b/flatclient/images/icons/reload_18x21.png new file mode 100755 index 0000000000000000000000000000000000000000..725ac9e17896a1a191e423599f04bd28f6bd22ff GIT binary patch literal 367 zcmV-#0g(QQP) z8Y$^n&#TL8VE3{r&jMl(BNAGg9$+#Ncri6APn{caUlP6y1nX# zAfbkwvV(SF^Eu(ll-S+>6cq^~&O9~i%~b-(kF}B&xTFr>OABL4|Bxj0hF=@K1*0|1 z>S|)Ih^vWWO3*53i9u}a6l2RR5P@ezN4x+tL58Cbo27IO@9?hx0{}O|bsQRZ9Fzb6 N002ovPDHLkV1lkpnLGdh literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_24x28.png b/flatclient/images/icons/reload_24x28.png new file mode 100755 index 0000000000000000000000000000000000000000..33631721f00e9d16fc13fe29b978e7ba366f89ae GIT binary patch literal 440 zcmV;p0Z0CcP)kgjiFN|(25w+Sa0HL!YV3KZ6p(~8CC7XB@i#Y_NuVENrWgjo`?KlGIzyFU$rDoKxxbk!eeCXL6o_@jm#V zp%hQlb1=?gvf_R_e{n1Ge>>sr%%9v(X z!o~^L>_}P)p|fTo?b={LQ$ck*a4P@Th0|%2O1Lt&p5QOfzrHFwF8u~YQTKXy{dl%C ic!nwfK1&!+0R{jb7^75QCw>b60000}1r8qFHzP9E)dk~+)n-fe=I2a^fFJv;faGpt& z#gmO`qrHGML!qL_?|KD32P3{E9gUrg!WIo8%{^8ON4`4n`7DxCImTl8oB7JRuK{HW c4h@V9zqd%AS84fs8)yfEr>mdKI;Vst01qlTXaE2J literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_9x11.png b/flatclient/images/icons/reload_9x11.png new file mode 100755 index 0000000000000000000000000000000000000000..6469a40de148af02b27dcb08507ec1024f8541f1 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRY!3HGPMlP2IQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JispE_IEGZ*N=iAv6t*_fUfx5JVPkTH#{+gZ70w9>3<95- z3mHRxFnK6)hdA0#VliUKEJ*+J>TE?$MnpB6GH{ML8ytz$4^ zJrU1Pe7auY-uVXh4Gu5)Eoyekzfn_QG_qoNWzA-C->Tt>qna;E(uDWlm{qwJ-ZN|H vYCPcL#^h+g_~M6CP9rC?bizJX4g-cqK{nRq3GdB-?qu+E^>bP0l+XkKomNke literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_alt_12x14.png b/flatclient/images/icons/reload_alt_12x14.png new file mode 100755 index 0000000000000000000000000000000000000000..44b311e6d41c66781b4d91d32aec74e9de20f867 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!3HFy_x^nYq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c747zPaSW-rm6V{s5Vkh5Uao^Rp+=4E&;f>y?}tqcm1Zts zSn{gTf}w+TL&hG4BYipnM-zezG+Y>a0w$k#7OiJ^)ag*e;CZ%g#>+&-M)`;Z=NdHG zIO7~Xo5UENxy%@_v-3sQLWXq`%NU=%W4>{xXN?3)LKJb`7$0Qpmz!~i zeL@>=fS;X7#YJEC&Zo{hr8!tvGlv-ZoSQK5L`O5brLc*L!@*3BBis}Iump1m8Mm-n cIy5jc+>r6;4v9J+0Q3ffr>mdKI;Vst0Ajmhpa1{> literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_alt_18x21.png b/flatclient/images/icons/reload_alt_18x21.png new file mode 100755 index 0000000000000000000000000000000000000000..323779f7602b897997c69440eaa1f3ba502fd505 GIT binary patch literal 359 zcmV-t0hs=YP)a#-2B^T0CKHj@tD@0)2?(LH@!TDH(M@rcv zYzxQ^V}Km#F;JEskV#qjWsM+4MN63kSTu^Rvo%)I!lDOd zLpj2HkG4J_uE_vOF0`Qjv;8lGOx6lth)anLlD3@{h;TtBki9$2T6J9zS3`~)8&vFI ztOL$mX6@jQqBKCn9<3>BECWFHS`|ZqGw$#;TV_pWZ;}DkP@8HA#_uYqYwdePG}ljp z5)(PKL>Ddm$tUJh5IL@q%Hsym4C%IBY>MsH*x_#h1^~5_ZESv@NUHz<002ovPDHLk FV1jpQk6Zu% literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_alt_24x28.png b/flatclient/images/icons/reload_alt_24x28.png new file mode 100755 index 0000000000000000000000000000000000000000..2b25b2f8c316a6075d1aca9147b20890c6726c40 GIT binary patch literal 444 zcmV;t0YmU<3HBDy2*SnIPRD9)S&#vvfpYy>lRTEu9j9?>+nZ?wKHP9N$0ZD@7!| z4+HnHrD!D*9|TqsUj!n_>V>`s`q@+LC_ZKq{ZS-e$Io6QAYctxEdUisLI7UqtvY}Q zqC^C)SDiXyP9$0zD@WjZVoh=3|K?~V@aGO#^A;p);C!3_B)v=E;~i8WH>1h*JF-mr zfJ@Ol(Ao$1&}e(0dA{IK6Ptt~H<7veelGf}xgn6};?X{!7xg{~);_^dxuYFK4jj;~ zmGLZgATV>4Cg_ZZsqG51$P)pp=`=wDwpqNf`T|JQ3|@2tuqbPqfR8a=Z zuA;=)W_B!#T33uB1if|8?PLtI1#=@Qcy`yc~o3yz~_pMQ6Q} m7k;)V?xBW&e}1r8qFJzP84me~FA_BM+lOvaNu%!b$yvCaxwG zW=E~YA4~$`O?9e4KL&Bhu*~9Qe-`{}6QVWH?I{azm%=*T@BKGydHx3O9 a%na_IWmf0kj}!&kz~JfX=d#Wzp$PzVJUF!g literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/reload_alt_9x11.png b/flatclient/images/icons/reload_alt_9x11.png new file mode 100755 index 0000000000000000000000000000000000000000..6bc46c87ca62ae6dea8b4788c9015cedd92bbe2c GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRY!3HGPMlP2IQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jil%zHIEGZ*N=i7u7`8UDUao`HA;(R{ky$~sVaYnV4t<7= z%G@E2_7k)YBq?|-X66oXWDGgTuAs;Ah&_PyccX=&j!FUZi6u2F7AOZiV4Cz*ft5R9 z&VPqJ^BMUQ8ZXHg{18}jvyt;v8^enC5*KP-GfZNiX(HI+xbHUq6pfau+YDN4Ou~|! pEC*Q@Jm&t$`iyNxJ|hzkLua=26J^8ORX_(ac)I$ztaD0e0sssOPM-h( literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/user_24x32.png b/flatclient/images/icons/user_24x32.png new file mode 100755 index 0000000000000000000000000000000000000000..929f40ead008dd581045833978b99cf85477ef7c GIT binary patch literal 408 zcmV;J0cZY+P)5hQ>5NGbF(RCNrpoCM7i@H+1%NRb?%$ZsiC_glow7_}zT-%0!qP0ZDu(W^2*5jF2Dfsb6R?0&dH8U}fi7AzZCsS>JiaI@A978H@C8Zo-3R@ewo?*$W#vh3h9tq5wWQ0Q+nFY)p zZgM)jvJ+5Oki5VU#C(k*bc1}B5{E{@MiG_m@=L^0ob8zt1vrk#J7hUZv2d(p`<2W* zVHZQtX_l*<;tX?z7?$vWWVkvDE>*4Y=9<}XO_#w)rg4X$)=!3Rwh42TJ#>{DSr z1<%~X^wgl##FWaylc_d9MN>Ro978H@B_${@gsqL7&v4{>;mOSpE^{n-)fmAzpH(N| zD5JwF`6U)QDiZ{?%;nn;{%^d(tf0rT>h1xit9#}(nlKbyty*x;L2bp^B@GS=`xsKc z8w-9?wqmf9_AosZbLfbJVnP!e$3+IIw66j0m?to{szh;d6)mdKI;Vst0LkQ0SO5S3 literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_24x18.png b/flatclient/images/icons/volume_24x18.png new file mode 100755 index 0000000000000000000000000000000000000000..39b4a13fbca72c914c3f80e9616a4b7f4f660b36 GIT binary patch literal 333 zcmV-T0kZyyP)i2DpKazy|nV@;_AMq0n;4pCdrOzr7yCm=$rmKPu?$@@~8o zj8sFZ>zH^e@Sg!7DIo=v91mq=y?1e##E3LNE!1HANAC+C?vQ#&XPTJxk&w}oX@oQH zJi&8Dow9{x2?5Vp9^0fA*4#T#^CwhJObQ8H8jZ8P3Nagpu(d+Q$+{k5)~xcSqGR@i z+k4vT3YtKx=q7MwHo`A14_qo`<;oVe*b6CxuAW8%85x--@;U4#=hbXP3pet|$i-l7 f$2k9Rz5)yY&4N&Sl$)r)00000NkvXXu0mjfHP(nI literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_32x24.png b/flatclient/images/icons/volume_32x24.png new file mode 100755 index 0000000000000000000000000000000000000000..a0bbcfd5b8c40fc5b73d9b8bb385f13b1c756f5c GIT binary patch literal 397 zcmV;80doF{P)smyCQ4-@_|&CkR`!;KU4PUBGut#3YgG zTJ6#X5+$00xeHqPwZiQ1O`sZ^z`{nL@PQ1)(@jgwBcV)~NeU6bF|VIma!sZ=H#1zOn4`n$O)@1Mqw*ayh)hl*l`Z{D#wBA2Z`nV@Y8}n r)NLi=jX)QXz64y}_d(C{mjD9*fpKb3f(ihP00000NkvXXu0mjfNp7Pn literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_8x6.png b/flatclient/images/icons/volume_8x6.png new file mode 100755 index 0000000000000000000000000000000000000000..744b9858ddc46092582ed9ba62c2decdf884c10c GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^96-#*!3HG%vEKg;q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6*+jiIEGZ*N=k5GT77MeKf|NnCz5m=8rc+L<;8?fa4dPQ ztoe_BiPTJoNjx_kl|A}88yOOsRvlq`W%y)+rI5k_h9ixl2L<)EegK-q;OXk;vd$@? F2>=O%Gll>F literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_mute_12x9.png b/flatclient/images/icons/volume_mute_12x9.png new file mode 100755 index 0000000000000000000000000000000000000000..202e29df45bc57bec68bc70bfc04027f04681420 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CJ!3HGRcAO0XQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JigG<&978H@C8Zo-3R@ewo?*$W#vh3h9tq5wWQ0Q+nFY)p zZgM)jvJ+5GFz(@8m0*9xMIa#I0CPmcj`@uY3_BSjn;DoBH^@gGW>+$?RLa(1dGzx~ z2($AmhC7!X&M~dv>w0k`zA!BOAkGX+^X0(nCT(iy1s!{an^LB{Ts5TR%UF literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_mute_16x12.png b/flatclient/images/icons/volume_mute_16x12.png new file mode 100755 index 0000000000000000000000000000000000000000..9fc9f704e42162b93d7af66b9dbc6ef4a3aa4f8b GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3HF=pW8M9DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9Ma7;jjv*Ddk`fdc!q!I4XE^e`@Z{zPmpPWaYK&l<&#Dt} zl+j_8{1OWtl?j4c=JOjl4lrHaGq2I-0L#{yIR~6h^hX?eX1|MDLZkE`b5Km9$cX}R zk)TIRY70808%h+esHRjlGG?7%Gui2qBqYSV)KgO70D~lp;>NuOn;n7HGkCiCxvX8U}fi7AzZCsS>JiZ*+?IEGZ*N=i^*UK6$1j08!Q@wE;s&M#uzSO>Qw6}e1K)kPsRyl zOQx#&1iX)B2x@cK({M{{qe83V3H8o^9zLOyx^E;jHP>C_a(TrVq$Sh9z|8RVvoXh_ T8U}fi7AzZCsS>Jif(wiIEGZ*N=jHD6tOj}mPz2gdZ;|NsSaDvSBEtYeRb0s zH_gal4>+APhp!<@fd2@eLS2N1g7U0MKY2n}bUehGYqrRB@JhVkh?t;b&wqr8r-aQX zpz5zf1Ya40$vIvLHVy+v;X4hCVi8%(MH$*Y)F)kHIPBnd@I)Dd2CvM5RI39)lag8v z9AfNcTEH#N@RFN(E*n$hkHZa?3=&-Y4O1REw6F*VB~>yUQE*pr5?1@0<-8??+e?`H z!wb(PY0WJYZ}}QI-R#TaJMdH>NY>%3SNobYONRzVhGn*Pj3KgDZvy?u;OXk;vd$@? F2>@F-X5#<= literal 0 HcmV?d00001 diff --git a/flatclient/images/icons/volume_mute_8x6.png b/flatclient/images/icons/volume_mute_8x6.png new file mode 100755 index 0000000000000000000000000000000000000000..272c577e45be0041b82f43c2814cef6a6d244ce4 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^96-#*!3HG%vEKg;q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6*+jiIEGZ*N=k5GT77MeKf|NnCz5;|8rc;7@jpG!p2V8M zs^buIzJayDq{%lyfx$t|B*|D+M`Z)!?2QtAEF1<52abrPy%g3{2Aaj->FVdQ&MBb@ E0HiZ7RR910 literal 0 HcmV?d00001 diff --git a/flatclient/images/loader.gif b/flatclient/images/loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..b2764471a0c9f2b4f704c48e4f60aefc564adaa7 GIT binary patch literal 7364 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 literal 0 HcmV?d00001 diff --git a/flatclient/images/start.jpg b/flatclient/images/start.jpg new file mode 100755 index 0000000000000000000000000000000000000000..7b6f4e5bc3fffd6c15d90337cd704085d867c47b GIT binary patch literal 10588 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 literal 0 HcmV?d00001 diff --git a/flatclient/index.html b/flatclient/index.html new file mode 100755 index 0000000..5fd239f --- /dev/null +++ b/flatclient/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + +
    + Close + +

    +

    + +
    + +
    + Close +

    bbb

    + +
    + + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
      +
      +
      +
        + + +
        + +
        + + + +
        + + + + + +
        +

        +

        -

        +
        + +
        + 0:00 + 0:00 + + +
        + +
        + +
        + Clear

        Play Queue

        + +
          +
          + +
          + + +

          +
          +
          + +
          + +
          + + +

          +
            +
            + +
            +
            +
            + + +
            +
            + + +
            +
            +
            +
            +
            +

            Artists

            +
            +
            +
              +
              +
              +
              +
              +
              +
              +

              Albums

              +
              +
              +
                +
                +
                +
                +
                + +
                +

                Tracks

                +
                  +
                  +
                  +
                  + + +
                  +

                  Radio

                  + +
                  +
                    +

                    Add an url of a radio station stream that you want to listen to. The last 25 stations are saved locally (not + on the server yet). + You cannot use container files like M3U, ASPX or PLS (yet), you have to add the real stream + (open the container file in a text-editor to find streams). + To find stations, use e.g. Listenlive or Dirble.

                    + +
                    + + + +
                    +
                    +
                    + + +
                    +
                    + + +
                    +
                    +
                    +
                    +
                    +
                    + Play +
                    +
                    +
                    + + + + +

                    + +   +   +

                    + +
                    + + + +
                    +
                    + + + +
                    + + + + + + + + + + + + + + + + + + + + + + diff --git a/flatclient/js/add2home.js b/flatclient/js/add2home.js new file mode 100755 index 0000000..a00a1a9 --- /dev/null +++ b/flatclient/js/add2home.js @@ -0,0 +1,342 @@ +/*! + * Add to Homescreen v2.0.8 ~ Copyright (c) 2013 Matteo Spinelli, http://cubiq.org + * Released under MIT license, http://cubiq.org/license + */ +var addToHome = (function (w) { + var nav = w.navigator, + isIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform), + isIPad, + isRetina, + isSafari, + isStandalone, + OSVersion, + startX = 0, + startY = 0, + lastVisit = 0, + isExpired, + isSessionActive, + isReturningVisitor, + balloon, + overrideChecks, + + positionInterval, + closeTimeout, + + options = { + autostart: true, // Automatically open the balloon + returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is highly recommended) + animationIn: 'drop', // drop || bubble || fade + animationOut: 'fade', // drop || bubble || fade + startDelay: 2000, // 2 seconds from page load before the balloon appears + lifespan: 15000, // 15 seconds before it is automatically destroyed + bottomOffset: 14, // Distance of the balloon from bottom + expire: 0, // Minutes to wait before showing the popup again (0 = always displayed) + message: '', // Customize your message or force a language ('' = automatic) + touchIcon: false, // Display the touch icon + arrow: true, // Display the balloon arrow + hookOnLoad: true, // Should we hook to onload event? (really advanced usage) + closeButton: true, // Let the user close the balloon + iterations: 100 // Internal/debug use + }, + + intl = { + ar: 'قم بتثبيت هذا التطبيق على %device:انقر%icon ،ثم اضفه الى الشاشة الرئيسية.', + ca_es: 'Per instal·lar aquesta aplicació al vostre %device premeu %icon i llavors Afegir a pantalla d\'inici.', + cs_cz: 'Pro instalaci aplikace na Váš %device, stiskněte %icon a v nabídce Přidat na plochu.', + da_dk: 'Tilføj denne side til din %device: tryk på %icon og derefter Føj til hjemmeskærm.', + de_de: 'Installieren Sie diese App auf Ihrem %device: %icon antippen und dann Zum Home-Bildschirm.', + el_gr: 'Εγκαταστήσετε αυτήν την Εφαρμογή στήν συσκευή σας %device: %icon μετά πατάτε Προσθήκη σε Αφετηρία.', + en_us: 'Install this web app on your %device: tap %icon and then Add to Home Screen.', + es_es: 'Para instalar esta app en su %device, pulse %icon y seleccione Añadir a pantalla de inicio.', + fi_fi: 'Asenna tämä web-sovellus laitteeseesi %device: paina %icon ja sen jälkeen valitse Lisää Koti-valikkoon.', + fr_fr: 'Ajoutez cette application sur votre %device en cliquant sur %icon, puis Ajouter à l\'écran d\'accueil.', + he_il: 'התקן אפליקציה זו על ה-%device שלך: הקש %icon ואז הוסף למסך הבית.', + hr_hr: 'Instaliraj ovu aplikaciju na svoj %device: klikni na %icon i odaberi Dodaj u početni zaslon.', + hu_hu: 'Telepítse ezt a web-alkalmazást az Ön %device-jára: nyomjon a %icon-ra majd a Főképernyőhöz adás gombra.', + it_it: 'Installa questa applicazione sul tuo %device: premi su %icon e poi Aggiungi a Home.', + ja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップしてホーム画面に追加を選んでください。', + ko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 "홈화면에 추가"를 선택하세요', + nb_no: 'Installer denne appen på din %device: trykk på %icon og deretter Legg til på Hjem-skjerm', + nl_nl: 'Installeer deze webapp op uw %device: tik %icon en dan Voeg toe aan beginscherm.', + pl_pl: 'Aby zainstalować tę aplikacje na %device: naciśnij %icon a następnie Dodaj jako ikonę.', + pt_br: 'Instale este aplicativo em seu %device: aperte %icon e selecione Adicionar à Tela Inicio.', + pt_pt: 'Para instalar esta aplicação no seu %device, prima o %icon e depois em Adicionar ao ecrã principal.', + ru_ru: 'Установите это веб-приложение на ваш %device: нажмите %icon, затем Добавить в «Домой».', + sv_se: 'Lägg till denna webbapplikation på din %device: tryck på %icon och därefter Lägg till på hemskärmen.', + th_th: 'ติดตั้งเว็บแอพฯ นี้บน %device ของคุณ: แตะ %icon และ เพิ่มที่หน้าจอโฮม', + tr_tr: 'Bu uygulamayı %device\'a eklemek için %icon simgesine sonrasında Ana Ekrana Ekle düğmesine basın.', + uk_ua: 'Встановіть цей веб сайт на Ваш %device: натисніть %icon, а потім На початковий екран.', + zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选添加至主屏幕。', + zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選加入主畫面螢幕。' + }; + + function init () { + // Preliminary check, all further checks are performed on iDevices only + if ( !isIDevice ) return; + + var now = Date.now(), + i; + + // Merge local with global options + if ( w.addToHomeConfig ) { + for ( i in w.addToHomeConfig ) { + options[i] = w.addToHomeConfig[i]; + } + } + if ( !options.autostart ) options.hookOnLoad = false; + + isIPad = (/ipad/gi).test(nav.platform); + isRetina = w.devicePixelRatio && w.devicePixelRatio > 1; + isSafari = (/Safari/i).test(nav.appVersion) && !(/CriOS/i).test(nav.appVersion); + isStandalone = nav.standalone; + OSVersion = nav.appVersion.match(/OS (\d+_\d+)/i); + OSVersion = OSVersion && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0; + + lastVisit = +w.localStorage.getItem('addToHome'); + + isSessionActive = w.sessionStorage.getItem('addToHomeSession'); + isReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true; + + if ( !lastVisit ) lastVisit = now; + + // If it is expired we need to reissue a new balloon + isExpired = isReturningVisitor && lastVisit <= now; + + if ( options.hookOnLoad ) w.addEventListener('load', loaded, false); + else if ( !options.hookOnLoad && options.autostart ) loaded(); + } + + function loaded () { + w.removeEventListener('load', loaded, false); + + if ( !isReturningVisitor ) w.localStorage.setItem('addToHome', Date.now()); + else if ( options.expire && isExpired ) w.localStorage.setItem('addToHome', Date.now() + options.expire * 60000); + + if ( !overrideChecks && ( !isSafari || !isExpired || isSessionActive || isStandalone || !isReturningVisitor ) ) return; + + var touchIcon = '', + platform = nav.platform.split(' ')[0], + language = nav.language.replace('-', '_'); + + balloon = document.createElement('div'); + balloon.id = 'addToHomeScreen'; + balloon.style.cssText += 'left:-9999px;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0;-webkit-transform:translate3d(0,0,0);position:' + (OSVersion < 5 ? 'absolute' : 'fixed'); + + // Localize message + if ( options.message in intl ) { // You may force a language despite the user's locale + language = options.message; + options.message = ''; + } + if ( options.message === '' ) { // We look for a suitable language (defaulted to en_us) + options.message = language in intl ? intl[language] : intl['en_us']; + } + + if ( options.touchIcon ) { + touchIcon = isRetina ? + document.querySelector('head link[rel^=apple-touch-icon][sizes="114x114"],head link[rel^=apple-touch-icon][sizes="144x144"],head link[rel^=apple-touch-icon]') : + document.querySelector('head link[rel^=apple-touch-icon][sizes="57x57"],head link[rel^=apple-touch-icon]'); + + if ( touchIcon ) { + touchIcon = ''; + } + } + + balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : ''); + balloon.innerHTML = touchIcon + + options.message.replace('%device', platform).replace('%icon', OSVersion >= 4.2 ? '' : '+') + + (options.arrow ? '' : '') + + (options.closeButton ? '\u00D7' : ''); + + document.body.appendChild(balloon); + + // Add the close action + if ( options.closeButton ) balloon.addEventListener('click', clicked, false); + + if ( !isIPad && OSVersion >= 6 ) window.addEventListener('orientationchange', orientationCheck, false); + + setTimeout(show, options.startDelay); + } + + function show () { + var duration, + iPadXShift = 208; + + // Set the initial position + if ( isIPad ) { + if ( OSVersion < 5 ) { + startY = w.scrollY; + startX = w.scrollX; + } else if ( OSVersion < 6 ) { + iPadXShift = 160; + } + + balloon.style.top = startY + options.bottomOffset + 'px'; + balloon.style.left = startX + iPadXShift - Math.round(balloon.offsetWidth / 2) + 'px'; + + switch ( options.animationIn ) { + case 'drop': + duration = '0.6s'; + balloon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)'; + break; + case 'bubble': + duration = '0.6s'; + balloon.style.opacity = '0'; + balloon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)'; + break; + default: + duration = '1s'; + balloon.style.opacity = '0'; + } + } else { + startY = w.innerHeight + w.scrollY; + + if ( OSVersion < 5 ) { + startX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX; + balloon.style.left = startX + 'px'; + balloon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px'; + } else { + balloon.style.left = '50%'; + balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px'; + balloon.style.bottom = options.bottomOffset + 'px'; + } + + switch (options.animationIn) { + case 'drop': + duration = '1s'; + balloon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)'; + break; + case 'bubble': + duration = '0.6s'; + balloon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)'; + break; + default: + duration = '1s'; + balloon.style.opacity = '0'; + } + } + + balloon.offsetHeight; // repaint trick + balloon.style.webkitTransitionDuration = duration; + balloon.style.opacity = '1'; + balloon.style.webkitTransform = 'translate3d(0,0,0)'; + balloon.addEventListener('webkitTransitionEnd', transitionEnd, false); + + closeTimeout = setTimeout(close, options.lifespan); + } + + function manualShow (override) { + if ( !isIDevice || balloon ) return; + + overrideChecks = override; + loaded(); + } + + function close () { + clearInterval( positionInterval ); + clearTimeout( closeTimeout ); + closeTimeout = null; + + // check if the popup is displayed and prevent errors + if ( !balloon ) return; + + var posY = 0, + posX = 0, + opacity = '1', + duration = '0'; + + if ( options.closeButton ) balloon.removeEventListener('click', clicked, false); + if ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false); + + if ( OSVersion < 5 ) { + posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY; + posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth)/2) - startX; + } + + balloon.style.webkitTransitionProperty = '-webkit-transform,opacity'; + + switch ( options.animationOut ) { + case 'drop': + if ( isIPad ) { + duration = '0.4s'; + opacity = '0'; + posY += 50; + } else { + duration = '0.6s'; + posY += balloon.offsetHeight + options.bottomOffset + 50; + } + break; + case 'bubble': + if ( isIPad ) { + duration = '0.8s'; + posY -= balloon.offsetHeight + options.bottomOffset + 50; + } else { + duration = '0.4s'; + opacity = '0'; + posY -= 50; + } + break; + default: + duration = '0.8s'; + opacity = '0'; + } + + balloon.addEventListener('webkitTransitionEnd', transitionEnd, false); + balloon.style.opacity = opacity; + balloon.style.webkitTransitionDuration = duration; + balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)'; + } + + + function clicked () { + w.sessionStorage.setItem('addToHomeSession', '1'); + isSessionActive = true; + close(); + } + + function transitionEnd () { + balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false); + + balloon.style.webkitTransitionProperty = '-webkit-transform'; + balloon.style.webkitTransitionDuration = '0.2s'; + + // We reached the end! + if ( !closeTimeout ) { + balloon.parentNode.removeChild(balloon); + balloon = null; + return; + } + + // On iOS 4 we start checking the element position + if ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations); + } + + function setPosition () { + var matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform), + posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY, + posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth) / 2) - startX; + + // Screen didn't move + if ( posY == matrix.m42 && posX == matrix.m41 ) return; + + balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)'; + } + + // Clear local and session storages (this is useful primarily in development) + function reset () { + w.localStorage.removeItem('addToHome'); + w.sessionStorage.removeItem('addToHomeSession'); + } + + function orientationCheck () { + balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px'; + } + + // Bootstrap! + init(); + + return { + show: manualShow, + close: close, + reset: reset + }; +})(window); diff --git a/flatclient/js/controls.js b/flatclient/js/controls.js new file mode 100755 index 0000000..5a98519 --- /dev/null +++ b/flatclient/js/controls.js @@ -0,0 +1,522 @@ +/******************************************************** + * play an uri from a tracklist + *********************************************************/ +function playTrack(addtoqueue) { + //stop directly, for user feedback + if (!addtoqueue) { + mopidy.playback.stop(true); + mopidy.tracklist.clear(); + } + $('#popupTracks').popup('close'); + $('#controlspopup').popup('close'); + toast('Loading...'); + + playlisturi = $('#popupTracks').data("list"); + + uri = $('#popupTracks').data("track"); + + var trackslist = new Array(); + var track, tracksbefore, tracksafter; + var tracks = getTracksFromUri(playlisturi); + +//find track that was selected + for (var selected = 0; selected < tracks.length; selected++) { + if (tracks[selected].uri == uri) { + break; + } + } + +//find track that is playing + for (var playing = 0; playing < currentplaylist.length; playing++) { + if (currentplaylist[playing].uri == songdata.uri) { + break; + } + } + +//switch popup options + switch (addtoqueue) { + case ADD_THIS_BOTTOM: + mopidy.tracklist.add(tracks.slice(selected, selected + 1)); + return false; + case PLAY_NEXT: + mopidy.tracklist.add(tracks.slice(selected, selected + 1), playing + 1); + return false; + case ADD_ALL_BOTTOM: + mopidy.tracklist.add(tracks); + return false; + } + +// first add track to be played, then the other tracks + +// mopidy.tracklist.add(null, 0, playlisturi); + mopidy.tracklist.add(tracks); //.slice(selected, selected + 1) ); + //wait 1.5 second before adding the rest to give server the time to start playing + /* setTimeout(function() { + mopidy.tracklist.add(tracks.slice(0, selected), 0); + if (selected < tracks.length) { + mopidy.tracklist.add(tracks.slice(selected + 1) ); + } + }, 1500); + */ +// mopidy.playback.changeTrack(tracks[selected]); + + for (var i = 0; i <= selected; i++) { + mopidy.playback.next(); + } + + mopidy.playback.play(); //tracks[selected]); + console.log(selected); + return false; +} + +/*** + * Plays a Track given by an URI + * @param uri + * @returns {boolean} + */ +function playTrackByUri(uri, playlisturi){ + //stop directly, for user feedback + mopidy.playback.stop(true); + mopidy.tracklist.clear(); + + //this is deprecated, remove when popuptracks is removed completly + $('#popupTracks').popup('close'); + $('#controlspopup').popup('close'); + //end of deprecated + + toast('Loading...'); + + var trackslist = new Array(); + var track, tracksbefore, tracksafter; + var tracks = getTracksFromUri(playlisturi); + +//find track that was selected + for (var selected = 0; selected < tracks.length; selected++) { + if (tracks[selected].uri == uri) { + break; + } + } + +//find track that is playing + for (var playing = 0; playing < currentplaylist.length; playing++) { + if (currentplaylist[playing].uri == songdata.uri) { + break; + } + } + + mopidy.tracklist.add(tracks); + + for (var i = 0; i <= selected; i++) { + mopidy.playback.next(); + } + + mopidy.playback.play(); //tracks[selected]); + console.log(selected); + return false; +} + +/******************************************************** + * play an uri from the queue + *********************************************************/ + +/*** + * Plays a Track from a Playlist. + * @param uri + * @param playlisturi + * @returns {boolean} + */ +function playTrackQueueByUri(uri, playlisturi){ + //stop directly, for user feedback +//console.log('qu'); + mopidy.playback.stop(true); + $('#popupQueue').popup('close'); + toast('Loading...'); + + var track; + for (var i = 0; i < currentplaylist.length; i++) { + if (currentplaylist[i].uri == uri) { + track = i + 1; + break; + } + } + for (var i = 0; i < track; i++) { + mopidy.playback.next(); + } + + mopidy.playback.play(); //currentplaylist[track]); + console.log(track, currentplaylist[track]); + return false; +} + +/*** + * @deprecated + * @returns {boolean} + */ +function playTrackQueue() { + playlisturi = $('#popupQueue').data("list"); + uri = $('#popupQueue').data("track"); + return playTrackByUri(uri, playlisturi); +} + +/******************************************************** + * remove a track from the queue + *********************************************************/ +function removeTrack() { + $('#popupQueue').popup('close'); + toast('Deleting...'); + + uri = $('#popupQueue').data("track"); + console.log(uri); + + for (var i = 0; i < currentplaylist.length; i++) { + if (currentplaylist[i].uri == uri) { + break; + } + } + var track = {}; + track.uri = currentplaylist[i].uri; + mopidy.tracklist.remove(track); + console.log(currentplaylist[i].uri); +} + +function clearQueue() { + mopidy.tracklist.clear(); + return false; +} + +/********************** + * Buttons + */ + +function doShuffle() { + mopidy.playback.stop(true); + mopidy.tracklist.shuffle(); + mopidy.playback.play(); +} + +/* Toggle state of play button */ +function setPlayState(nwplay) { + if (nwplay) { + $("#playimg").attr('src', 'images/icons/pause_32x32.png'); + $("#btplayNowPlaying >i").removeClass('fa-play').addClass('fa-pause'); + } else { + $("#playimg").attr('src', 'images/icons/play_alt_32x32.png'); + $("#btplayNowPlaying >i").removeClass('fa-pause').addClass('fa-play'); + } + play = nwplay; +} + +//play or pause +function doPlay() { + toast('Please wait...', 250); + if (!play) { + mopidy.playback.play(); + } else { + mopidy.playback.pause(); + } + setPlayState(!play); +} + +function doPrevious() { + toast('Playing previous track...'); + mopidy.playback.previous(); +} + +function doNext() { + toast('Playing next track...'); + mopidy.playback.next(); +} + +function backbt() { + history.back(); + return false; +} + +/*************** + * Options + */ + +function setRepeat(nwrepeat) { + if (repeat == nwrepeat) { + return + } + if (!nwrepeat) { + $("#repeatbt").attr('src', 'images/icons/reload_alt_18x21.png'); + } else { + $("#repeatbt").attr('src', 'images/icons/reload_18x21.png'); + } + repeat = nwrepeat; +} + +function setRandom(nwrandom) { + if (random == nwrandom) { + return + } + if (!nwrandom) { + $("#randombt").attr('src', 'images/icons/loop_alt2_24x21.png'); + } else { + $("#randombt").attr('src', 'images/icons/loop_24x24.png'); + } + random = nwrandom; +} + +function doRandom() { + if (random == false) { + mopidy.playback.setRandom(true).then(); + } else { + mopidy.playback.setRandom(false).then(); + } + setRandom(!random); +} + +function doRepeat() { + if (repeat == false) { + mopidy.playback.setRepeat(true).then(); + } else { + mopidy.playback.setRepeat(false).then(); + } + setRepeat(!repeat); +} + + +/* +function setRepeat(nwrepeat) { + if (repeat == nwrepeat) { + return + } + if (!nwrepeat) { + $("#repeatbt").attr('src', 'images/icons/reload_alt_18x21.png'); + } else { + $("#repeatbt").attr('src', 'images/icons/reload_18x21.png'); + } + repeat = nwrepeat; +} + +function setRandom(nwrandom) { + if(nwrandom){ + $("#flip-random").val('On'); + }else{ + $("#flip-random").val('Off'); + } + console.log('function setRandom called: '+nwrandom); +} + +function doRandom() { + console.log('obsolete function doRandom called'); +} +*/ +//$("#flip-random").change(function () { +// if ($(this).val() == "on") { +// mopidy.tracklist.setRandom(true).then(); +// } else if ($(this).val() == "off") { +// mopidy.tracklist.setRandom(false).then(); +// } +//}); +// +//$("#flip-repeat").change(function () { +// if ($(this).val() == "on") { +// mopidy.tracklist.setRepeat(true).then(); +// } else if ($(this).val() == "off") { +// mopidy.tracklist.setRepeat(false).then(); +// } +//}); + + +/********************* + * Track Slider + * Use a timer to prevent looping of commands + *********************/ + +function doSeekPos(value) { + var val = $("#trackslider").val(); + newposition = Math.round(val); + if (!initgui) { + pauseTimer(); + //set timer to not trigger it too much + clearTimeout(seekTimer); + $("#songelapsed").html(timeFromSeconds(val / 1000)); + seekTimer = setTimeout(triggerPos, 500); + } +} + +function triggerPos() { + if (mopidy) { + posChanging = true; +// mopidy.playback.pause(); +// console.log(newposition); + mopidy.playback.seek(newposition); +// mopidy.playback.resume(); + resumeTimer(); + posChanging = false; + } +} + +function setPosition(pos) { + if (posChanging) { + return; + } + var oldval = initgui; + if (pos > songlength) { + pos = songlength; + pauseTimer(); + } + currentposition = pos; + initgui = true; + $("#trackslider").val(currentposition).slider('refresh'); + initgui = oldval; + $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); +} + +/******************** + * Volume slider + * Use a timer to prevent looping of commands + */ + +function setVolume(value) { + var oldval = initgui; + initgui = true; + $("#volumeslider").val(value).slider('refresh'); + initgui = oldval; +} + +function doVolume(value) { + if (!initgui) { + volumeChanging = value; + clearInterval(volumeTimer); + volumeTimer = setTimeout(triggerVolume, 500); + } +} + +function triggerVolume() { + mopidy.playback.setVolume(parseInt(volumeChanging)); + volumeChanging = 0; +} + +function doMute() { + //only emit the event, not the status + if (muteVolume == -1) { + $("#mutebt").attr('src', 'images/icons/volume_mute_24x18.png'); + muteVolume = currentVolume; + mopidy.playback.setVolume(0).then(); + } else { + $("#mutebt").attr('src', 'images/icons/volume_24x18.png'); + mopidy.playback.setVolume(muteVolume).then(); + muteVolume = -1; + } + +} + +/******* + * Track timer + */ + +//timer function to update interface +function updateTimer() { + currentposition += TRACK_TIMER; + setPosition(currentposition); + // $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); +} + +function resumeTimer() { + pauseTimer(); + if (songlength > 0) { + posTimer = setInterval(updateTimer, TRACK_TIMER); + } +} + +function initTimer() { + pauseTimer(); + // setPosition(0); + resumeTimer(); +} + +function pauseTimer() { + clearInterval(posTimer); +} + +/********************************* + * Radio + *********************************/ +function radioPressed(key) { + if (key == 13) { + addRadioUri(); + return false; + } + return true; +} + +function addRadioUri(name, uri) { + //value of name is based on the passing of an uri as a parameter or not + var name = ''; + if (!uri) { + name = $('#radionameinput').val(); + } else { + $('#radionameinput').val(''); + } + uri = uri || $('#radiouriinput').val(); + if (validUri(uri)) { + toast('Selecting radiostation...'); + //stop directly, for user feedback + mopidy.playback.stop(true); + //hide ios/android keyboard + document.activeElement.blur(); + $("input").blur(); + clearQueue(); + mopidy.tracklist.add(null, 0, uri); + mopidy.playback.play(); + var tmpname = name || ''; + var i = 0; + //add station to list and check for doubles and add no more than 25 + for (var key in radioStations) { + rs = radioStations[key]; + if (i > 25) { + delete radioStations[key]; + continue; + } + i++; + if (rs && rs[1] == uri) { + tmpname = name || radioStations[key][0]; + delete radioStations[key]; + } + } + ; + $('#radionameinput').val(tmpname); + $('#radiouriinput').val(uri); + radioStations.unshift([tmpname, uri]); + saveRadioStations(); + updateRadioStations(); + } else { + toast('No valid url!'); + } + return false; +} + +function updateRadioStations() { + var tmp = ''; + $('#radiostationstable').empty(); + var child = ''; + for (var key in radioStations) { + var rs = radioStations[key]; + if (rs) { + name = rs[0] || rs[1]; + child = '
                  • '; + child += '

                    ' + name + '

                  • '; + tmp += child; + } + } + ; + $('#radiostationstable').html(tmp); +} + +function initRadio() { + $.cookie.json = true; + tmpRS = $.cookie('radioStations'); + radioStations = tmpRS || radioStations; + updateRadioStations(); +} + +function saveRadioStations() { + $.cookie.json = true; + $.cookie('radioStations', radioStations); +} + diff --git a/flatclient/js/fastclick.js b/flatclient/js/fastclick.js new file mode 100755 index 0000000..85963ef --- /dev/null +++ b/flatclient/js/fastclick.js @@ -0,0 +1,639 @@ +/** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @version 0.5.6 + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ + +/*jslint browser:true, node:true*/ +/*global define, Event, Node*/ + + +/** + * Instantiate fast-clicking listeners on the specificed layer. + * + * @constructor + * @param {Element} layer The layer to listen on + */ +function FastClick(layer) { + 'use strict'; + var oldOnClick, self = this; + + + /** + * Whether a click is currently being tracked. + * + * @type boolean + */ + this.trackingClick = false; + + + /** + * Timestamp for when when click tracking started. + * + * @type number + */ + this.trackingClickStart = 0; + + + /** + * The element being tracked for a click. + * + * @type EventTarget + */ + this.targetElement = null; + + + /** + * X-coordinate of touch start event. + * + * @type number + */ + this.touchStartX = 0; + + + /** + * Y-coordinate of touch start event. + * + * @type number + */ + this.touchStartY = 0; + + + /** + * ID of the last touch, retrieved from Touch.identifier. + * + * @type number + */ + this.lastTouchIdentifier = 0; + + + /** + * The FastClick layer. + * + * @type Element + */ + this.layer = layer; + + if (!layer || !layer.nodeType) { + throw new TypeError('Layer must be a document node'); + } + + /** @type function() */ + this.onClick = function() { FastClick.prototype.onClick.apply(self, arguments); }; + + /** @type function() */ + this.onTouchStart = function() { FastClick.prototype.onTouchStart.apply(self, arguments); }; + + /** @type function() */ + this.onTouchEnd = function() { FastClick.prototype.onTouchEnd.apply(self, arguments); }; + + /** @type function() */ + this.onTouchCancel = function() { FastClick.prototype.onTouchCancel.apply(self, arguments); }; + + // Devices that don't support touch don't need FastClick + if (typeof window.ontouchstart === 'undefined') { + return; + } + + // Set up event handlers as required + layer.addEventListener('click', this.onClick, true); + layer.addEventListener('touchstart', this.onTouchStart, false); + layer.addEventListener('touchend', this.onTouchEnd, false); + layer.addEventListener('touchcancel', this.onTouchCancel, false); + + // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick + // layer when they are cancelled. + if (!Event.prototype.stopImmediatePropagation) { + layer.removeEventListener = function(type, callback, capture) { + var rmv = Node.prototype.removeEventListener; + if (type === 'click') { + rmv.call(layer, type, callback.hijacked || callback, capture); + } else { + rmv.call(layer, type, callback, capture); + } + }; + + layer.addEventListener = function(type, callback, capture) { + var adv = Node.prototype.addEventListener; + if (type === 'click') { + adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { + if (!event.propagationStopped) { + callback(event); + } + }), capture); + } else { + adv.call(layer, type, callback, capture); + } + }; + } + + // If a handler is already declared in the element's onclick attribute, it will be fired before + // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and + // adding it as listener. + if (typeof layer.onclick === 'function') { + + // Android browser on at least 3.2 requires a new reference to the function in layer.onclick + // - the old one won't work if passed to addEventListener directly. + oldOnClick = layer.onclick; + layer.addEventListener('click', function(event) { + oldOnClick(event); + }, false); + layer.onclick = null; + } +} + + +/** + * Android requires an exception for labels. + * + * @type boolean + */ +FastClick.prototype.deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0; + + +/** + * iOS requires an exception for alert confirm dialogs. + * + * @type boolean + */ +FastClick.prototype.deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent); + + +/** + * iOS 4 requires an exception for select elements. + * + * @type boolean + */ +FastClick.prototype.deviceIsIOS4 = FastClick.prototype.deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); + + +/** + * iOS 6.0(+?) requires the target element to be manually derived + * + * @type boolean + */ +FastClick.prototype.deviceIsIOSWithBadTarget = FastClick.prototype.deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent); + + +/** + * Determine whether a given element requires a native click. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element needs a native click + */ +FastClick.prototype.needsClick = function(target) { + 'use strict'; + switch (target.nodeName.toLowerCase()) { + case 'button': + case 'input': + + // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) + if (this.deviceIsIOS && target.type === 'file') { + return true; + } + + // Don't send a synthetic click to disabled inputs (issue #62) + return target.disabled; + case 'label': + case 'video': + return true; + default: + return (/\bneedsclick\b/).test(target.className); + } +}; + + +/** + * Determine whether a given element requires a call to focus to simulate click into element. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. + */ +FastClick.prototype.needsFocus = function(target) { + 'use strict'; + switch (target.nodeName.toLowerCase()) { + case 'textarea': + case 'select': + return true; + case 'input': + switch (target.type) { + case 'button': + case 'checkbox': + case 'file': + case 'image': + case 'radio': + case 'submit': + return false; + } + + // No point in attempting to focus disabled inputs + return !target.disabled; + default: + return (/\bneedsfocus\b/).test(target.className); + } +}; + + +/** + * Send a click event to the specified element. + * + * @param {EventTarget|Element} targetElement + * @param {Event} event + */ +FastClick.prototype.sendClick = function(targetElement, event) { + 'use strict'; + var clickEvent, touch; + + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + + touch = event.changedTouches[0]; + + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent('click', true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); +}; + + +/** + * @param {EventTarget|Element} targetElement + */ +FastClick.prototype.focus = function(targetElement) { + 'use strict'; + var length; + + if (this.deviceIsIOS && targetElement.setSelectionRange) { + length = targetElement.value.length; + targetElement.setSelectionRange(length, length); + } else { + targetElement.focus(); + } +}; + + +/** + * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. + * + * @param {EventTarget|Element} targetElement + */ +FastClick.prototype.updateScrollParent = function(targetElement) { + 'use strict'; + var scrollParent, parentElement; + + scrollParent = targetElement.fastClickScrollParent; + + // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the + // target element was moved to another parent. + if (!scrollParent || !scrollParent.contains(targetElement)) { + parentElement = targetElement; + do { + if (parentElement.scrollHeight > parentElement.offsetHeight) { + scrollParent = parentElement; + targetElement.fastClickScrollParent = parentElement; + break; + } + + parentElement = parentElement.parentElement; + } while (parentElement); + } + + // Always update the scroll top tracker if possible. + if (scrollParent) { + scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; + } +}; + + +/** + * @param {EventTarget} targetElement + * @returns {Element|EventTarget} + */ +FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { + 'use strict'; + + // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. + if (eventTarget.nodeType === Node.TEXT_NODE) { + return eventTarget.parentNode; + } + + return eventTarget; +}; + + +/** + * On touch start, record the position and scroll offset. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onTouchStart = function(event) { + 'use strict'; + var targetElement, touch, selection; + + targetElement = this.getTargetElementFromEventTarget(event.target); + touch = event.targetTouches[0]; + + if (this.deviceIsIOS) { + + // Only trusted events will deselect text on iOS (issue #49) + selection = window.getSelection(); + if (selection.rangeCount && !selection.isCollapsed) { + return true; + } + + if (!this.deviceIsIOS4) { + + // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): + // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched + // with the same identifier as the touch event that previously triggered the click that triggered the alert. + // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an + // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. + if (touch.identifier === this.lastTouchIdentifier) { + event.preventDefault(); + return false; + } + + this.lastTouchIdentifier = touch.identifier; + + // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: + // 1) the user does a fling scroll on the scrollable layer + // 2) the user stops the fling scroll with another tap + // then the event.target of the last 'touchend' event will be the element that was under the user's finger + // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check + // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). + this.updateScrollParent(targetElement); + } + } + + this.trackingClick = true; + this.trackingClickStart = event.timeStamp; + this.targetElement = targetElement; + + this.touchStartX = touch.pageX; + this.touchStartY = touch.pageY; + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < 200) { + event.preventDefault(); + } + + return true; +}; + + +/** + * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.touchHasMoved = function(event) { + 'use strict'; + var touch = event.changedTouches[0]; + + if (Math.abs(touch.pageX - this.touchStartX) > 10 || Math.abs(touch.pageY - this.touchStartY) > 10) { + return true; + } + + return false; +}; + + +/** + * Attempt to find the labelled control for the given label element. + * + * @param {EventTarget|HTMLLabelElement} labelElement + * @returns {Element|null} + */ +FastClick.prototype.findControl = function(labelElement) { + 'use strict'; + + // Fast path for newer browsers supporting the HTML5 control attribute + if (labelElement.control !== undefined) { + return labelElement.control; + } + + // All browsers under test that support touch events also support the HTML5 htmlFor attribute + if (labelElement.htmlFor) { + return document.getElementById(labelElement.htmlFor); + } + + // If no for attribute exists, attempt to retrieve the first labellable descendant element + // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label + return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); +}; + + +/** + * On touch end, determine whether to send a click event at once. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onTouchEnd = function(event) { + 'use strict'; + var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; + + // If the touch has moved, cancel the click tracking + if (this.touchHasMoved(event)) { + this.trackingClick = false; + this.targetElement = null; + } + + if (!this.trackingClick) { + return true; + } + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < 200) { + this.cancelNextClick = true; + return true; + } + + this.lastClickTime = event.timeStamp; + + trackingClickStart = this.trackingClickStart; + this.trackingClick = false; + this.trackingClickStart = 0; + + // On some iOS devices, the targetElement supplied with the event is invalid if the layer + // is performing a transition or scroll, and has to be re-detected manually. Note that + // for this to function correctly, it must be called *after* the event target is checked! + // See issue #57; also filed as rdar://13048589 . + if (this.deviceIsIOSWithBadTarget) { + touch = event.changedTouches[0]; + targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset); + } + + targetTagName = targetElement.tagName.toLowerCase(); + if (targetTagName === 'label') { + forElement = this.findControl(targetElement); + if (forElement) { + this.focus(targetElement); + if (this.deviceIsAndroid) { + return false; + } + + targetElement = forElement; + } + } else if (this.needsFocus(targetElement)) { + + // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. + // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). + if ((event.timeStamp - trackingClickStart) > 100 || (this.deviceIsIOS && window.top !== window && targetTagName === 'input')) { + this.targetElement = null; + return false; + } + + this.focus(targetElement); + + // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. + if (!this.deviceIsIOS4 || targetTagName !== 'select') { + this.targetElement = null; + event.preventDefault(); + } + + return false; + } + + if (this.deviceIsIOS && !this.deviceIsIOS4) { + + // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled + // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). + scrollParent = targetElement.fastClickScrollParent; + if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { + return true; + } + } + + // Prevent the actual click from going though - unless the target node is marked as requiring + // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. + if (!this.needsClick(targetElement)) { + event.preventDefault(); + this.sendClick(targetElement, event); + } + + return false; +}; + + +/** + * On touch cancel, stop tracking the click. + * + * @returns {void} + */ +FastClick.prototype.onTouchCancel = function() { + 'use strict'; + this.trackingClick = false; + this.targetElement = null; +}; + + +/** + * On actual clicks, determine whether this is a touch-generated click, a click action occurring + * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or + * an actual click which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ +FastClick.prototype.onClick = function(event) { + 'use strict'; + var oldTargetElement; + + // If a target element was never set (because a touch event was never fired) allow the click + if (!this.targetElement) { + return true; + } + + if (event.forwardedTouchEvent) { + return true; + } + + oldTargetElement = this.targetElement; + this.targetElement = null; + + // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. + if (this.trackingClick) { + this.trackingClick = false; + return true; + } + + // Programmatically generated events targeting a specific element should be permitted + if (!event.cancelable) { + return true; + } + + // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. + if (event.target.type === 'submit' && event.detail === 0) { + return true; + } + + // Derive and check the target element to see whether the click needs to be permitted; + // unless explicitly enabled, prevent non-touch click events from triggering actions, + // to prevent ghost/doubleclicks. + if (!this.needsClick(oldTargetElement) || this.cancelNextClick) { + this.cancelNextClick = false; + + // Prevent any user-added listeners declared on FastClick element from being fired. + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + + // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + event.propagationStopped = true; + } + + // Cancel the event + event.stopPropagation(); + event.preventDefault(); + + return false; + } + + // If clicks are permitted, return true for the action to go through. + return true; +}; + + +/** + * Remove all FastClick's event listeners. + * + * @returns {void} + */ +FastClick.prototype.destroy = function() { + 'use strict'; + var layer = this.layer; + + layer.removeEventListener('click', this.onClick, true); + layer.removeEventListener('touchstart', this.onTouchStart, false); + layer.removeEventListener('touchend', this.onTouchEnd, false); + layer.removeEventListener('touchcancel', this.onTouchCancel, false); +}; + + +if (typeof define !== 'undefined' && define.amd) { + + // AMD. Register as an anonymous module. + define(function() { + 'use strict'; + return FastClick; + }); +} + +if (typeof module !== 'undefined' && module.exports) { + module.exports = function(layer) { + 'use strict'; + return new FastClick(layer); + }; + + module.exports.FastClick = FastClick; +} diff --git a/flatclient/js/functionsvars.js b/flatclient/js/functionsvars.js new file mode 100755 index 0000000..a7bdaf5 --- /dev/null +++ b/flatclient/js/functionsvars.js @@ -0,0 +1,438 @@ +/** + * @author Wouter van Wijk + * + * all kinds functions and vars + */ + +var baseurl = '/mopidy'; +var host = window.location.hostname; +var port = window.location.port; +var wsurl = host + ':' + port + baseurl +var intv; +var socket; +var mopidy; + +//values for controls +var play = false; +var random; +var repeat; +var currentVolume = -1; +var muteVolume = -1; +var volumeChanging = false; +var posChanging = false; + +var posTimer; +var volumeTimer; +var seekTimer; +var initgui = true; +var currentpos = 0; +var popupData = {}; +var songlength = 0; + +var artistshtml = ''; +var artiststext = ''; +var songname = ''; +var songdata = ''; +var newposition = 0; + +var playlisttracksScroll; +var playlistslistScroll; + +//array of cached playlists (not only user-playlists, also search, artist, album-playlists) +var playlists = {}; +var currentplaylist; +var customPlaylists = []; +var customTracklists = []; + +var ua = navigator.userAgent, + isMobileSafari = /Mac/.test(ua) && /Mobile/.test(ua), isMobileWebkit = /WebKit/.test(ua) && /Mobile/.test(ua), isMobile = /Mobile/.test(ua), isWebkit = /WebKit/.test(ua); + +//constants +PROGRAM_NAME = 'MusicBox'; +//PROGRAM_NAME = 'Mopidy'; +ARTIST_TABLE = '#artiststable'; +ALBUM_TABLE = '#albumstable'; +PLAYLIST_TABLE = '#playlisttracks'; +CURRENT_PLAYLIST_TABLE = '#currenttable'; +SEARCH_ALL_TABLE = '#allresulttable'; +SEARCH_ALBUM_TABLE = '#albumresulttable'; +SEARCH_ARTIST_TABLE = '#artistresulttable'; +SEARCH_TRACK_TABLE = '#trackresulttable'; + +PLAY_NOW = 0; +PLAY_NEXT = 1; +ADD_THIS_BOTTOM = 2; +ADD_ALL_BOTTOM = 3; + +MAX_TABLEROWS = 50; + +//update track slider timer, milliseconds +TRACK_TIMER = 1000; + +//check status timer, every 5 or 10 sec +STATUS_TIMER = 10000; + +var radioStations = []; +//fill with defaults + radioStations.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); + radioStations.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); + radioStations.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); + radioStations.push(['Arrow Jazz', 'http://81.173.3.132:8082']); + radioStations.push(['PBS Australia', 'http://eno.emit.com:8000/pbsfm_live_64.mp3']); + radioStations.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); + + +/******* + * + */ +function scrollToTop() { + var divtop = 0; + $('body,html').animate({ + scrollTop : divtop + }, 250); +} + +function scrollToTracklist() { +/* if (isMobileWebkit) { + playlistslistScroll.refresh(); + } +*/ + var divtop = $("#playlisttracksdiv").offset().top - 50; + $('body,html').animate({ + scrollTop : divtop + }, 250); +} + +//A hack to find the name of the first artist of a playlist. this is not yet returned by mopidy +//does not work wel with multiple artists of course +function getArtist(pl) { + for (var i = 0; i < pl.length; i++) { + for (var j = 0; j < pl[i].artists.length; j++) { + if (pl[i].artists[j].name != '') { + return pl[i].artists[j].name; + } + } + }; +} + +//A hack to find the first album of a playlist. this is not yet returned by mopidy +function getAlbum(pl) { + for (var i = 0; i < pl.length; i++) { + if (pl[i].album.name != '') { + return pl[i].album.name; + } + }; +} + +/******************************************************** + * break up results and put them in album tables + *********************************************************/ +function albumTracksToTable(pl, target, uri) { + var tmp = ''; + $(target).html(tmp); + $(target).attr('data', uri); +} + +function renderSongLi(song, liID, uri){ + var hash = document.location.hash.split('?'); + //this is so dirty... ... ... + var playlistType = ''; + var divid = hash[0].substr(1); + if (divid == 'current') { + playlistType = 'playTrackQueueByUri'; + } else { + playlistType = 'playTrackByUri'; + } +// console.log(playlistType); + +// songLi = ''; + songLi = '
                  • ' + + '' + + '' + + '' +'' + + '

                    '+song.name+'

                    ' + + '
                    ' + + + '
                  • '; + return songLi; +} + +function resultsToTables(results, target, uri) { + var hash = document.location.hash.split('?'); + var divid = hash[0].substr(1), playlistType; + if (divid == 'current') { + playlistType = 'playTrackQueueByUri'; + } else { + playlistType = 'playTrackByUri'; + } +// console.log(playlistType); + + var newalbum = []; + var nexturi = ''; + var count = 0; +// var popupMenu = (target == CURRENT_PLAYLIST_TABLE) ? 'popupQueue' : 'popupTracks'; + newalbum = []; + $(target).html(''); + + //break into albums and put in tables + var html = ''; + var tableid, j, artistname, alburi; + var targetmin = target.substr(1); + $(target).attr('data', uri); + var length = 0 || results.length; + for ( i = 0; i < length; i++) { + newalbum.push(results[i]); + nexturi = ''; + if (i < length - 1) { + nexturi = results[i + 1].album.uri; + } + if (!results[i].album) { + if (results[i].uri) { + var name = results[i].name || results[i].uri; + html += '
                  • ' + name + ' [Stream]

                  • '; + newalbum = []; + nexturi = ''; + } + } else { + if (results[i].album.uri != nexturi) { + tableid = 'art' + i; + //render differently if only one track in the album + if ( newalbum.length == 1 ) { + if (i != 0) { html += '
                  •  
                  • '; } + + html += '
                  • ' + + '' + + '' + + '' + + '

                    ' + newalbum[0].name + "

                    "; +/* '' + timeFromSeconds(newalbum[0].length / 1000) + ''; */ + for ( j = 0; j < newalbum[0].artists.length; j++) { + html += newalbum[0].artists[j].name; + html += (j == newalbum[0].artists.length - 1) ? '' : ' / '; + //stop after 3 + if (j > 2) { + html += '...'; + break; + } + } + html += ' / ' + newalbum[0].album.name + '

                    '; + html += '
                  • '; +/* var liID = targetmin + '-' + newalbum[0].uri; + html+= renderSongLi(newalbum[0], liID, uri); +*/ + + popupData[newalbum[0].uri] = newalbum[0]; + newalbum = []; + + } else { + html += '
                  • '; + html += '

                    ' + results[i].album.name + '

                    '; + for (j = 0; j < results[i].album.artists.length; j++) { + html += results[i].album.artists[j].name; + html += (j == results[i].album.artists.length - 1) ? '' : ' / '; + //stop after 3 + if (j > 2) { + child += '...'; + break; + } + } + html += '

                  • '; + for (j = 0; j < newalbum.length; j++) { + popupData[newalbum[j].uri] = newalbum[j]; +// html += '
                  • '; + + //hERE! + var liID = targetmin + '-' + newalbum[j].uri; + html+= renderSongLi(newalbum[j], liID, uri); + + //html += '
                  • '; + //html += '

                    ' + timeFromSeconds(newalbum[j].length / 1000) + '

                    ' + newalbum[j].name + '

                  • '; + } + ; + artistname = results[i].artists[0].name; + getCover(artistname, results[i].album.name, target + '-cover-' + i, 'small'); + // customTracklists[results[i].album.uri] = newalbum; + newalbum = []; + } + } + } + } + tableid = "#" + tableid; + $(target).html(html); + $(target).attr('data', uri); +// $(target).listview('refresh'); +} + +//process updated playlist to gui +function playlisttotable(pl, target, uri) { + var tmp = ''; + $(target).html(''); + var targetmin = target.substr(1); + var child = ''; + for (var i = 0; i < pl.length; i++) { + if (pl[i]) { + popupData[pl[i].uri] = pl[i]; + child = '
                  • '; + child += '

                    ' + pl[i].name + "

                    "; + child += '

                    '; + child += '' + timeFromSeconds(pl[i].length / 1000) + ''; + //   + for (var j = 0; j < pl[i].artists.length; j++) { + if (pl[i].artists[j]) { + child += pl[i].artists[j].name; + child += (j == pl[i].artists.length - 1) ? '' : ' / '; + //stop after 3 + if (j > 2) { + child += '...'; + break; + } + } + } + child += ' / ' + pl[i].album.name + '

                    '; + child += '
                  • '; + tmp += child; + } + }; + + $(target).html(tmp); + $(target).attr('data', uri); +} + +function getPlaylistFromUri(uri) { + if (playlists[uri]) { + return playlists[uri]; + } + if (customPlaylists[uri]) { + return customPlaylists[uri]; + } +} + +function getTracksFromUri(uri) { + var pl = getPlaylistFromUri(uri); + if (pl) { + return pl.tracks; + } else if (customTracklists[uri]) { + return customTracklists[uri]; + } + return []; +} + +//convert time to human readable format +function timeFromSeconds(length) { + var d = Number(length); + var h = Math.floor(d / 3600); + var m = Math.floor(d % 3600 / 60); + var s = Math.floor(d % 3600 % 60); + return ((h > 0 ? h + ":" : "") + (m > 0 ? (h > 0 && m < 10 ? "0" : "") + m + ":" : "0:") + (s < 10 ? "0" : "") + s); +} + + +/******* Toast ***/ +function toast (message, delay, textOnly) { + textOnl = textOnly || false; + message = message || "Loading..."; + delay = delay || 1000; + $.mobile.loading( 'show', { + text: message, + textVisible: true, + theme: 'a', + textonly: textOnl + }); + if(delay > 0) { + setTimeout(function(){ + $.mobile.loading('hide'); + }, delay); + } +} + +/***************** + * Modal dialogs + *****************/ +function showLoading(on) { + if (on) { + $("body").css("cursor", "progress"); + $.mobile.loading('show', { + text : 'Loading data from ' + PROGRAM_NAME + '. Please wait...', + textVisible : true, + theme : 'a' + }); + } else { + $("body").css("cursor", "default"); + $.mobile.loading('hide'); + } +} + +function showOffline(on) { + if (on) { + $.mobile.loading('show', { + text : 'Trying to reach ' + PROGRAM_NAME + '. Please wait...', + textVisible : true, + theme : 'a' + }); + } else { + $.mobile.loading('hide'); + } +} + + +// from http://dzone.com/snippets/validate-url-regexp +function validUri(str) { + var regexp = /(mms|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ + return regexp.test(str); +} + +/* +$.event.special.swipe = $.extend($.event.special.swipe, { + 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 ), + offset: $('body').scrollTop() + }; +// console.log('start'); + }, + + stop: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event; + return { + time: ( new Date() ).getTime(), + coords: [ data.pageX, data.pageY ], + offset: $('body').scrollTop() + }; + alert.log('stop'); + }, + + handleSwipe: function( start, stop ) { + var swipe = $.event.special.swipe, + x = Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ), + y = Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ), + offset = Math.abs( start.offset - stop.offset ), + time = stop.time - start.time; + if ( time < swipe.durationThreshold && x > swipe.horizontalDistanceThreshold && ( y + offset ) + < swipe.verticalDistanceThreshold ) { + + start.origin.trigger( "swipe" ).trigger( ( start.coords[ 0 ] - stop.coords[ 0 ] ) ? "swipeleft" : "swiperight" ); + +// alert(x + ' ' + y + ' ' + time + ' ' + offset + ' ' + swipe.verticalDistanceThreshold); + } + } +}); +*/ \ No newline at end of file diff --git a/flatclient/js/gui.js b/flatclient/js/gui.js new file mode 100755 index 0000000..f9d41c2 --- /dev/null +++ b/flatclient/js/gui.js @@ -0,0 +1,568 @@ +/* gui interactions here +* set- functions only set/update the gui elements +* do- functions interact with the server +* show- functions do both +*/ +/******************** + * Song Info Sreen + ********************/ +function resetSong() { + if (!posChanging) { + pauseTimer(); + + setPlayState(false); + setPosition(0); + var data = new Object; + data.name = ''; + data.artists = ''; + data.length = 0; + data.uri = ''; + setSongInfo(data); + } +} +//console.log('test'); + +function resizeMb() { + $("#infoname").html(songdata.name); + $("#infoartist").html(artiststext); +// //bug in truncate? +// var spanwidth = $("#infoartist").width() - 38; +// $("#infoname").truncate({ +// width : spanwidth, +// token : '…', +// center : true, +// multiline : false +// }); +// $("#infoartist").truncate({ +// width : spanwidth, +// token : '…', +// center : true, +// multiline : false +// }); + + +//initialize iScroll if MobileWebkit and large window + if (isMobileWebkit && $(window).width() > 480) { + if (!playlistslistScroll) { + playlistslistScroll = new iScroll('playlistslistdiv'); + playlisttracksScroll = new iScroll('playlisttracksdiv'); + } + } else { + if (playlistslistScroll) { + playlistslistScroll.destroy(); + playlistslistScroll = null; + playlisttracksScroll.destroy(); + playlisttracksScroll = null; + } + } + +// //set height of playlist scrollers + + if ($(window).width() > 480) { + $('.scroll').height($(window).height() - 96); + //jqm added something which it shouldnt (at least in this case) I guess + // $('#playlistspane').removeClass('height').height($(window).height() - 110); + $('.scroll').removeClass('height').removeClass('width'); + $('#playlistspane').removeClass('height').removeClass('width'); + } else { + $('.scroll').addClass('height', '99%').addClass('width', '99%'); + $('#playlistspane').addClass('height', '99%').addClass('width', '99%'); + } + + if (isMobileWebkit && ($(window).width() > 480)) { + playlistslistScroll.refresh(); + playlisttracksScroll.refresh(); + } +} + +function setSongInfo(data) { + if (!data) { return; } + if (data.name == '') { + return; + }; + + //update styles of listviews + $('#currenttable li').each(function() { + $(this).removeClass("currenttrack"); + if (this.id == 'currenttable-' + data.uri) { + $(this).addClass('currenttrack'); + } + }); + + $('#playlisttracks li').each(function() { + $(this).removeClass("currenttrack2"); + if (this.id == 'playlisttracks-' + data.uri) { + $(this).addClass('currenttrack2'); + } + }); + $('#trackresulttable li').each(function() { + $(this).removeClass("currenttrack2"); + if (this.id == 'trackresulttable-' + data.uri) { + $(this).addClass('currenttrack2'); + } + }); + + $('#artiststable li').each(function() { + $(this).removeClass("currenttrack2"); + if (this.id == 'artiststable-' + data.uri) { + $(this).addClass('currenttrack2'); + } + });1 + $('#albumstable li').each(function() { + $(this).removeClass("currenttrack2"); + if (this.id == 'albumstable-' + data.uri) { + $(this).addClass('currenttrack2'); + } + }); + + + if (data.name && (songdata.name == data.name)) { + return; + } + if (data) { + songdata = data; + } else { + data = songdata; + } + artistshtml = ''; + artiststext = ''; + + if (validUri(data.name)) { + for (var key in radioStations) { + rs = radioStations[key]; + if (rs && rs[1] == data.name) { + data.name = (rs[0] || rs[1]); + } + }; + } + + $("#modalname").html(data.name); + + if (!data.length || data.length == 0) { + songlength = 0; + $("#songlength").html(''); + pauseTimer(); + $('#trackslider').slider('disable'); + } else { + songlength = data.length; + $("#songlength").html(timeFromSeconds(data.length / 1000)); + $('#trackslider').slider('enable'); + } + + var arttmp = ''; + + if(data.artists) { + for (var j = 0; j < data.artists.length; j++) { + artistshtml += '' + data.artists[j].name + ''; + artiststext += data.artists[j].name; + if (j != data.artists.length - 1) { + artistshtml += ', '; + artiststext += ', '; + } + } + arttmp = artistshtml; + } + + if (data.album) { + $("#modalalbum").html('' + data.album.name + ''); + getCover(artiststext, data.album.name, '#infocover, #controlspopupimage', 'extralarge'); + } else { + $("#modalalbum").html(''); + $("#infocover").attr('src', './images/default_cover.png'); + $("#controlspopupimage").attr('src', '../images/default_cover.png'); + } + + $("#modalartist").html(arttmp); + + $("#trackslider").attr("min", 0); + $("#trackslider").attr("max", data.length); + + resizeMb(); +} + +/*************** + * display popups + */ +function closePopups() { + $('#popupTracks').popup('close'); + $('#artistpopup').popup('close'); + $('#coverpopup').popup('close'); + $('#popupQueue').popup('close'); + $('#controlspopup').popup('close'); +} + + +function popupTracks(e, listuri, trackuri) { + if (!e) + var e = window.event; + $('.popupTrackName').html(popupData[trackuri].name); + $('.popupAlbumName').html(popupData[trackuri].album.name); + var child = ""; + if (popupData[trackuri].artists.length == 1) { + child = 'Show Artist'; + $('.popupArtistName').html(popupData[trackuri].artists[0].name); + $('.popupArtistHref').attr('onclick', 'showArtist("' + popupData[trackuri].artists[0].uri + '");' ); + $('.popupArtistsDiv').hide(); + $('.popupArtistsLi').show(); + } else { + for (var j = 0; j < popupData[trackuri].artists.length; j++) { + child += '
                  • ' + popupData[trackuri].artists[j].name + '
                  • '; + } + $('.popupArtistsLi').hide(); + $('.popupArtistsLv').html(child).show(); + $('.popupArtistsDiv').show(); + // this makes the viewport of the window resize somehow + $('.popupArtistsLv').listview("refresh"); + } + + var hash = document.location.hash.split('?'); + var divid = hash[0].substr(1); + if (divid == 'current') { + $(".addqueue").hide(); + var popupName = '#popupQueue'; + } else { + $(".addqueue").show(); + var popupName = '#popupTracks'; + } + + $(popupName).data("list", listuri).data("track", trackuri).popup("open", { + x : e.pageX, + y : e.pageY + }); + return false; +} + +function showAlbumPopup() { + uri = $('#popupTracks').data("track"); + showAlbum(popupData[uri].album.uri); +} + +/********************* + * initialize sockets + *********************/ + +function initSocketevents() { + mopidy.on("state:online", function() { + showOffline(false); + getCurrentPlaylist(); + updateStatusOfAll(); + getPlaylists(); + showLoading(false); + $(window).hashchange(); + }); + + mopidy.on("state:offline", function() { + resetSong(); + showOffline(true); + }); + + mopidy.on("event:trackPlaybackStarted", function(data) { + mopidy.playback.getTimePosition().then(processCurrentposition, console.error); + setPlayState(true); + setSongInfo(data.tl_track.track); + initTimer(); + }); + + mopidy.on("event:trackPlaybackPaused", function(data) { + //setSongInfo(data.tl_track.track); + pauseTimer(); + setPlayState(false); + }); + + mopidy.on("event:playlistsLoaded", function(data) { + showLoading(true); + getPlaylists(); + }); + + mopidy.on("event:volumeChanged", function(data) { + if (!volumeChanging) { + setVolume(data["volume"]); + } + }); + + mopidy.on("event:playbackStateChanged", function(data) { + switch (data["new_state"]) { + case "stopped": + resetSong(); + break; + case "playing": + mopidy.playback.getTimePosition().then(processCurrentposition, console.error); + resumeTimer(); + setPlayState(true); + break; + } + }); + + mopidy.on("event:tracklistChanged", function(data) { + getCurrentPlaylist(); + }); + + mopidy.on("event:seeked", function(data) { + setPosition(parseInt(data["time_position"])); + }); +} + +$(document).bind("pageinit", function() { + resizeMb(); + +}); + +/************************ + * diverse + ************************/ +function enterFullscreen() { + if (isMobileSafari) { alert ("To get this app in Full Screen, you have to add it to your home-screen using the Share button."); exit(); } + var elem = document.querySelector("#page"); + elem.onwebkitfullscreenchange = onFullScreenEnter; + elem.onmozfullscreenchange = onFullScreenEnter; + elem.onfullscreenchange = onFullScreenEnter; + if (elem.webkitRequestFullscreen) { + elem.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else { + if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else { + elem.requestFullscreen(); + } + } + + +} +function exitFullscreen() { + document.webkitExitFullscreen(); + document.mozCancelFullscreen(); + document.exitFullscreen(); + +} + +function onFullScreenEnter() { + var elem = document.querySelector("#page"); + $('#navExitFullscreen').show(); + $('#navEnterFullscreen').hide(); + elem.onwebkitfullscreenchange = onFullScreenExit; + elem.onmozfullscreenchange = onFullScreenExit; +}; + +// Called whenever the browser exits fullscreen. +function onFullScreenExit() { + $('#navExitFullscreen').hide(); + $('#navEnterFullscreen').show(); +}; + +function switchContent(divid, uri) { + var hash = divid; + if (uri) { + hash += "?" + uri; + } + // $.mobile.changePage("#" + hash); + location.hash = "#" + hash; +} + +function setHeadline(site){ + site = site.trim(); + str = $('.mainNav').find('a[href$='+site+']').text(); + if(str==""){ + str=site; + } + $('#contentHeadline').text(str); +} + +//update timer +function updateTimer() { + mopidy.playback.getCurrentTrack().then(processCurrenttrack, console.error); + mopidy.playback.getTimePosition().then(processCurrentposition, console.error); + //TODO check offline? +} + +//update everything as if reloaded +function updateStatusOfAll() { + mopidy.playback.getCurrentTrack().then(processCurrenttrack, console.error); + mopidy.playback.getTimePosition().then(processCurrentposition, console.error); + mopidy.playback.getState().then(processPlaystate, console.error); + + mopidy.playback.getRepeat().then(processRepeat, console.error); + mopidy.playback.getRandom().then(processRandom, console.error); + + mopidy.playback.getVolume().then(processVolume, console.error); +} + +function locationHashChanged() { + var hash = document.location.hash.split('?'); + //remove # + var divid = hash[0].substr(1); + setHeadline(divid); + + + var uri = hash[1]; + $('.mainNav a').removeClass('ui-state-active ui-state-persist ui-btn-active'); + //i don't know why some li elements have those classes, but they do, so we need to remove them + $('.mainNav li').removeClass('ui-state-active ui-state-persist ui-btn-active'); + if ($(window).width() < 560) { + $("#panel").panel("close"); + } + $('.pane').hide(); + + $('#' + divid + 'pane').show(); + + switch(divid) { + case 'nowPlaying': + $('#navnowPlaying a').addClass('ui-state-active ui-state-persist ui-btn-active'); + break; + case 'current': + $('#navcurrent a').addClass('ui-state-active ui-state-persist ui-btn-active'); + break; + case 'playlists': + $('#navplaylists a').addClass('ui-state-active ui-state-persist ui-btn-active'); + break; + case 'search': + $('#navsearch a').addClass($.mobile.activeBtnClass); + $("#searchinput").focus(); + if (customTracklists['allresultscache'] == '') { + initSearch($('#searchinput').val()); + } + break; + case 'radio': + $('#navradio a').addClass('ui-state-active ui-state-persist ui-btn-active'); + break; + case 'artists': + if (uri != '') { + showArtist(uri); + } + break; + case 'albums': + if (uri != '') { + showAlbum(uri); + } + break; + } + + + //switch the footer + switch(divid) { + case 'nowPlaying': + $('#normalFooter').hide(); + $('#nowPlayingFooter').show(); + break; + default: + $('#normalFooter').show(); + $('#nowPlayingFooter').hide(); + } + // Set the page title based on the hash. + document.title = PROGRAM_NAME; + return false; +} + +/********************** + * initialize software + **********************/ +$(document).ready(function(event) { + //check for websockets + if (!window.WebSocket) { + switchContent("playlists"); + $('#playlistspane').html('

                    Old Browser

                    Sorry. Your browser isn\'t modern enough for this webapp. Modern versions of Chrome, Firefox, Safari all will do. Maybe Opera and Internet Explorer 10 also work, but it\'s not tested.

                    '); + exit; + } + + //workaround for a bug in jQuery Mobile, without that the panel doesn't close on mobile devices... + $('.ui-panel-dismiss').on( "tap", function() { $("#panel").panel("close"); } ); + //end of workaround + + + + $(window).hashchange(); + + // Connect to server + mopidy = new Mopidy(); +// mopidy.on(console.log.bind(console)); // Log all events + + //initialize events + initSocketevents(); + + resetSong(); + + if (location.hash.length < 2) { + switchContent("playlists"); + } + + initgui = false; + window.onhashchange = locationHashChanged; + // Log all events + //mopidy.on(function() { + //}); + + //update gui status every x seconds from mopdidy + setInterval(updateTimer, STATUS_TIMER); + //only show backbutton if in UIWebview + if (window.navigator.standalone) { + $("#btback").show(); + } else { + $("#btback").hide(); + } + + $(window).resize(function() { + resizeMb(); + }); + + + //navigation temporary, rewrite this! + $('#normalFooter').click( + function() { + if(!$(event.target).is("#playimg")) + {return switchContent('nowPlaying')} } + ); + $('#nowPlayingpane, #controlspopupimage').click( + function() {return switchContent('current')} + ); + $('#navEnterFullscreen').click(function(){ + enterFullscreen(); + }); + $('#navExitFullscreen').click(function(){ + exitFullscreen(); + }); + + + + //navigation stuff + + $(document).keypress( function (event) { + //console.log('kp: '+event); + if (event.target.tagName != 'INPUT') { + event.preventDefault(); + switch(event.which) { + case 32: + doPlay(); + break; + case '>': + doNext(); + break; + case '<': + doPrevious(); + break; + } + return true; + } + }); + initRadio(); + + if ($(window).width() <= 1024) { + $("#panel").panel("close"); + }else{ + $("#panel").panel("open"); + } + + //hide fullscreen button if in UIWebview + if (window.navigator.standalone) { + $('#navExitFullscreen').hide(); + } + + $.event.special.swipe.horizontalDistanceThreshold = 150; // (default: 30px) Swipe horizontal displacement must be more than this. + $.event.special.swipe.verticalDistanceThreshold = 50; // (default: 75px) Swipe vertical displacement must be less than this. +// $.event.special.swipe.scrollSupressionThreshold = 20; + $.event.special.swipe.durationThreshold = 500; + + // swipe songinfo and panel + $( "#normalFooter" ).on( "swiperight", doPrevious ); + $( "#normalFooter" ).on( "swipeleft", doNext ); + $( "#page, #header, #panel, .pane" ).on( "swiperight", function() { $("#panel").panel("open") } ); + $( "#page, #header, #panel, .pane" ).on( "swipeleft", function() { $("#panel").panel("close") }); +}); diff --git a/flatclient/js/iscroll-lite.js b/flatclient/js/iscroll-lite.js new file mode 100755 index 0000000..3a6cab7 --- /dev/null +++ b/flatclient/js/iscroll-lite.js @@ -0,0 +1,594 @@ +/*! + * iScroll Lite base on iScroll v4.1.6 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org + * Released under MIT license, http://cubiq.org/license + */ + +(function(){ +var m = Math, + mround = function (r) { return r >> 0; }, + vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' : + (/firefox/i).test(navigator.userAgent) ? 'Moz' : + 'opera' in window ? 'O' : '', + + // Browser capabilities + isAndroid = (/android/gi).test(navigator.appVersion), + isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), + isPlaybook = (/playbook/gi).test(navigator.appVersion), + isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), + + has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(), + hasTouch = 'ontouchstart' in window && !isTouchPad, + hasTransform = vendor + 'Transform' in document.documentElement.style, + hasTransitionEnd = isIDevice || isPlaybook, + + nextFrame = (function() { + return window.requestAnimationFrame + || window.webkitRequestAnimationFrame + || window.mozRequestAnimationFrame + || window.oRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { return setTimeout(callback, 17); } + })(), + cancelFrame = (function () { + return window.cancelRequestAnimationFrame + || window.webkitCancelAnimationFrame + || window.webkitCancelRequestAnimationFrame + || window.mozCancelRequestAnimationFrame + || window.oCancelRequestAnimationFrame + || window.msCancelRequestAnimationFrame + || clearTimeout + })(), + + // Events + RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', + START_EV = hasTouch ? 'touchstart' : 'mousedown', + MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', + END_EV = hasTouch ? 'touchend' : 'mouseup', + CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', + + // Helpers + trnOpen = 'translate' + (has3d ? '3d(' : '('), + trnClose = has3d ? ',0)' : ')', + + // Constructor + iScroll = function (el, options) { + var that = this, + doc = document, + i; + + that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); + that.wrapper.style.overflow = 'hidden'; + that.scroller = that.wrapper.children[0]; + + // Default options + that.options = { + hScroll: true, + vScroll: true, + x: 0, + y: 0, + bounce: true, + bounceLock: false, + momentum: true, + lockDirection: true, + useTransform: true, + useTransition: false, + + // Events + onRefresh: null, + onBeforeScrollStart: function (e) { e.preventDefault(); }, + onScrollStart: null, + onBeforeScrollMove: null, + onScrollMove: null, + onBeforeScrollEnd: null, + onScrollEnd: null, + onTouchEnd: null, + onDestroy: null + }; + + // User defined options + for (i in options) that.options[i] = options[i]; + + // Set starting position + that.x = that.options.x; + that.y = that.options.y; + + // Normalize options + that.options.useTransform = hasTransform ? that.options.useTransform : false; + that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; + that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; + that.options.useTransition = hasTransitionEnd && that.options.useTransition; + + // Set some default styles + that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left'; + that.scroller.style[vendor + 'TransitionDuration'] = '0'; + that.scroller.style[vendor + 'TransformOrigin'] = '0 0'; + if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)'; + + if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose; + else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; + + that.refresh(); + + that._bind(RESIZE_EV, window); + that._bind(START_EV); + if (!hasTouch) that._bind('mouseout', that.wrapper); + }; + +// Prototype +iScroll.prototype = { + enabled: true, + x: 0, + y: 0, + steps: [], + scale: 1, + + handleEvent: function (e) { + var that = this; + switch(e.type) { + case START_EV: + if (!hasTouch && e.button !== 0) return; + that._start(e); + break; + case MOVE_EV: that._move(e); break; + case END_EV: + case CANCEL_EV: that._end(e); break; + case RESIZE_EV: that._resize(); break; + case 'mouseout': that._mouseout(e); break; + case 'webkitTransitionEnd': that._transitionEnd(e); break; + } + }, + + _resize: function () { + this.refresh(); + }, + + _pos: function (x, y) { + x = this.hScroll ? x : 0; + y = this.vScroll ? y : 0; + + if (this.options.useTransform) { + this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')'; + } else { + x = mround(x); + y = mround(y); + this.scroller.style.left = x + 'px'; + this.scroller.style.top = y + 'px'; + } + + this.x = x; + this.y = y; + }, + + _start: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + matrix, x, y; + + if (!that.enabled) return; + + if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); + + if (that.options.useTransition) that._transitionTime(0); + + that.moved = false; + that.animating = false; + that.zoomed = false; + that.distX = 0; + that.distY = 0; + that.absDistX = 0; + that.absDistY = 0; + that.dirX = 0; + that.dirY = 0; + + if (that.options.momentum) { + if (that.options.useTransform) { + // Very lame general purpose alternative to CSSMatrix + matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(','); + x = matrix[4] * 1; + y = matrix[5] * 1; + } else { + x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1; + y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1; + } + + if (x != that.x || y != that.y) { + if (that.options.useTransition) that._unbind('webkitTransitionEnd'); + else cancelFrame(that.aniTime); + that.steps = []; + that._pos(x, y); + } + } + + that.startX = that.x; + that.startY = that.y; + that.pointX = point.pageX; + that.pointY = point.pageY; + + that.startTime = e.timeStamp || Date.now(); + + if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); + + that._bind(MOVE_EV); + that._bind(END_EV); + that._bind(CANCEL_EV); + }, + + _move: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + deltaX = point.pageX - that.pointX, + deltaY = point.pageY - that.pointY, + newX = that.x + deltaX, + newY = that.y + deltaY, + timestamp = e.timeStamp || Date.now(); + + if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); + + that.pointX = point.pageX; + that.pointY = point.pageY; + + // Slow down if outside of the boundaries + if (newX > 0 || newX < that.maxScrollX) { + newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; + } + if (newY > 0 || newY < that.maxScrollY) { + newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= 0 || that.maxScrollY >= 0 ? 0 : that.maxScrollY; + } + + that.distX += deltaX; + that.distY += deltaY; + that.absDistX = m.abs(that.distX); + that.absDistY = m.abs(that.distY); + + if (that.absDistX < 6 && that.absDistY < 6) { + return; + } + + // Lock direction + if (that.options.lockDirection) { + if (that.absDistX > that.absDistY + 5) { + newY = that.y; + deltaY = 0; + } else if (that.absDistY > that.absDistX + 5) { + newX = that.x; + deltaX = 0; + } + } + + that.moved = true; + that._pos(newX, newY); + that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if (timestamp - that.startTime > 300) { + that.startTime = timestamp; + that.startX = that.x; + that.startY = that.y; + } + + if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); + }, + + _end: function (e) { + if (hasTouch && e.touches.length != 0) return; + + var that = this, + point = hasTouch ? e.changedTouches[0] : e, + target, ev, + momentumX = { dist:0, time:0 }, + momentumY = { dist:0, time:0 }, + duration = (e.timeStamp || Date.now()) - that.startTime, + newPosX = that.x, + newPosY = that.y, + newDuration; + + that._unbind(MOVE_EV); + that._unbind(END_EV); + that._unbind(CANCEL_EV); + + if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); + + if (!that.moved) { + if (hasTouch) { + // Find the last touched element + target = point.target; + while (target.nodeType != 1) target = target.parentNode; + + if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { + ev = document.createEvent('MouseEvents'); + ev.initMouseEvent('click', true, true, e.view, 1, + point.screenX, point.screenY, point.clientX, point.clientY, + e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, + 0, null); + ev._fake = true; + target.dispatchEvent(ev); + } + } + + that._resetPos(200); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + if (duration < 300 && that.options.momentum) { + momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; + momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; + + newPosX = that.x + momentumX.dist; + newPosY = that.y + momentumY.dist; + + if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; + if ((that.y > 0 && newPosY > 0) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; + } + + if (momentumX.dist || momentumY.dist) { + newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); + + that.scrollTo(mround(newPosX), mround(newPosY), newDuration); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + that._resetPos(200); + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + }, + + _resetPos: function (time) { + var that = this, + resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, + resetY = that.y >= 0 || that.maxScrollY > 0 ? 0 : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + if (resetX == that.x && resetY == that.y) { + if (that.moved) { + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end + that.moved = false; + } + + return; + } + + that.scrollTo(resetX, resetY, time || 0); + }, + + _mouseout: function (e) { + var t = e.relatedTarget; + + if (!t) { + this._end(e); + return; + } + + while (t = t.parentNode) if (t == this.wrapper) return; + + this._end(e); + }, + + _transitionEnd: function (e) { + var that = this; + + if (e.target != that.scroller) return; + + that._unbind('webkitTransitionEnd'); + + that._startAni(); + }, + + /** + * + * Utilities + * + */ + _startAni: function () { + var that = this, + startX = that.x, startY = that.y, + startTime = Date.now(), + step, easeOut, + animate; + + if (that.animating) return; + + if (!that.steps.length) { + that._resetPos(400); + return; + } + + step = that.steps.shift(); + + if (step.x == startX && step.y == startY) step.time = 0; + + that.animating = true; + that.moved = true; + + if (that.options.useTransition) { + that._transitionTime(step.time); + that._pos(step.x, step.y); + that.animating = false; + if (step.time) that._bind('webkitTransitionEnd'); + else that._resetPos(0); + return; + } + + animate = function () { + var now = Date.now(), + newX, newY; + + if (now >= startTime + step.time) { + that._pos(step.x, step.y); + that.animating = false; + if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end + that._startAni(); + return; + } + + now = (now - startTime) / step.time - 1; + easeOut = m.sqrt(1 - now * now); + newX = (step.x - startX) * easeOut + startX; + newY = (step.y - startY) * easeOut + startY; + that._pos(newX, newY); + if (that.animating) that.aniTime = nextFrame(animate); + }; + + animate(); + }, + + _transitionTime: function (time) { + this.scroller.style[vendor + 'TransitionDuration'] = time + 'ms'; + }, + + _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { + var deceleration = 0.0006, + speed = m.abs(dist) / time, + newDist = (speed * speed) / (2 * deceleration), + newTime = 0, outsideDist = 0; + + // Proportinally reduce speed if we are outside of the boundaries + if (dist > 0 && newDist > maxDistUpper) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistUpper = maxDistUpper + outsideDist; + speed = speed * maxDistUpper / newDist; + newDist = maxDistUpper; + } else if (dist < 0 && newDist > maxDistLower) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistLower = maxDistLower + outsideDist; + speed = speed * maxDistLower / newDist; + newDist = maxDistLower; + } + + newDist = newDist * (dist < 0 ? -1 : 1); + newTime = speed / deceleration; + + return { dist: newDist, time: mround(newTime) }; + }, + + _offset: function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + + return { left: left, top: top }; + }, + + _bind: function (type, el, bubble) { + (el || this.scroller).addEventListener(type, this, !!bubble); + }, + + _unbind: function (type, el, bubble) { + (el || this.scroller).removeEventListener(type, this, !!bubble); + }, + + + /** + * + * Public methods + * + */ + destroy: function () { + var that = this; + + that.scroller.style[vendor + 'Transform'] = ''; + + // Remove the event listeners + that._unbind(RESIZE_EV, window); + that._unbind(START_EV); + that._unbind(MOVE_EV); + that._unbind(END_EV); + that._unbind(CANCEL_EV); + that._unbind('mouseout', that.wrapper); + if (that.options.useTransition) that._unbind('webkitTransitionEnd'); + + if (that.options.onDestroy) that.options.onDestroy.call(that); + }, + + refresh: function () { + var that = this, + offset; + + that.wrapperW = that.wrapper.clientWidth; + that.wrapperH = that.wrapper.clientHeight; + + that.scrollerW = that.scroller.offsetWidth; + that.scrollerH = that.scroller.offsetHeight; + that.maxScrollX = that.wrapperW - that.scrollerW; + that.maxScrollY = that.wrapperH - that.scrollerH; + that.dirX = 0; + that.dirY = 0; + + that.hScroll = that.options.hScroll && that.maxScrollX < 0; + that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); + + offset = that._offset(that.wrapper); + that.wrapperOffsetLeft = -offset.left; + that.wrapperOffsetTop = -offset.top; + + + that.scroller.style[vendor + 'TransitionDuration'] = '0'; + + that._resetPos(200); + }, + + scrollTo: function (x, y, time, relative) { + var that = this, + step = x, + i, l; + + that.stop(); + + if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; + + for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; + pos.top = pos.top > 0 ? 0 : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; + time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; + + that.scrollTo(pos.left, pos.top, time); + }, + + disable: function () { + this.stop(); + this._resetPos(0); + this.enabled = false; + + // If disabled after touchstart we make sure that there are no left over events + this._unbind(MOVE_EV); + this._unbind(END_EV); + this._unbind(CANCEL_EV); + }, + + enable: function () { + this.enabled = true; + }, + + stop: function () { + cancelFrame(this.aniTime); + this.steps = []; + this.moved = false; + this.animating = false; + } +}; + +if (typeof exports !== 'undefined') exports.iScroll = iScroll; +else window.iScroll = iScroll; + +})(); diff --git a/flatclient/js/iscroll.js b/flatclient/js/iscroll.js new file mode 100755 index 0000000..f8576f0 --- /dev/null +++ b/flatclient/js/iscroll.js @@ -0,0 +1,1104 @@ +/*! + * iScroll v4.2.5 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org + * Released under MIT license, http://cubiq.org/license + */ +(function(window, doc){ +var m = Math, + dummyStyle = doc.createElement('div').style, + vendor = (function () { + var vendors = 't,webkitT,MozT,msT,OT'.split(','), + t, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + t = vendors[i] + 'ransform'; + if ( t in dummyStyle ) { + return vendors[i].substr(0, vendors[i].length - 1); + } + } + + return false; + })(), + cssVendor = vendor ? '-' + vendor.toLowerCase() + '-' : '', + + // Style properties + transform = prefixStyle('transform'), + transitionProperty = prefixStyle('transitionProperty'), + transitionDuration = prefixStyle('transitionDuration'), + transformOrigin = prefixStyle('transformOrigin'), + transitionTimingFunction = prefixStyle('transitionTimingFunction'), + transitionDelay = prefixStyle('transitionDelay'), + + // Browser capabilities + isAndroid = (/android/gi).test(navigator.appVersion), + isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), + isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), + + has3d = prefixStyle('perspective') in dummyStyle, + hasTouch = 'ontouchstart' in window && !isTouchPad, + hasTransform = vendor !== false, + hasTransitionEnd = prefixStyle('transition') in dummyStyle, + + RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', + START_EV = hasTouch ? 'touchstart' : 'mousedown', + MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', + END_EV = hasTouch ? 'touchend' : 'mouseup', + CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', + TRNEND_EV = (function () { + if ( vendor === false ) return false; + + var transitionEnd = { + '' : 'transitionend', + 'webkit' : 'webkitTransitionEnd', + 'Moz' : 'transitionend', + 'O' : 'otransitionend', + 'ms' : 'MSTransitionEnd' + }; + + return transitionEnd[vendor]; + })(), + + nextFrame = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { return setTimeout(callback, 1); }; + })(), + cancelFrame = (function () { + return window.cancelRequestAnimationFrame || + window.webkitCancelAnimationFrame || + window.webkitCancelRequestAnimationFrame || + window.mozCancelRequestAnimationFrame || + window.oCancelRequestAnimationFrame || + window.msCancelRequestAnimationFrame || + clearTimeout; + })(), + + // Helpers + translateZ = has3d ? ' translateZ(0)' : '', + + // Constructor + iScroll = function (el, options) { + var that = this, + i; + + that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); + that.wrapper.style.overflow = 'hidden'; + that.scroller = that.wrapper.children[0]; + + // Default options + that.options = { + hScroll: true, + vScroll: true, + x: 0, + y: 0, + bounce: true, + bounceLock: false, + momentum: true, + lockDirection: true, + useTransform: true, + useTransition: false, + topOffset: 0, + checkDOMChanges: false, // Experimental + handleClick: true, + + // Scrollbar + hScrollbar: true, + vScrollbar: true, + fixedScrollbar: isAndroid, + hideScrollbar: isIDevice, + fadeScrollbar: isIDevice && has3d, + scrollbarClass: '', + + // Zoom + zoom: false, + zoomMin: 1, + zoomMax: 4, + doubleTapZoom: 2, + wheelAction: 'scroll', + + // Snap + snap: false, + snapThreshold: 1, + + // Events + onRefresh: null, + onBeforeScrollStart: function (e) { e.preventDefault(); }, + onScrollStart: null, + onBeforeScrollMove: null, + onScrollMove: null, + onBeforeScrollEnd: null, + onScrollEnd: null, + onTouchEnd: null, + onDestroy: null, + onZoomStart: null, + onZoom: null, + onZoomEnd: null + }; + + // User defined options + for (i in options) that.options[i] = options[i]; + + // Set starting position + that.x = that.options.x; + that.y = that.options.y; + + // Normalize options + that.options.useTransform = hasTransform && that.options.useTransform; + that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; + that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; + that.options.zoom = that.options.useTransform && that.options.zoom; + that.options.useTransition = hasTransitionEnd && that.options.useTransition; + + // Helpers FIX ANDROID BUG! + // translate3d and scale doesn't work together! + // Ignoring 3d ONLY WHEN YOU SET that.options.zoom + if ( that.options.zoom && isAndroid ){ + translateZ = ''; + } + + // Set some default styles + that.scroller.style[transitionProperty] = that.options.useTransform ? cssVendor + 'transform' : 'top left'; + that.scroller.style[transitionDuration] = '0'; + that.scroller.style[transformOrigin] = '0 0'; + if (that.options.useTransition) that.scroller.style[transitionTimingFunction] = 'cubic-bezier(0.33,0.66,0.66,1)'; + + if (that.options.useTransform) that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px)' + translateZ; + else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; + + if (that.options.useTransition) that.options.fixedScrollbar = true; + + that.refresh(); + + that._bind(RESIZE_EV, window); + that._bind(START_EV); + if (!hasTouch) { + if (that.options.wheelAction != 'none') { + that._bind('DOMMouseScroll'); + that._bind('mousewheel'); + } + } + + if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () { + that._checkDOMChanges(); + }, 500); + }; + +// Prototype +iScroll.prototype = { + enabled: true, + x: 0, + y: 0, + steps: [], + scale: 1, + currPageX: 0, currPageY: 0, + pagesX: [], pagesY: [], + aniTime: null, + wheelZoomCount: 0, + + handleEvent: function (e) { + var that = this; + switch(e.type) { + case START_EV: + if (!hasTouch && e.button !== 0) return; + that._start(e); + break; + case MOVE_EV: that._move(e); break; + case END_EV: + case CANCEL_EV: that._end(e); break; + case RESIZE_EV: that._resize(); break; + case 'DOMMouseScroll': case 'mousewheel': that._wheel(e); break; + case TRNEND_EV: that._transitionEnd(e); break; + } + }, + + _checkDOMChanges: function () { + if (this.moved || this.zoomed || this.animating || + (this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return; + + this.refresh(); + }, + + _scrollbar: function (dir) { + var that = this, + bar; + + if (!that[dir + 'Scrollbar']) { + if (that[dir + 'ScrollbarWrapper']) { + if (hasTransform) that[dir + 'ScrollbarIndicator'].style[transform] = ''; + that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']); + that[dir + 'ScrollbarWrapper'] = null; + that[dir + 'ScrollbarIndicator'] = null; + } + + return; + } + + if (!that[dir + 'ScrollbarWrapper']) { + // Create the scrollbar wrapper + bar = doc.createElement('div'); + + if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase(); + else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px'); + + bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:opacity;' + cssVendor + 'transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1'); + + that.wrapper.appendChild(bar); + that[dir + 'ScrollbarWrapper'] = bar; + + // Create the scrollbar indicator + bar = doc.createElement('div'); + if (!that.options.scrollbarClass) { + bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);' + cssVendor + 'background-clip:padding-box;' + cssVendor + 'box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';' + cssVendor + 'border-radius:3px;border-radius:3px'; + } + bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:' + cssVendor + 'transform;' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);' + cssVendor + 'transition-duration:0;' + cssVendor + 'transform: translate(0,0)' + translateZ; + if (that.options.useTransition) bar.style.cssText += ';' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)'; + + that[dir + 'ScrollbarWrapper'].appendChild(bar); + that[dir + 'ScrollbarIndicator'] = bar; + } + + if (dir == 'h') { + that.hScrollbarSize = that.hScrollbarWrapper.clientWidth; + that.hScrollbarIndicatorSize = m.max(m.round(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8); + that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px'; + that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize; + that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX; + } else { + that.vScrollbarSize = that.vScrollbarWrapper.clientHeight; + that.vScrollbarIndicatorSize = m.max(m.round(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8); + that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px'; + that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize; + that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY; + } + + // Reset position + that._scrollbarPos(dir, true); + }, + + _resize: function () { + var that = this; + setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0); + }, + + _pos: function (x, y) { + if (this.zoomed) return; + + x = this.hScroll ? x : 0; + y = this.vScroll ? y : 0; + + if (this.options.useTransform) { + this.scroller.style[transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + this.scale + ')' + translateZ; + } else { + x = m.round(x); + y = m.round(y); + this.scroller.style.left = x + 'px'; + this.scroller.style.top = y + 'px'; + } + + this.x = x; + this.y = y; + + this._scrollbarPos('h'); + this._scrollbarPos('v'); + }, + + _scrollbarPos: function (dir, hidden) { + var that = this, + pos = dir == 'h' ? that.x : that.y, + size; + + if (!that[dir + 'Scrollbar']) return; + + pos = that[dir + 'ScrollbarProp'] * pos; + + if (pos < 0) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] + m.round(pos * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + } + pos = 0; + } else if (pos > that[dir + 'ScrollbarMaxScroll']) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size); + } else { + pos = that[dir + 'ScrollbarMaxScroll']; + } + } + + that[dir + 'ScrollbarWrapper'].style[transitionDelay] = '0'; + that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1'; + that[dir + 'ScrollbarIndicator'].style[transform] = 'translate(' + (dir == 'h' ? pos + 'px,0)' : '0,' + pos + 'px)') + translateZ; + }, + + _start: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + matrix, x, y, + c1, c2; + + if (!that.enabled) return; + + if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); + + if (that.options.useTransition || that.options.zoom) that._transitionTime(0); + + that.moved = false; + that.animating = false; + that.zoomed = false; + that.distX = 0; + that.distY = 0; + that.absDistX = 0; + that.absDistY = 0; + that.dirX = 0; + that.dirY = 0; + + // Gesture start + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY); + that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2); + + that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x; + that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y; + + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + } + + if (that.options.momentum) { + if (that.options.useTransform) { + // Very lame general purpose alternative to CSSMatrix + matrix = getComputedStyle(that.scroller, null)[transform].replace(/[^0-9\-.,]/g, '').split(','); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, ''); + y = +getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, ''); + } + + if (x != that.x || y != that.y) { + if (that.options.useTransition) that._unbind(TRNEND_EV); + else cancelFrame(that.aniTime); + that.steps = []; + that._pos(x, y); + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); + } + } + + that.absStartX = that.x; // Needed by snap threshold + that.absStartY = that.y; + + that.startX = that.x; + that.startY = that.y; + that.pointX = point.pageX; + that.pointY = point.pageY; + + that.startTime = e.timeStamp || Date.now(); + + if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); + + that._bind(MOVE_EV, window); + that._bind(END_EV, window); + that._bind(CANCEL_EV, window); + }, + + _move: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + deltaX = point.pageX - that.pointX, + deltaY = point.pageY - that.pointY, + newX = that.x + deltaX, + newY = that.y + deltaY, + c1, c2, scale, + timestamp = e.timeStamp || Date.now(); + + if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); + + // Zoom + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY); + that.touchesDist = m.sqrt(c1*c1+c2*c2); + + that.zoomed = true; + + scale = 1 / that.touchesDistStart * that.touchesDist * this.scale; + + if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin); + else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale); + + that.lastScale = scale / this.scale; + + newX = this.originX - this.originX * that.lastScale + this.x, + newY = this.originY - this.originY * that.lastScale + this.y; + + this.scroller.style[transform] = 'translate(' + newX + 'px,' + newY + 'px) scale(' + scale + ')' + translateZ; + + if (that.options.onZoom) that.options.onZoom.call(that, e); + return; + } + + that.pointX = point.pageX; + that.pointY = point.pageY; + + // Slow down if outside of the boundaries + if (newX > 0 || newX < that.maxScrollX) { + newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; + } + if (newY > that.minScrollY || newY < that.maxScrollY) { + newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY; + } + + that.distX += deltaX; + that.distY += deltaY; + that.absDistX = m.abs(that.distX); + that.absDistY = m.abs(that.distY); + + if (that.absDistX < 6 && that.absDistY < 6) { + return; + } + + // Lock direction + if (that.options.lockDirection) { + if (that.absDistX > that.absDistY + 5) { + newY = that.y; + deltaY = 0; + } else if (that.absDistY > that.absDistX + 5) { + newX = that.x; + deltaX = 0; + } + } + + that.moved = true; + that._pos(newX, newY); + that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if (timestamp - that.startTime > 300) { + that.startTime = timestamp; + that.startX = that.x; + that.startY = that.y; + } + + if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); + }, + + _end: function (e) { + if (hasTouch && e.touches.length !== 0) return; + + var that = this, + point = hasTouch ? e.changedTouches[0] : e, + target, ev, + momentumX = { dist:0, time:0 }, + momentumY = { dist:0, time:0 }, + duration = (e.timeStamp || Date.now()) - that.startTime, + newPosX = that.x, + newPosY = that.y, + distX, distY, + newDuration, + snap, + scale; + + that._unbind(MOVE_EV, window); + that._unbind(END_EV, window); + that._unbind(CANCEL_EV, window); + + if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); + + if (that.zoomed) { + scale = that.scale * that.lastScale; + scale = Math.max(that.options.zoomMin, scale); + scale = Math.min(that.options.zoomMax, scale); + that.lastScale = scale / that.scale; + that.scale = scale; + + that.x = that.originX - that.originX * that.lastScale + that.x; + that.y = that.originY - that.originY * that.lastScale + that.y; + + that.scroller.style[transitionDuration] = '200ms'; + that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + that.scale + ')' + translateZ; + + that.zoomed = false; + that.refresh(); + + if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + return; + } + + if (!that.moved) { + if (hasTouch) { + if (that.doubleTapTimer && that.options.zoom) { + // Double tapped + clearTimeout(that.doubleTapTimer); + that.doubleTapTimer = null; + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1); + if (that.options.onZoomEnd) { + setTimeout(function() { + that.options.onZoomEnd.call(that, e); + }, 200); // 200 is default zoom duration + } + } else if (this.options.handleClick) { + that.doubleTapTimer = setTimeout(function () { + that.doubleTapTimer = null; + + // Find the last touched element + target = point.target; + while (target.nodeType != 1) target = target.parentNode; + + if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { + ev = doc.createEvent('MouseEvents'); + ev.initMouseEvent('click', true, true, e.view, 1, + point.screenX, point.screenY, point.clientX, point.clientY, + e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, + 0, null); + ev._fake = true; + target.dispatchEvent(ev); + } + }, that.options.zoom ? 250 : 0); + } + } + + that._resetPos(400); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + if (duration < 300 && that.options.momentum) { + momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; + momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; + + newPosX = that.x + momentumX.dist; + newPosY = that.y + momentumY.dist; + + if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; + if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; + } + + if (momentumX.dist || momentumY.dist) { + newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); } + else { + snap = that._snap(newPosX, newPosY); + newPosX = snap.x; + newPosY = snap.y; + newDuration = m.max(snap.time, newDuration); + } + } + + that.scrollTo(m.round(newPosX), m.round(newPosY), newDuration); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200); + else { + snap = that._snap(that.x, that.y); + if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time); + } + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + that._resetPos(200); + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + }, + + _resetPos: function (time) { + var that = this, + resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, + resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + if (resetX == that.x && resetY == that.y) { + if (that.moved) { + that.moved = false; + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end + } + + if (that.hScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.hScrollbarWrapper.style[transitionDelay] = '300ms'; + that.hScrollbarWrapper.style.opacity = '0'; + } + if (that.vScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.vScrollbarWrapper.style[transitionDelay] = '300ms'; + that.vScrollbarWrapper.style.opacity = '0'; + } + + return; + } + + that.scrollTo(resetX, resetY, time || 0); + }, + + _wheel: function (e) { + var that = this, + wheelDeltaX, wheelDeltaY, + deltaX, deltaY, + deltaScale; + + if ('wheelDeltaX' in e) { + wheelDeltaX = e.wheelDeltaX / 12; + wheelDeltaY = e.wheelDeltaY / 12; + } else if('wheelDelta' in e) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 12; + } else if ('detail' in e) { + wheelDeltaX = wheelDeltaY = -e.detail * 3; + } else { + return; + } + + if (that.options.wheelAction == 'zoom') { + deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0)); + if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin; + if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax; + + if (deltaScale != that.scale) { + if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.wheelZoomCount++; + + that.zoom(e.pageX, e.pageY, deltaScale, 400); + + setTimeout(function() { + that.wheelZoomCount--; + if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + }, 400); + } + + return; + } + + deltaX = that.x + wheelDeltaX; + deltaY = that.y + wheelDeltaY; + + if (deltaX > 0) deltaX = 0; + else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX; + + if (deltaY > that.minScrollY) deltaY = that.minScrollY; + else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY; + + if (that.maxScrollY < 0) { + that.scrollTo(deltaX, deltaY, 0); + } + }, + + _transitionEnd: function (e) { + var that = this; + + if (e.target != that.scroller) return; + + that._unbind(TRNEND_EV); + + that._startAni(); + }, + + + /** + * + * Utilities + * + */ + _startAni: function () { + var that = this, + startX = that.x, startY = that.y, + startTime = Date.now(), + step, easeOut, + animate; + + if (that.animating) return; + + if (!that.steps.length) { + that._resetPos(400); + return; + } + + step = that.steps.shift(); + + if (step.x == startX && step.y == startY) step.time = 0; + + that.animating = true; + that.moved = true; + + if (that.options.useTransition) { + that._transitionTime(step.time); + that._pos(step.x, step.y); + that.animating = false; + if (step.time) that._bind(TRNEND_EV); + else that._resetPos(0); + return; + } + + animate = function () { + var now = Date.now(), + newX, newY; + + if (now >= startTime + step.time) { + that._pos(step.x, step.y); + that.animating = false; + if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end + that._startAni(); + return; + } + + now = (now - startTime) / step.time - 1; + easeOut = m.sqrt(1 - now * now); + newX = (step.x - startX) * easeOut + startX; + newY = (step.y - startY) * easeOut + startY; + that._pos(newX, newY); + if (that.animating) that.aniTime = nextFrame(animate); + }; + + animate(); + }, + + _transitionTime: function (time) { + time += 'ms'; + this.scroller.style[transitionDuration] = time; + if (this.hScrollbar) this.hScrollbarIndicator.style[transitionDuration] = time; + if (this.vScrollbar) this.vScrollbarIndicator.style[transitionDuration] = time; + }, + + _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { + var deceleration = 0.0006, + speed = m.abs(dist) / time, + newDist = (speed * speed) / (2 * deceleration), + newTime = 0, outsideDist = 0; + + // Proportinally reduce speed if we are outside of the boundaries + if (dist > 0 && newDist > maxDistUpper) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistUpper = maxDistUpper + outsideDist; + speed = speed * maxDistUpper / newDist; + newDist = maxDistUpper; + } else if (dist < 0 && newDist > maxDistLower) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistLower = maxDistLower + outsideDist; + speed = speed * maxDistLower / newDist; + newDist = maxDistLower; + } + + newDist = newDist * (dist < 0 ? -1 : 1); + newTime = speed / deceleration; + + return { dist: newDist, time: m.round(newTime) }; + }, + + _offset: function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + + if (el != this.wrapper) { + left *= this.scale; + top *= this.scale; + } + + return { left: left, top: top }; + }, + + _snap: function (x, y) { + var that = this, + i, l, + page, time, + sizeX, sizeY; + + // Check page X + page = that.pagesX.length - 1; + for (i=0, l=that.pagesX.length; i= that.pagesX[i]) { + page = i; + break; + } + } + if (page == that.currPageX && page > 0 && that.dirX < 0) page--; + x = that.pagesX[page]; + sizeX = m.abs(x - that.pagesX[that.currPageX]); + sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0; + that.currPageX = page; + + // Check page Y + page = that.pagesY.length-1; + for (i=0; i= that.pagesY[i]) { + page = i; + break; + } + } + if (page == that.currPageY && page > 0 && that.dirY < 0) page--; + y = that.pagesY[page]; + sizeY = m.abs(y - that.pagesY[that.currPageY]); + sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0; + that.currPageY = page; + + // Snap with constant speed (proportional duration) + time = m.round(m.max(sizeX, sizeY)) || 200; + + return { x: x, y: y, time: time }; + }, + + _bind: function (type, el, bubble) { + (el || this.scroller).addEventListener(type, this, !!bubble); + }, + + _unbind: function (type, el, bubble) { + (el || this.scroller).removeEventListener(type, this, !!bubble); + }, + + + /** + * + * Public methods + * + */ + destroy: function () { + var that = this; + + that.scroller.style[transform] = ''; + + // Remove the scrollbars + that.hScrollbar = false; + that.vScrollbar = false; + that._scrollbar('h'); + that._scrollbar('v'); + + // Remove the event listeners + that._unbind(RESIZE_EV, window); + that._unbind(START_EV); + that._unbind(MOVE_EV, window); + that._unbind(END_EV, window); + that._unbind(CANCEL_EV, window); + + if (!that.options.hasTouch) { + that._unbind('DOMMouseScroll'); + that._unbind('mousewheel'); + } + + if (that.options.useTransition) that._unbind(TRNEND_EV); + + if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime); + + if (that.options.onDestroy) that.options.onDestroy.call(that); + }, + + refresh: function () { + var that = this, + offset, + i, l, + els, + pos = 0, + page = 0; + + if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin; + that.wrapperW = that.wrapper.clientWidth || 1; + that.wrapperH = that.wrapper.clientHeight || 1; + + that.minScrollY = -that.options.topOffset || 0; + that.scrollerW = m.round(that.scroller.offsetWidth * that.scale); + that.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale); + that.maxScrollX = that.wrapperW - that.scrollerW; + that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY; + that.dirX = 0; + that.dirY = 0; + + if (that.options.onRefresh) that.options.onRefresh.call(that); + + that.hScroll = that.options.hScroll && that.maxScrollX < 0; + that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); + + that.hScrollbar = that.hScroll && that.options.hScrollbar; + that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH; + + offset = that._offset(that.wrapper); + that.wrapperOffsetLeft = -offset.left; + that.wrapperOffsetTop = -offset.top; + + // Prepare snap + if (typeof that.options.snap == 'string') { + that.pagesX = []; + that.pagesY = []; + els = that.scroller.querySelectorAll(that.options.snap); + for (i=0, l=els.length; i= that.maxScrollX) { + that.pagesX[page] = pos; + pos = pos - that.wrapperW; + page++; + } + if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1]; + + pos = 0; + page = 0; + that.pagesY = []; + while (pos >= that.maxScrollY) { + that.pagesY[page] = pos; + pos = pos - that.wrapperH; + page++; + } + if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1]; + } + + // Prepare the scrollbars + that._scrollbar('h'); + that._scrollbar('v'); + + if (!that.zoomed) { + that.scroller.style[transitionDuration] = '0'; + that._resetPos(400); + } + }, + + scrollTo: function (x, y, time, relative) { + var that = this, + step = x, + i, l; + + that.stop(); + + if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; + + for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; + pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; + time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; + + that.scrollTo(pos.left, pos.top, time); + }, + + scrollToPage: function (pageX, pageY, time) { + var that = this, x, y; + + time = time === undefined ? 400 : time; + + if (that.options.onScrollStart) that.options.onScrollStart.call(that); + + if (that.options.snap) { + pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX; + pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY; + + pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX; + pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY; + + that.currPageX = pageX; + that.currPageY = pageY; + x = that.pagesX[pageX]; + y = that.pagesY[pageY]; + } else { + x = -that.wrapperW * pageX; + y = -that.wrapperH * pageY; + if (x < that.maxScrollX) x = that.maxScrollX; + if (y < that.maxScrollY) y = that.maxScrollY; + } + + that.scrollTo(x, y, time); + }, + + disable: function () { + this.stop(); + this._resetPos(0); + this.enabled = false; + + // If disabled after touchstart we make sure that there are no left over events + this._unbind(MOVE_EV, window); + this._unbind(END_EV, window); + this._unbind(CANCEL_EV, window); + }, + + enable: function () { + this.enabled = true; + }, + + stop: function () { + if (this.options.useTransition) this._unbind(TRNEND_EV); + else cancelFrame(this.aniTime); + this.steps = []; + this.moved = false; + this.animating = false; + }, + + zoom: function (x, y, scale, time) { + var that = this, + relScale = scale / that.scale; + + if (!that.options.useTransform) return; + + that.zoomed = true; + time = time === undefined ? 200 : time; + x = x - that.wrapperOffsetLeft - that.x; + y = y - that.wrapperOffsetTop - that.y; + that.x = x - x * relScale + that.x; + that.y = y - y * relScale + that.y; + + that.scale = scale; + that.refresh(); + + that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x; + that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + that.scroller.style[transitionDuration] = time + 'ms'; + that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + scale + ')' + translateZ; + that.zoomed = false; + }, + + isReady: function () { + return !this.moved && !this.zoomed && !this.animating; + } +}; + +function prefixStyle (style) { + if ( vendor === '' ) return style; + + style = style.charAt(0).toUpperCase() + style.substr(1); + return vendor + style; +} + +dummyStyle = null; // for the sake of it + +if (typeof exports !== 'undefined') exports.iScroll = iScroll; +else window.iScroll = iScroll; + +})(window, document); diff --git a/flatclient/js/jquery-1.10.2.js b/flatclient/js/jquery-1.10.2.js new file mode 100755 index 0000000..c5c6482 --- /dev/null +++ b/flatclient/js/jquery-1.10.2.js @@ -0,0 +1,9789 @@ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
                    "; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
                    a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
                    t
                    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
                    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
                    ", "
                    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
                    " ], + tr: [ 2, "", "
                    " ], + col: [ 2, "", "
                    " ], + td: [ 3, "", "
                    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
                    ", "
                    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
                    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("