diff --git a/apache/Dockerfile b/apache/Dockerfile new file mode 100644 index 0000000..c81abed --- /dev/null +++ b/apache/Dockerfile @@ -0,0 +1,7 @@ +FROM httpd:2.4.33-alpine +RUN apk update; \ + apk upgrade + +COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf +RUN echo "Include /usr/local/apache2/conf/demo.apache.conf" \ + >> /usr/local/apache2/conf/httpd.conf diff --git a/apache/demo.apache.conf b/apache/demo.apache.conf new file mode 100644 index 0000000..e40970c --- /dev/null +++ b/apache/demo.apache.conf @@ -0,0 +1,19 @@ +ServerName localhost + +LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so +LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so +LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so + + + ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1 + DocumentRoot /var/www/html/ + + DirectoryIndex index.php + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + CustomLog /proc/self/fd/1 common + ErrorLog /proc/self/fd/2 + diff --git a/db/init.sql b/db/init.sql new file mode 100644 index 0000000..42cefb5 --- /dev/null +++ b/db/init.sql @@ -0,0 +1,3 @@ +CREATE TABLE IF NOT EXISTS login (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, pseudo TEXT NOT NULL, prenom TEXT NOT NULL, nom TEXT NOT NULL, mdp TEXT NOT NULL); + +CREATE TABLE IF NOT EXISTS tetris (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, date DATETIME NOT NULL, pseudo TEXT NOT NULL, score TEXT NOT NULL, ip TEXT NOT NULL); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..647b42b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.2" + +services: + php: + build: './php/' + networks: + - backend + volumes: + - ./public_html/:/var/www/html/ + apache: + build: './apache/' + depends_on: + - php + - mysql + networks: + - frontend + - backend + ports: + - 8085:80 + volumes: + - ./public_html/:/var/www/html/ + mysql: + image: mariadb:10 + networks: + - backend + volumes: + - ./db/data:/var/lib/mysql + - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql + environment: + - MYSQL_USER=root + - MYSQL_DATABASE=raspsnirv2 + - MYSQL_ROOT_PASSWORD=aberation + +networks: + frontend: + backend: diff --git a/php/Dockerfile b/php/Dockerfile new file mode 100644 index 0000000..e9cb8c6 --- /dev/null +++ b/php/Dockerfile @@ -0,0 +1,5 @@ +FROM php:7.4-fpm-alpine +RUN apk update; \ + apk upgrade + +RUN docker-php-ext-install pdo_mysql diff --git a/public_html/LICENSE b/public_html/LICENSE new file mode 100644 index 0000000..5038d18 --- /dev/null +++ b/public_html/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2016 Materialize + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/public_html/browserquest/README.md b/public_html/browserquest/README.md new file mode 100644 index 0000000..ddbdbfc --- /dev/null +++ b/public_html/browserquest/README.md @@ -0,0 +1,23 @@ +BrowserQuest client documentation +================================= + +The client directory should never be directly deployed to staging/production. Deployment steps: + +1) Configure the websocket host/port: + +In the client/config/ directory, copy config_build.json-dist to a new config_build.json file. +Edit the contents of this file to change host/port settings. + +2) Run the following commands from the project root: + +(Note: nodejs is required to run the build script) + +* cd bin +* chmod +x build.sh +* ./build.sh + +This will use the RequireJS optimizer tool to create a client-build/ directory containing a production-ready version of BrowserQuest. + +A build log file will also be created at bin/build.txt. + +The client-build directory can be renamed and deployed anywhere. It has no dependencies to any other file/folder in the repository. \ No newline at end of file diff --git a/public_html/browserquest/audio/sounds/achievement.mp3 b/public_html/browserquest/audio/sounds/achievement.mp3 new file mode 100644 index 0000000..6452b6d Binary files /dev/null and b/public_html/browserquest/audio/sounds/achievement.mp3 differ diff --git a/public_html/browserquest/audio/sounds/achievement.ogg b/public_html/browserquest/audio/sounds/achievement.ogg new file mode 100644 index 0000000..addef20 Binary files /dev/null and b/public_html/browserquest/audio/sounds/achievement.ogg differ diff --git a/public_html/browserquest/audio/sounds/chat.mp3 b/public_html/browserquest/audio/sounds/chat.mp3 new file mode 100644 index 0000000..34cc69f Binary files /dev/null and b/public_html/browserquest/audio/sounds/chat.mp3 differ diff --git a/public_html/browserquest/audio/sounds/chat.ogg b/public_html/browserquest/audio/sounds/chat.ogg new file mode 100644 index 0000000..41f5895 Binary files /dev/null and b/public_html/browserquest/audio/sounds/chat.ogg differ diff --git a/public_html/browserquest/audio/sounds/chest.mp3 b/public_html/browserquest/audio/sounds/chest.mp3 new file mode 100644 index 0000000..ab3234d Binary files /dev/null and b/public_html/browserquest/audio/sounds/chest.mp3 differ diff --git a/public_html/browserquest/audio/sounds/chest.ogg b/public_html/browserquest/audio/sounds/chest.ogg new file mode 100644 index 0000000..9d72e33 Binary files /dev/null and b/public_html/browserquest/audio/sounds/chest.ogg differ diff --git a/public_html/browserquest/audio/sounds/death.mp3 b/public_html/browserquest/audio/sounds/death.mp3 new file mode 100644 index 0000000..b4fdb3b Binary files /dev/null and b/public_html/browserquest/audio/sounds/death.mp3 differ diff --git a/public_html/browserquest/audio/sounds/death.ogg b/public_html/browserquest/audio/sounds/death.ogg new file mode 100644 index 0000000..a36bac0 Binary files /dev/null and b/public_html/browserquest/audio/sounds/death.ogg differ diff --git a/public_html/browserquest/audio/sounds/firefox.mp3 b/public_html/browserquest/audio/sounds/firefox.mp3 new file mode 100644 index 0000000..4bdeb67 Binary files /dev/null and b/public_html/browserquest/audio/sounds/firefox.mp3 differ diff --git a/public_html/browserquest/audio/sounds/firefox.ogg b/public_html/browserquest/audio/sounds/firefox.ogg new file mode 100644 index 0000000..c4972b2 Binary files /dev/null and b/public_html/browserquest/audio/sounds/firefox.ogg differ diff --git a/public_html/browserquest/audio/sounds/heal.mp3 b/public_html/browserquest/audio/sounds/heal.mp3 new file mode 100644 index 0000000..2baeb0b Binary files /dev/null and b/public_html/browserquest/audio/sounds/heal.mp3 differ diff --git a/public_html/browserquest/audio/sounds/heal.ogg b/public_html/browserquest/audio/sounds/heal.ogg new file mode 100644 index 0000000..8f0ef53 Binary files /dev/null and b/public_html/browserquest/audio/sounds/heal.ogg differ diff --git a/public_html/browserquest/audio/sounds/hit1.mp3 b/public_html/browserquest/audio/sounds/hit1.mp3 new file mode 100644 index 0000000..ddda637 Binary files /dev/null and b/public_html/browserquest/audio/sounds/hit1.mp3 differ diff --git a/public_html/browserquest/audio/sounds/hit1.ogg b/public_html/browserquest/audio/sounds/hit1.ogg new file mode 100644 index 0000000..a104021 Binary files /dev/null and b/public_html/browserquest/audio/sounds/hit1.ogg differ diff --git a/public_html/browserquest/audio/sounds/hit2.mp3 b/public_html/browserquest/audio/sounds/hit2.mp3 new file mode 100644 index 0000000..6a695bd Binary files /dev/null and b/public_html/browserquest/audio/sounds/hit2.mp3 differ diff --git a/public_html/browserquest/audio/sounds/hit2.ogg b/public_html/browserquest/audio/sounds/hit2.ogg new file mode 100644 index 0000000..be3fc8d Binary files /dev/null and b/public_html/browserquest/audio/sounds/hit2.ogg differ diff --git a/public_html/browserquest/audio/sounds/hurt.mp3 b/public_html/browserquest/audio/sounds/hurt.mp3 new file mode 100644 index 0000000..0f1168e Binary files /dev/null and b/public_html/browserquest/audio/sounds/hurt.mp3 differ diff --git a/public_html/browserquest/audio/sounds/hurt.ogg b/public_html/browserquest/audio/sounds/hurt.ogg new file mode 100644 index 0000000..8fe5186 Binary files /dev/null and b/public_html/browserquest/audio/sounds/hurt.ogg differ diff --git a/public_html/browserquest/audio/sounds/kill1.mp3 b/public_html/browserquest/audio/sounds/kill1.mp3 new file mode 100644 index 0000000..4617c28 Binary files /dev/null and b/public_html/browserquest/audio/sounds/kill1.mp3 differ diff --git a/public_html/browserquest/audio/sounds/kill1.ogg b/public_html/browserquest/audio/sounds/kill1.ogg new file mode 100644 index 0000000..60a6b1a Binary files /dev/null and b/public_html/browserquest/audio/sounds/kill1.ogg differ diff --git a/public_html/browserquest/audio/sounds/kill2.mp3 b/public_html/browserquest/audio/sounds/kill2.mp3 new file mode 100644 index 0000000..422bc11 Binary files /dev/null and b/public_html/browserquest/audio/sounds/kill2.mp3 differ diff --git a/public_html/browserquest/audio/sounds/kill2.ogg b/public_html/browserquest/audio/sounds/kill2.ogg new file mode 100644 index 0000000..7496d66 Binary files /dev/null and b/public_html/browserquest/audio/sounds/kill2.ogg differ diff --git a/public_html/browserquest/audio/sounds/loot.mp3 b/public_html/browserquest/audio/sounds/loot.mp3 new file mode 100644 index 0000000..aafeab3 Binary files /dev/null and b/public_html/browserquest/audio/sounds/loot.mp3 differ diff --git a/public_html/browserquest/audio/sounds/loot.ogg b/public_html/browserquest/audio/sounds/loot.ogg new file mode 100644 index 0000000..263e9f9 Binary files /dev/null and b/public_html/browserquest/audio/sounds/loot.ogg differ diff --git a/public_html/browserquest/audio/sounds/noloot.mp3 b/public_html/browserquest/audio/sounds/noloot.mp3 new file mode 100644 index 0000000..29594ea Binary files /dev/null and b/public_html/browserquest/audio/sounds/noloot.mp3 differ diff --git a/public_html/browserquest/audio/sounds/noloot.ogg b/public_html/browserquest/audio/sounds/noloot.ogg new file mode 100644 index 0000000..97ff814 Binary files /dev/null and b/public_html/browserquest/audio/sounds/noloot.ogg differ diff --git a/public_html/browserquest/audio/sounds/npc-end.mp3 b/public_html/browserquest/audio/sounds/npc-end.mp3 new file mode 100644 index 0000000..102d493 Binary files /dev/null and b/public_html/browserquest/audio/sounds/npc-end.mp3 differ diff --git a/public_html/browserquest/audio/sounds/npc-end.ogg b/public_html/browserquest/audio/sounds/npc-end.ogg new file mode 100644 index 0000000..3a31c76 Binary files /dev/null and b/public_html/browserquest/audio/sounds/npc-end.ogg differ diff --git a/public_html/browserquest/audio/sounds/npc.mp3 b/public_html/browserquest/audio/sounds/npc.mp3 new file mode 100644 index 0000000..305c5da Binary files /dev/null and b/public_html/browserquest/audio/sounds/npc.mp3 differ diff --git a/public_html/browserquest/audio/sounds/npc.ogg b/public_html/browserquest/audio/sounds/npc.ogg new file mode 100644 index 0000000..41f5895 Binary files /dev/null and b/public_html/browserquest/audio/sounds/npc.ogg differ diff --git a/public_html/browserquest/audio/sounds/npctalk.mp3 b/public_html/browserquest/audio/sounds/npctalk.mp3 new file mode 100644 index 0000000..e244f35 Binary files /dev/null and b/public_html/browserquest/audio/sounds/npctalk.mp3 differ diff --git a/public_html/browserquest/audio/sounds/npctalk.ogg b/public_html/browserquest/audio/sounds/npctalk.ogg new file mode 100644 index 0000000..41f5895 Binary files /dev/null and b/public_html/browserquest/audio/sounds/npctalk.ogg differ diff --git a/public_html/browserquest/audio/sounds/revive.mp3 b/public_html/browserquest/audio/sounds/revive.mp3 new file mode 100644 index 0000000..dd0f909 Binary files /dev/null and b/public_html/browserquest/audio/sounds/revive.mp3 differ diff --git a/public_html/browserquest/audio/sounds/revive.ogg b/public_html/browserquest/audio/sounds/revive.ogg new file mode 100644 index 0000000..572cc9d Binary files /dev/null and b/public_html/browserquest/audio/sounds/revive.ogg differ diff --git a/public_html/browserquest/audio/sounds/teleport.mp3 b/public_html/browserquest/audio/sounds/teleport.mp3 new file mode 100644 index 0000000..736a1a9 Binary files /dev/null and b/public_html/browserquest/audio/sounds/teleport.mp3 differ diff --git a/public_html/browserquest/audio/sounds/teleport.ogg b/public_html/browserquest/audio/sounds/teleport.ogg new file mode 100644 index 0000000..96b9ea1 Binary files /dev/null and b/public_html/browserquest/audio/sounds/teleport.ogg differ diff --git a/public_html/browserquest/css/achievements.css b/public_html/browserquest/css/achievements.css new file mode 100644 index 0000000..30a8812 --- /dev/null +++ b/public_html/browserquest/css/achievements.css @@ -0,0 +1,291 @@ +#achievements-wrapper{overflow:hidden;} +#achievements ul:first-child{margin-left:0;} +#lists{-moz-transition:0.5s left ease-in-out;-webkit-transition:0.5s left ease-in-out;-o-transition:0.5s left ease-in-out;-ms-transition:0.5s left ease-in-out;transition:0.5s left ease-in-out;position:relative;} +#achievements-count{float:right;color:#fff;} +#achievements-count div{display:inline-block;} +#achievement-notification .coin{-moz-transition:0.2s opacity linear;-webkit-transition:0.2s opacity linear;-o-transition:0.2s opacity linear;-ms-transition:0.2s opacity linear;transition:0.2s opacity linear;} +@media screen and (min-width:1501px){ +.coin{width:72px;height:78px;} +.achievement1 .coin{background-position:0 -666px;} +.achievement2 .coin{background-position:-72px -666px;} +.achievement3 .coin{background-position:-144px -666px;} +.achievement4 .coin{background-position:-216px -666px;} +.achievement5 .coin{background-position:-288px -666px;} +.achievement6 .coin{background-position:-360px -666px;} +.achievement7 .coin{background-position:-432px -666px;} +.achievement8 .coin{background-position:-504px -666px;} +.achievement9 .coin{background-position:-576px -666px;} +.achievement10 .coin{background-position:-648px -666px;} +.achievement11 .coin{background-position:-720px -666px;} +.achievement12 .coin{background-position:-792px -666px;} +.achievement13 .coin{background-position:-864px -666px;} +.achievement14 .coin{background-position:-936px -666px;} +.achievement15 .coin{background-position:-1008px -666px;} +.achievement16 .coin{background-position:-1080px -666px;} +.achievement17 .coin{background-position:-1152px -666px;} +.achievement18 .coin{background-position:-648px -822px;} +.achievement19 .coin{background-position:-720px -822px;} +.achievement20 .coin{background-position:-792px -822px;} +#achievements-wrapper{height:387px;width:1116px;margin:60px 0 30px 60px;} +#achievements ul{float:left;margin-left:60px;} +#achievements nav{height:66px;width:202px;margin:0 auto;} +#previous,#next{height:66px;width:102px;display:inline-block;} +.page1 #previous,.upscaled .page1 #previous{background-position:0px -846px;} +.page5 #next,.upscaled .page5 #next{background-position:-99px -846px;} +#previous,.upscaled #previous{background-position:-201px -846px;} +#previous:active,.upscaled #previous:active{background-position:-402px -846px;} +#next,.upscaled #next{margin-left:-15px;background-position:-300px -846px;} +#next:active,.upscaled #next:active{background-position:-501px -846px;} +.page1 #previous:hover,.page1 #previous:active{background-position:0px -846px;} +.page5 #next:hover,.page5 #next:active{background-position:-99px -846px} +#lists{width:6000px;} +#achievements.page1 #lists{left:0;} +#achievements.page2 #lists{left:-1176px;} +#achievements.page3 #lists{left:-2352px;} +#achievements.page4 #lists{left:-3528px;} +#achievements.page5 #lists{left:-4704px;} +#achievements-count{margin:18px 72px 0 0;} +#achievements,#achievements li,#achievements .coin,#achievement-notification,#achievement-notification .coin,#coinsparks,.achievement-sharing a,#previous,#next{background-size:1248px;} +#achievements{height:588px;width:1248px;margin-left:-624px;margin-top:-324px;font-size:30px;} +#achievements li,.upscaled #achievements li{height:78px;width:1116px;background-position:0 -588px;margin:15px 0;} +#achievements li .coin{margin-right:45px;} +#achievements li span{padding-top:27px;} +.achievement-sharing{right:24px;top:24px;} +.achievement-sharing .facebook{height:33px;width:15px;background-position:-1116px -588px;} +.achievement-sharing .facebook:hover{background-position:-1116px -621px;} +.achievement-sharing .twitter,.upscaled .achievement-sharing .twitter{height:33px;width:48px;background-position:-1131px -588px;margin-left:15px;} +.achievement-sharing .twitter:hover,.upscaled .achievement-sharing .twitter:hover{background-position:-1131px -621px;} +#achievement-notification,.upscaled #achievement-notification{width:648px;bottom:66px;height:0;margin-left:-324px;background-position:0 -744px;} +#achievement-notification.active{height:102px;} +#achievement-notification .coin{position:absolute;top:-60px;left:50%;margin-left:-36px;opacity:0;} +#achievement-notification.active .coin{opacity:1;} +#achievement-notification.active #coinsparks,.upscaled #achievement-notification.active #coinsparks{height:78px;width:72px;-moz-animation:coinsparks3 0.8s steps(6,end) 7;-webkit-animation:coinsparks3 0.8s steps(6,end) 7;-o-animation:coinsparks3 0.8s steps(6,end) 7;-ms-animation:coinsparks3 0.8s steps(6,end) 7;} +#achievement-notification .title{color:#fce045;font-size:20px;margin:27px 0 9px 0;} +#achievement-notification .name{color:#eee;font-size:30px;margin:9px 0;} +} +@media screen and (max-width:1500px){ +.coin{width:48px;height:52px;} +.achievement1 .coin{background-position:0 -444px;} +.achievement2 .coin{background-position:-48px -444px;} +.achievement3 .coin{background-position:-96px -444px;} +.achievement4 .coin{background-position:-144px -444px;} +.achievement5 .coin{background-position:-192px -444px;} +.achievement6 .coin{background-position:-240px -444px;} +.achievement7 .coin{background-position:-288px -444px;} +.achievement8 .coin{background-position:-336px -444px;} +.achievement9 .coin{background-position:-384px -444px;} +.achievement10 .coin{background-position:-432px -444px;} +.achievement11 .coin{background-position:-480px -444px;} +.achievement12 .coin{background-position:-528px -444px;} +.achievement13 .coin{background-position:-576px -444px;} +.achievement14 .coin{background-position:-624px -444px;} +.achievement15 .coin{background-position:-672px -444px;} +.achievement16 .coin{background-position:-720px -444px;} +.achievement17 .coin{background-position:-768px -444px;} +.achievement18 .coin{background-position:-432px -548px;} +.achievement19 .coin{background-position:-480px -548px;} +.achievement20 .coin{background-position:-528px -548px;} +#achievements-wrapper{height:258px;width:744px;margin:40px 0 20px 40px;} +#achievements ul{float:left;margin-left:40px;} +#achievements nav{height:44px;width:134px;margin:0 auto;} +#previous,#next{height:44px;width:68px;display:inline-block;} +.page1 #previous,.upscaled .page1 #previous{background-position:0px -564px;} +.page5 #next,.upscaled .page5 #next{background-position:-66px -564px;} +#previous,.upscaled #previous{background-position:-134px -564px;} +#previous:active,.upscaled #previous:active{background-position:-268px -564px;} +#next,.upscaled #next{margin-left:-10px;background-position:-200px -564px;} +#next:active,.upscaled #next:active{background-position:-334px -564px;} +.page1 #previous:hover,.page1 #previous:active{background-position:0px -564px;} +.page5 #next:hover,.page5 #next:active{background-position:-66px -564px} +#lists{width:4000px;} +#achievements.page1 #lists{left:0;} +#achievements.page2 #lists{left:-784px;} +#achievements.page3 #lists{left:-1568px;} +#achievements.page4 #lists{left:-2352px;} +#achievements.page5 #lists{left:-3136px;} +#achievements-count{margin:12px 48px 0 0;} +#achievements,#achievements li,#achievements .coin,#achievement-notification,#achievement-notification .coin,#coinsparks,.upscaled #coinsparks,.achievement-sharing a,#previous,#next{background-size:832px;} +#achievements{height:392px;width:832px;margin-left:-416px;margin-top:-216px;font-size:20px;} +#achievements li,.upscaled #achievements li{height:52px;width:744px;background-position:0 -392px;margin:10px 0;} +#achievements li .coin{margin-right:30px;} +#achievements li span{padding-top:18px;} +.achievement-sharing{right:16px;top:16px;} +.achievement-sharing .facebook{height:22px;width:10px;background-position:-744px -392px;} +.achievement-sharing .facebook:hover{background-position:-744px -414px;} +.achievement-sharing .twitter,.upscaled .achievement-sharing .twitter{height:22px;width:32px;background-position:-754px -392px;margin-left:10px;} +.achievement-sharing .twitter:hover,.upscaled .achievement-sharing .twitter:hover{background-position:-754px -414px;} +#achievement-notification,.upscaled #achievement-notification{width:432px;bottom:44px;height:0;margin-left:-216px;background-position:0 -496px;} +#achievement-notification.active{height:68px;} +#achievement-notification .coin{position:absolute;top:-40px;left:50%;margin-left:-24px;opacity:0;} +#achievement-notification.active .coin{opacity:1;} +#achievement-notification.active #coinsparks,.upscaled #achievement-notification.active #coinsparks{height:52px;width:48px;-moz-animation:coinsparks2 0.8s steps(6,end) 7;-webkit-animation:coinsparks2 0.8s steps(6,end) 7;-o-animation:coinsparks2 0.8s steps(6,end) 7;-ms-animation:coinsparks2 0.8s steps(6,end) 7;} +#achievement-notification .title{color:#fce045;font-size:14px;margin:18px 0 6px 0;} +#achievement-notification .name{color:#eee;font-size:20px;margin:6px 0;} +} +@media screen and (max-height:850px){ +.coin{width:48px;height:52px;} +.achievement1 .coin{background-position:0 -444px;} +.achievement2 .coin{background-position:-48px -444px;} +.achievement3 .coin{background-position:-96px -444px;} +.achievement4 .coin{background-position:-144px -444px;} +.achievement5 .coin{background-position:-192px -444px;} +.achievement6 .coin{background-position:-240px -444px;} +.achievement7 .coin{background-position:-288px -444px;} +.achievement8 .coin{background-position:-336px -444px;} +.achievement9 .coin{background-position:-384px -444px;} +.achievement10 .coin{background-position:-432px -444px;} +.achievement11 .coin{background-position:-480px -444px;} +.achievement12 .coin{background-position:-528px -444px;} +.achievement13 .coin{background-position:-576px -444px;} +.achievement14 .coin{background-position:-624px -444px;} +.achievement15 .coin{background-position:-672px -444px;} +.achievement16 .coin{background-position:-720px -444px;} +.achievement17 .coin{background-position:-768px -444px;} +.achievement18 .coin{background-position:-432px -548px;} +.achievement19 .coin{background-position:-480px -548px;} +.achievement20 .coin{background-position:-528px -548px;} +#achievements-wrapper{height:258px;width:744px;margin:40px 0 20px 40px;} +#achievements ul{float:left;margin-left:40px;} +#achievements nav{height:44px;width:135px;margin:0 auto;} +#previous,#next{height:44px;width:68px;display:inline-block;} +.page1 #previous,.upscaled .page1 #previous{background-position:0px -564px;} +.page5 #next,.upscaled .page5 #next{background-position:-66px -564px;} +#previous,.upscaled #previous{background-position:-134px -564px;} +#previous:active,.upscaled #previous:active{background-position:-268px -564px;} +#next,.upscaled #next{margin-left:-10px;background-position:-200px -564px;} +#next:active,.upscaled #next:active{background-position:-334px -564px;} +.page1 #previous:hover,.page1 #previous:active{background-position:0px -564px;} +.page5 #next:hover,.page5 #next:active{background-position:-66px -564px} +#lists{width:4000px;} +#achievements.page1 #lists{left:0;} +#achievements.page2 #lists{left:-784px;} +#achievements.page3 #lists{left:-1568px;} +#achievements.page4 #lists{left:-2352px;} +#achievements.page5 #lists{left:-3136px;} +#achievements-count{margin:12px 48px 0 0;} +#achievements,#achievements li,#achievements .coin,#achievement-notification,#achievement-notification .coin,#coinsparks,.upscaled #coinsparks,.achievement-sharing a,#previous,#next{background-size:832px;} +#achievements{height:392px;width:832px;margin-left:-416px;margin-top:-216px;font-size:20px;} +#achievements li,.upscaled #achievements li{height:52px;width:744px;background-position:0 -392px;margin:10px 0;} +#achievements li .coin{margin-right:30px;} +#achievements li span{padding-top:18px;} +.achievement-sharing{right:16px;top:16px;} +.achievement-sharing .facebook{height:22px;width:10px;background-position:-744px -392px;} +.achievement-sharing .facebook:hover{background-position:-744px -414px;} +.achievement-sharing .twitter,.upscaled .achievement-sharing .twitter{height:22px;width:32px;background-position:-754px -392px;margin-left:10px;} +.achievement-sharing .twitter:hover,.upscaled .achievement-sharing .twitter:hover{background-position:-754px -414px;} +#achievement-notification,.upscaled #achievement-notification{width:432px;bottom:44px;height:0;margin-left:-216px;background-position:0 -496px;} +#achievement-notification.active{height:68px;} +#achievement-notification .coin{position:absolute;top:-40px;left:50%;margin-left:-24px;opacity:0;} +#achievement-notification.active .coin{opacity:1;} +#achievement-notification.active #coinsparks,.upscaled #achievement-notification.active #coinsparks{height:52px;width:48px;-moz-animation:coinsparks2 0.8s steps(6,end) 7;-webkit-animation:coinsparks2 0.8s steps(6,end) 7;-o-animation:coinsparks2 0.8s steps(6,end) 7;-ms-animation:coinsparks2 0.8s steps(6,end) 7;} +#achievement-notification .title{color:#fce045;font-size:14px;margin:18px 0 6px 0;} +#achievement-notification .name{color:#eee;font-size:20px;margin:6px 0;} +} +@media screen and (max-width:1000px){ +.coin{width:24px;height:26px;} +.achievement1 .coin{background-position:0 -222px;} +.achievement2 .coin{background-position:-24px -222px;} +.achievement3 .coin{background-position:-48px -222px;} +.achievement4 .coin{background-position:-72px -222px;} +.achievement5 .coin{background-position:-96px -222px;} +.achievement6 .coin{background-position:-120px -222px;} +.achievement7 .coin{background-position:-144px -222px;} +.achievement8 .coin{background-position:-168px -222px;} +.achievement9 .coin{background-position:-192px -222px;} +.achievement10 .coin{background-position:-216px -222px;} +.achievement11 .coin{background-position:-240px -222px;} +.achievement12 .coin{background-position:-264px -222px;} +.achievement13 .coin{background-position:-288px -222px;} +.achievement14 .coin{background-position:-312px -222px;} +.achievement15 .coin{background-position:-336px -222px;} +.achievement16 .coin{background-position:-360px -222px;} +.achievement17 .coin{background-position:-384px -222px;} +.achievement18 .coin{background-position:-216px -274px;} +.achievement19 .coin{background-position:-240px -274px;} +.achievement20 .coin{background-position:-264px -274px;} +#achievements-wrapper{height:129px;width:372px;margin:20px 0 10px 20px;} +#achievements ul{float:left;margin-left:20px;} +#achievements nav{height:22px;width:68px;margin:0 auto;} +#previous,#next{height:22px;width:34px;display:inline-block;} +.page1 #previous,.upscaled .page1 #previous{background-position:0px -282px;} +.page5 #next,.upscaled .page5 #next{background-position:-33px -282px;} +#previous,.upscaled #previous{background-position:-67px -282px;} +#previous:active,.upscaled #previous:active{background-position:-134px -282px;} +#next,.upscaled #next{margin-left:-5px;background-position:-100px -282px;} +#next:active,.upscaled #next:active{background-position:-167px -282px;} +.page1 #previous:hover,.page1 #previous:active{background-position:0px -282px;} +.page5 #next:hover,.page5 #next:active{background-position:-33px -282px} +#lists{width:2000px;-moz-transition:none;-webkit-transition:none;-o-transition:none;-ms-transition:none;transition:none;} +#achievements.page1 #lists{left:0;} +#achievements.page2 #lists{left:-392px;} +#achievements.page3 #lists{left:-784px;} +#achievements.page4 #lists{left:-1176px;} +#achievements.page5 #lists{left:-1568px;} +#achievements-count{margin:6px 24px 0 0;} +#achievements,#achievements li,#achievements .coin,#achievement-notification,#achievement-notification .coin,#coinsparks,.achievement-sharing a,#previous,#next{background-size:416px;} +#achievements{height:196px;width:416px;margin-left:-208px;margin-top:-108px;font-size:10px;} +#achievements li,.upscaled #achievements li{height:26px;width:372px;background-position:0 -196px;margin:5px 0;} +#achievements li .coin{margin-right:15px;} +#achievements li span{padding-top:9px;} +.achievement-sharing{right:8px;top:8px;} +.achievement-sharing .facebook{height:11px;width:5px;background-position:-372px -196px;} +.achievement-sharing .facebook:hover{background-position:-372px -207px;} +.achievement-sharing .twitter,.upscaled .achievement-sharing .twitter{height:11px;width:16px;background-position:-377px -196px;margin-left:5px;} +.achievement-sharing .twitter:hover,.upscaled .achievement-sharing .twitter:hover{background-position:-377px -207px;} +#achievement-notification,.upscaled #achievement-notification{width:216px;bottom:22px;height:0;margin-left:-108px;background-position:0 -248px;} +#achievement-notification.active{height:34px;} +#achievement-notification .coin{position:absolute;top:-20px;left:50%;margin-left:-12px;opacity:0;} +#achievement-notification.active .coin{opacity:1;} +#achievement-notification.active #coinsparks,.upscaled #achievement-notification.active #coinsparks{height:26px;width:24px;-moz-animation:coinsparks1 0.8s steps(6,end) 7;-webkit-animation:coinsparks1 0.8s steps(6,end) 7;-o-animation:coinsparks1 0.8s steps(6,end) 7;-ms-animation:coinsparks1 0.8s steps(6,end) 7;} +#achievement-notification .title{color:#fce045;font-size:10px;margin:9px 0 3px 0;} +#achievement-notification .name{color:#eee;font-size:10px;margin:3px 0;} +} +@media screen and (max-width:600px){ +#achievement-notification .coin{width:48px;height:52px;} +#achievement-notification.achievement1 .coin{background-position:0 -444px;} +#achievement-notification.achievement2 .coin{background-position:-48px -444px;} +#achievement-notification.achievement3 .coin{background-position:-96px -444px;} +#achievement-notification.achievement4 .coin{background-position:-144px -444px;} +#achievement-notification.achievement5 .coin{background-position:-192px -444px;} +#achievement-notification.achievement6 .coin{background-position:-240px -444px;} +#achievement-notification.achievement7 .coin{background-position:-288px -444px;} +#achievement-notification.achievement8 .coin{background-position:-336px -444px;} +#achievement-notification.achievement9 .coin{background-position:-384px -444px;} +#achievement-notification.achievement10 .coin{background-position:-432px -444px;} +#achievement-notification.achievement11 .coin{background-position:-480px -444px;} +#achievement-notification.achievement12 .coin{background-position:-528px -444px;} +#achievement-notification.achievement13 .coin{background-position:-576px -444px;} +#achievement-notification.achievement14 .coin{background-position:-624px -444px;} +#achievement-notification.achievement15 .coin{background-position:-672px -444px;} +#achievement-notification.achievement16 .coin{background-position:-720px -444px;} +#achievement-notification.achievement17 .coin{background-position:-768px -444px;} +#achievement-notification.achievement18 .coin{background-position:-432px -548px;} +#achievement-notification.achievement19 .coin{background-position:-480px -548px;} +#achievement-notification.achievement20 .coin{background-position:-528px -548px;} +#achievements nav{height:22px;width:68px;margin:0 auto;} +#previous,#next{height:22px;width:34px;display:inline-block;} +.page1 #previous,.upscaled .page1 #previous{background-position:0px -282px;} +.page5 #next,.upscaled .page5 #next{background-position:-33px -282px;} +#previous,.upscaled #previous{background-position:-67px -282px;} +#previous:active,.upscaled #previous:active{background-position:-134px -282px;} +#next,.upscaled #next{margin-left:-5px;background-position:-100px -282px;} +#next:active,.upscaled #next:active{background-position:-167px -282px;} +.page1 #previous:hover,.page1 #previous:active{background-position:0px -282px;} +.page5 #next:hover,.page5 #next:active{background-position:-33px -282px} +#lists{width:2000px;-moz-transition:none;-webkit-transition:none;-o-transition:none;-ms-transition:none;transition:none;} +#achievements.page1 #lists{left:0;} +#achievements.page2 #lists{left:-392px;} +#achievements.page3 #lists{left:-784px;} +#achievements.page4 #lists{left:-1176px;} +#achievements.page5 #lists{left:-1568px;} +#achievements-count{margin:6px 24px 0 0;} +#achievement-notification,#achievement-notification .coin,#coinsparks{background-size:832px;} +#achievement-notification,.upscaled #achievement-notification{width:432px;bottom:34px;height:0;margin-left:-216px;background-position:0 -496px;} +#achievement-notification.active{height:68px;} +#achievement-notification .coin{position:absolute;top:-40px;left:50%;margin-left:-24px;opacity:0;} +#achievement-notification.active .coin{opacity:1;} +#achievement-notification.active #coinsparks{display:none;} +#achievement-notification .title{color:#fce045;font-size:14px;margin:18px 0 6px 0;} +#achievement-notification .name{color:#eee;font-size:20px;margin:6px 0;} +#achievements li.unlocked .achievement-sharing{display:block;} +} \ No newline at end of file diff --git a/public_html/browserquest/css/ie.css b/public_html/browserquest/css/ie.css new file mode 100644 index 0000000..36ba584 --- /dev/null +++ b/public_html/browserquest/css/ie.css @@ -0,0 +1,3 @@ +#container{display:none;} +body{background:url('../img/2/wood.png') repeat;} +.no-opacity #credits,.no-opacity #loadcharacter,.no-opacity #createcharacter,.no-opacity #death,.no-opacity #confirmation,.no-opacity #about{display:none;} diff --git a/public_html/browserquest/css/main.css b/public_html/browserquest/css/main.css new file mode 100644 index 0000000..62049dc --- /dev/null +++ b/public_html/browserquest/css/main.css @@ -0,0 +1,976 @@ +html,body,div,span,applet,object,iframe, +h1,h2,h3,h4,h5,h6,p,blockquote,pre, +a,abbr,acronym,address,big,cite,code, +del,dfn,em,font,img,ins,kbd,q,s,samp, +small,strike,strong,sub,sup,tt,var, +b,u,i,center, +dl,dt,dd,ol,ul,li, +fieldset,form,label,legend, +table,caption,tbody,tfoot,thead,tr,th,td{ +margin:0; +padding:0; +border:0; +outline:0; +font-size:100%; +vertical-align:baseline; +background:transparent; +} +body{ +line-height:1; +} +ol,ul{ +list-style:none; +} +blockquote,q{ +quotes:none; +} +blockquote:before,blockquote:after, +q:before,q:after{ +content:''; +content:none; +} +:focus{ +outline:0; +} +ins{ +text-decoration:none; +} +del{ +text-decoration:line-through; +} +table{ +border-collapse:collapse; +border-spacing:0; +} +article,aside,details,figcaption,figure, +footer,header,hgroup,menu,nav,section{ +display:block; +} +@font-face{ +font-family:'GraphicPixel'; +src:url('../fonts/graphicpixel-webfont.eot'); +src:url('../fonts/graphicpixel-webfont.eot?#iefix') format('embedded-opentype'), +url('../fonts/graphicpixel-webfont.woff') format('woff'), +url('../fonts/graphicpixel-webfont.ttf') format('truetype'), +url('../fonts/graphicpixel-webfont.svg#GraphicPixelRegular') format('svg'); +font-weight:normal; +font-style:normal; +} +@font-face{ +font-family:'AdvoCut'; +src:url('../fonts/advocut-webfont.eot'); +src:url('../fonts/advocut-webfont.eot?#iefix') format('embedded-opentype'), +url('../fonts/advocut-webfont.woff') format('woff'), +url('../fonts/advocut-webfont.ttf') format('truetype'), +url('../fonts/advocut-webfont.svg#AndinaRegular') format('svg'); +font-weight:normal; +font-style:normal; +} +.gp{font-family:'GraphicPixel',sans-serif;} +html{-webkit-text-size-adjust:100%} +html,body{height:100%;} +body{padding:0;margin:0;background:#111;overflow:hidden;image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;border-top:2px solid #707070;} +canvas{position:absolute;image-rendering:optimizeSpeed;} +#background{background:url('../img/common/loading.png') no-repeat center center,#000;} +.error #background{background:url('../img/common/loading-error.png') no-repeat center center,#000;} +#background,#foreground{margin:0;padding:0;} +#achievements nav::selection{background:transparent;text-decoration:none;color:transparent;} +#canvas,#bar-container,#bubbles,#chatbox,#canvasborder,#foreground,#background,footer,#container,#achievement-notification{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-ms-user-select:none;} +.started #canvas{cursor:none;} +#foreground{ +-webkit-tap-highlight-color:rgba(0,0,0,0); +} +@media screen and (max-width:600px){ +#entities{ +cursor:default; +} +} +h1{font-weight:normal;} +.preload{display:none;} +body.upscaled.game{background:#000;} +.game #logo{display:none;-moz-animation:none;-webkit-animation:none;-o-animation:none;-ms-animation:none;animation:none;} +#logo,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon,#tilt,.parchment-left,.parchment-middle,.parchment-right,.avatar,.facebook,.twitter,.close,#note,.ribbon .top,.ribbon .bottom,#about .img,.ext-link{background:url('../img/1/spritesheet.png');image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;} +#moztab{height:49px;width:118px;position:fixed;top:0;right:15%;background:url('../img/1/spritesheet.png') no-repeat -229px -204px;display:block;} +#vignetting{height:100%;width:100%;position:absolute;top:0;left:0;pointer-events:none;} +#logosparks{display:block;position:absolute;top:0;left:0;} +#parchment,#parchment input{font-family:'GraphicPixel';} +#parchment input{width:50%;background:rgba(0,0,0,0.05);text-align:center;-moz-animation:glow 0.5s linear infinite alternate;-webkit-animation:glow 0.5s linear infinite alternate;-o-animation:glow 0.5s linear infinite alternate;-ms-animation:glow 0.5s linear infinite alternate;color:#eee;} +#parchment input:focus{-moz-animation:none;-webkit-animation:none;-o-animation:none;-ms-animation:none;animation:none;color:#fff;background:rgba(0,0,0,0.1);border-color:rgba(0,0,0,0.3);} +#character div{-moz-transition:0.4s opacity linear;-webkit-transition:0.4s opacity linear;-o-transition:0.4s opacity linear;-ms-transition:0.4s opacity linear;transition:0.4s opacity linear;} +.play div{position:absolute;top:0;left:0;opacity:1;-moz-transition:0.4s linear opacity;-webkit-transition:0.4s linear opacity;-o-transition:0.4s linear opacity;-ms-transition:0.4s linear opacity;transition:0.4s linear opacity} +.play.disabled div{opacity:0;pointer-events:none;} +.play img{display:none;} +.play.loading img{display:block;position:absolute;top:54%;left:50%;} +#mask{height:100%;width:100%;position:fixed;top:0;left:0;background:rgba(20,20,20,1);opacity:1;z-index:20;-moz-transition:0.5s opacity linear;-webkit-transition:0.5s opacity linear;-o-transition:0.5s opacity linear;-ms-transition:0.5s opacity linear;transition:0.5s opacity linear;pointer-events:none;} +#bar-container{background:url('../img/1/barsheet.png');image-rendering:-moz-crisp-edges;position:relative;width:100%;z-index:10;} +#healthbar{background:url('../img/1/barsheet.png');image-rendering:-moz-crisp-edges;position:absolute;} +#hitpoints{background:#d83939;-moz-transition:.5s width ease;-webkit-transition:.5s width ease;-o-transition:.5s width ease;-ms-transition:.5s width ease;transition:.5s width ease;} +#hitpoints.white{-moz-animation:flash 0.5s linear 1;-webkit-animation:flash 0.5s linear 1;-o-animation:flash 0.5s linear 1;-ms-animation:flash 0.5s linear 1;animation:flash 0.5s linear 1;} +#hitpoints.invincible{-moz-animation:invincible 0.3s steps(3,end) alternate infinite;-webkit-animation:invincible 0.3s steps(3,end) alternate infinite;-o-animation:invincible 0.3s steps(3,end) alternate infinite;-ms-animation:invincible 0.3s steps(3,end) alternate infinite;} +#notifications{position:absolute;left:50%;text-align:center;font-family:'GraphicPixel';overflow:hidden;} +#notifications div{position:absolute;-moz-transition:none;-webkit-transition:none;top:0;width:100%;} +#notifications div.top{-moz-transition:0.5s top ease;-webkit-transition:0.5s top ease;-o-transition:0.5s top ease;-ms-transition:0.5s top ease;transition:0.5s top ease;} +#notifications div.top #message1{opacity:0;-moz-transition:0.2s opacity linear;-webkit-transition:0.2s opacity linear;-o-transition:0.2s opacity linear;-ms-transition:0.2s opacity linear;transition:0.2s opacity linear;} +#notifications span{display:block;text-align:center;width:100%;opacity:1;-moz-user-select:none;-webkit-user-select:none;} +#playercount{font-family:'GraphicPixel';color:#e3e3e3;position:absolute;} +#playercount:hover{cursor:pointer;color:#FCE045;} +#population{background:url('../img/1/barsheet.png');image-rendering:-moz-crisp-edges;position:absolute;font-family:'GraphicPixel';color:#fff;text-align:center;opacity:0;pointer-events:none;-moz-transition:0.2s opacity linear,0.2s height ease;-webkit-transition:0.2s opacity linear,0.2s height ease;-o-transition:0.2s opacity linear,0.2s height ease;-ms-transition:0.2s opacity linear,0.2s height ease;transition:0.2s opacity linear,0.2s height ease;height:0;overflow:hidden;} +#population span:nth-child(1){color:#FCE045;} +#population.visible{opacity:1;pointer-events:auto;} +.barbutton{background:url('../img/1/barsheet.png');image-rendering:-moz-crispt-edges;position:absolute;} +#chatbox{background:url('../img/1/barsheet.png');image-rendering:-moz-crisp-edges;position:absolute;left:50%;z-index:5;-moz-transition:0.2s bottom ease;-webkit-transition:0.2s bottom ease;-o-transition:0.2s bottom ease;-ms-transition:0.2s bottom ease;transition:0.2s bottom ease;} +.bubble p{-moz-user-select:none;-webkit-user-select:none;} +#instructions{position:absolute;top:50%;left:50%;z-index:1000;font-family:'GraphicPixel';pointer-events:none;opacity:0;-moz-transition:0.25s opacity linear;-webkit-transition:0.4s top ease,0.4s opacity linear;-o-transition:0.4s top ease,0.4s opacity linear;-ms-transition:0.4s top ease,0.4s opacity linear;transition:0.4s top ease,0.4s opacity linear;} +#instructions.active,#achievements.active{opacity:1;pointer-events:auto;} +#weapon,#armor{image-rendering:-moz-crisp-edges;} +#achievements,#achievements li,.coin,#achievement-notification,#coinsparks,.achievement-sharing a,#previous,#next{background:url('../img/1/achievements.png');image-rendering:-moz-crisp-edges;} +#achievements{font-family:'GraphicPixel';position:absolute;top:50%;left:50%;z-index:1000;opacity:0;pointer-events:none;-moz-transition:0.25s opacity linear;-webkit-transition:0.4s top ease,0.4s opacity linear;-o-transition:0.4s top ease,0.4s opacity linear;-ms-transition:0.4s top ease,0.4s opacity linear;transition:0.4s top ease,0.4s opacity linear;} +#achievements li{clear:both;position:relative;} +#achievements li .coin,#achievements li .achievement-name{float:left;} +#achievements li .coin{opacity:0;} +#achievements li.unlocked .achievement-name{color:#fce045;} +#achievements li.unlocked .coin{opacity:1;} +#achievements .achievement-name{color:#fff;} +#achievements .achievement-description{float:right;width:65%;} +#achievement-notification{position:absolute;z-index:8;bottom:0;left:50%;text-align:center;font-family:'GraphicPixel';pointer-events:none;-moz-transition:0.3s height ease;-webkit-transition:0.3s height ease;-o-transition:0.3s height ease;-ms-transition:0.3s height ease;} +#achievement-notification .name,#achievement-notification .title{opacity:0;-moz-transition:0.3s opacity linear;-webkit-transition:0.3s opacity linear;-o-transition:0.3s opacity linear;-ms-transition:0.3s opacity linear;transition:0.3s opacity linear;} +#achievement-notification.active .name,#achievement-notification.active .title{opacity:1;} +#achievement-info{overflow:hidden;height:100%;} +.achievement-sharing{position:absolute;display:none;} +#achievements li.unlocked:hover .achievement-sharing{display:block;} +.achievement-sharing a{display:block;float:left;} +#bubbles a{pointer-events:auto;text-decoration:none;color:#fcda5c;} +#create-new span:hover,#cancel span:hover{cursor:pointer;color:#d83939;} +#create-new span span{color:#b2af9b;} +#create-new span span:hover{color:#b2af9b;} +#playername{color:#fff;} +#credits,#loadcharacter,#confirmation,#death,#error,#about{position:absolute;left:50%;text-align:center;font-family:'GraphicPixel',sans-serif;z-index:1000;} +#playerimage{image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;} +#parchment p{font-family:'GraphicPixel';} +#credits,#death,#about{top:50%;} +.intro #credits,.intro #about{top:55%;} +#credits h1 a{color:#fcda5c;text-decoration:none;} +#authors div a{display:block;color:#fff;text-decoration:none;} +#authors div a:hover,#credits h1 a:hover{color:#93C1FF;} +#seb{clear:both;} +#portrait{display:none;} +#about .link a:hover{color:#d83939;} +footer{font-family:'GraphicPixel';position:absolute;bottom:5%;left:0;text-align:center;width:100%;color:#c6c0a3;-moz-transition:0.2s opacity linear;-webkit-transition:0.2s opacity linear;-o-transition:0.2s opacity linear;-ms-transition:0.2s opacity linear;transition:0.2s opacity linear;} +.upscaled.game footer{color:#8a8a8a;} +.intro footer{opacity:1;} +footer:hover{opacity:1;} +footer div{display:inline-block;} +#sharing a{display:block;float:right;background-size:844px;position:relative;top:-2px;} +#sharing .facebook{height:22px;width:22px;background-position:-822px -224px;margin:0 12px 0 12px;} +#sharing .facebook:hover{background-position:-822px -224px;} +#sharing .twitter{height:22px;width:32px;background-position:-770px -224px;margin:0 12px 0 0;} +#sharing .twitter:hover{background-position:-770px -224px;} +#sharing .gplus{height:22px;width:22px;background:url('../img/common/gplus.png');margin:0 12px 0 0px;} +#credits-link span{display:inline-block;margin-left:12px;} +#credits-link span:hover{color:#fcda5c;cursor:pointer;} +#sharing a:hover{-moz-transform:scale(1.2);-webkit-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2);} +#sharing a:active{-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1);} +.close{position:absolute;z-index:20000;} +.close:hover{cursor:pointer;} +.ribbon{position:absolute;} +.ribbon:hover{cursor:pointer;} +.ribbon .top{-moz-transition:0.25s height ease;-webkit-transition:0.25s height ease;-o-transition:0.25s height ease;-ms-transition:0.25s height ease;transition:0.25s height ease;} +.bubble{background:rgba(45,45,45,0.8);padding:0px 12px 0px 12px;border-radius:8px;color:rgba(255,255,255,0.8);display:inline-block;text-align:center;position:absolute;} +.thingy{height:10px;width:11px;background:url('../img/common/thingy.png');margin:0 auto;margin-top:-10px;top:10px;position:relative;} +.alert{height:50px;background:#d83939;width:100%;color:#eee;font-size:20px;font-family:'GraphicPixel',arial,sans-serif;text-align:center;line-height:50px;border-bottom:1px solid #000;} +#instructions,#achievements,#lists,#about,#credits,.ribbon,.play,.play div,.barbutton{-webkit-tap-highlight-color:transparent;} +#nameinput::-webkit-input-placeholder{color:#fff;} +#resize-check{position:absolute;height:0;top:0;left:0;-moz-transition:0.001s height ease;-webkit-transition:0.001s height ease;-o-transition:0.001s height ease;-ms-transition:0.001s height ease;transition:0.001s height ease;} +#death p em{display:block;font-style:normal;} +.parchment-left{position:absolute;top:0;left:0%;} +.parchment-right{position:absolute;top:0;right:0%;} +.parchment-middle{position:absolute;left:50%;top:0;} +.animate .parchment-left{-moz-animation:parchleft 1s ease 1;-webkit-animation:parchleft 1s ease 1;-o-animation:parchleft 1s ease 1;-ms-animation:parchleft 1s ease 1;animation:parchleft 1s ease 1;} +.animate .parchment-right{-moz-animation:parchright 1s ease 1;-webkit-animation:parchright 1s ease 1;-o-animation:parchright 1s ease 1;-ms-animation:parchright 1s ease 1;animation:parchright 1s ease 1;} +#credits,#createcharacter,#loadcharacter,#confirmation,#death,#error,#about{opacity:0;pointer-events:none;-moz-transition:none;-webkit-transition:none;-o-transition:none;-ms-transition:none;transition:none;} +.credits #credits,.createcharacter #createcharacter,.loadcharacter #loadcharacter,.confirmation #confirmation,.death #death,.error #error,.about #about{opacity:1;pointer-events:auto;-moz-transition:0.5s opacity linear;-webkit-transition:0.5s opacity linear;-o-transition:0.5s opacity linear;-ms-transition:0.5s opacity linear;transition:0.5s opacity linear;} +#intro{-moz-transition:0.4s opacity linear;-webkit-transition:0.4s opacity linear;-o-transition:0.4s opacity linear;-ms-transition:0.4s opacity linear;transition:0.4s opacity linear;} +#mask,#logo,#parchment{opacity:0;} +.intro #logo,.intro #parchment{opacity:1;} +.game #confirmation,.game #loadcharacter,.game #createcharacter,.game #error{display:none;} +.game #parchment{z-index:0;-moz-transition:0.5s opacity linear 0.5s,0s z-index linear 1s;-webkit-transition:0.5s opacity linear 0.5s,0s z-index linear 1s;-o-transition:0.5s opacity linear 0.5s,0s z-index linear 1s;-ms-transition:0.5s opacity linear 0.5s,0s z-index linear 1s;transition:0.5s opacity linear 0.5s,0s z-index linear 1s;top:50%;} +.game #credits,.game #death,.game #about{opacity:0;-moz-transition:0s opacity linear 0s;-webkit-transition:0s opacity linear 0s;-o-transition:0s opacity linear 0s;-ms-transition:0s opacity linear 0s;transition:0s opacity linear 0s;} +.game.credits #credits,.game.death #death,.game.about #about{opacity:1;-moz-transition:0.5s opacity linear 0.5s;-webkit-transition:0.5s opacity linear 0.5s;-o-transition:0.5s opacity linear 0.5s;-ms-transition:0.5s opacity linear 0.5s;transition:0.5s opacity linear 0.5s;} +.game.credits #parchment,.game.death #parchment,.game.about #parchment{opacity:1;-moz-transition:0.5s opacity linear 0s,0s z-index linear 0s;-webkit-transition:0.5s opacity linear 0s,0s z-index linear 0s;-o-transition:0.5s opacity linear 0s,0s z-index linear 0s;-ms-transition:0.5s opacity linear 0s,0s z-index linear 0s;transition:0.5s opacity linear 0s,0s z-index linear 0s;z-index:200;} +.game .parchment-left{-moz-transition:0.5s left ease;-webkit-transition:0.5s left ease;-o-transition:0.5s left ease;-ms-transition:0.5s left ease;transition:0.5s left ease;left:41%;} +.game .parchment-right{-moz-transition:0.5s right ease;-webkit-transition:0.5s right ease;-o-transition:0.5s right ease;-ms-transition:0.5s right ease;transition:0.5s right ease;right:41%;} +.game .parchment-middle{-moz-transition:0.5s width ease,0.5s margin-left ease,0.5s background-position ease;-webkit-transition:0.5s width ease,0.5s margin-left ease,0.5s background-position ease;-o-transition:0.5s width ease,0.5s margin-left ease,0.5s background-position ease;-ms-transition:0.5s width ease,0.5s margin-left ease,0.5s background-position ease;transition:0.5s width ease,0.5s margin-left ease,0.5s background-position ease;width:0px;margin-left:0px;} +.game.credits .parchment-left,.game.death .parchment-left,.game.about .parchment-left{left:0%;} +.game.credits .parchment-right,.game.death .parchment-right,.game.about .parchment-right{right:0%;} +#container{z-index:100;background:rgba(0,0,0,0.2);-moz-transition:1s opacity linear 0.5s;-webkit-transition:1s opacity linear 0.5s;-o-transition:1s opacity linear 0.5s;-ms-transition:1s opacity linear 0.5s;transition:1s opacity linear 0.5s;} +.intro #container{opacity:0;pointer-events:none;} +.game #container{opacity:1;} +#logo,#parchment{-moz-transition:0.5s opacity linear;-webkit-transition:0.5s opacity linear;-o-transition:0.5s opacity linear;-ms-transition:0.5s opacity linear;transition:0.5s opacity linear;} +@-moz-keyframes flash{0%{background:#ffa2a2;}100%{background:#e22525;}} +@-webkit-keyframes flash{0%{background:#ffa2a2;}100%{background:#e22525;}} +@-o-keyframes flash{0%{background:#ffa2a2;}100%{background:#e22525;}} +@-ms-keyframes flash{0%{background:#ffa2a2;}100%{background:#e22525;}} +@-moz-keyframes glow{from{color:#fcda5c;}to{color:#fff;}} +@-webkit-keyframes glow{from{color:#fcda5c;}to{color:#fff;}} +@-o-keyframes glow{from{color:#fcda5c;}to{color:#fff;}} +@-ms-keyframes glow{from{color:#fcda5c;}to{color:#fff;}} +@-moz-keyframes logo1{from{background-position:0 -42px;}to{background-position:0 -294px;}} +@-webkit-keyframes logo1{from{background-position:0 -42px;}to{background-position:0 -294px;}} +@-o-keyframes logo1{from{background-position:0 -42px;}to{background-position:0 -294px;}} +@-ms-keyframes logo1{from{background-position:0 -42px;}to{background-position:0 -294px;}} +@-moz-keyframes logo2{from{background-position:0 -84px;}to{background-position:0 -588px;}} +@-webkit-keyframes logo2{from{background-position:0 -84px;}to{background-position:0 -588px;}} +@-o-keyframes logo2{from{background-position:0 -84px;}to{background-position:0 -588px;}} +@-ms-keyframes logo2{from{background-position:0 -84px;}to{background-position:0 -588px;}} +@-moz-keyframes logo3{from{background-position:0 -126px;}to{background-position:0 -882px;}} +@-webkit-keyframes logo3{from{background-position:0 -126px;}to{background-position:0 -882px;}} +@-o-keyframes logo3{from{background-position:0 -126px;}to{background-position:0 -882px;}} +@-ms-keyframes logo3{from{background-position:0 -126px;}to{background-position:0 -882px;}} +@-moz-keyframes parchleft{0%{left:0%;}45%{left:41%;}55%{left:41%;}100%{left:0%;}} +@-webkit-keyframes parchleft{0%{left:0%;}45%{left:41%;}55%{left:41%;}100%{left:0%;}} +@-o-keyframes parchleft{0%{left:0%;}45%{left:41%;}55%{left:41%;}100%{left:0%;}} +@-ms-keyframes parchleft{0%{left:0%;}45%{left:41%;}55%{left:41%;}100%{left:0%;}} +@-moz-keyframes parchright{0%{right:0%;}45%{right:41%;}55%{right:41%;}100%{right:0%;}} +@-webkit-keyframes parchright{0%{right:0%;}45%{right:41%;}55%{right:41%;}100%{right:0%;}} +@-o-keyframes parchright{0%{right:0%;}45%{right:41%;}55%{right:41%;}100%{right:0%;}} +@-ms-keyframes parchright{0%{right:0%;}45%{right:41%;}55%{right:41%;}100%{right:0%;}} +@-moz-keyframes parchmiddle3{ +0%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +45%{width:0px;margin-left:0px;background-position:-633px -882px;} +55%{width:0px;margin-left:0px;background-position:-633px -882px;} +100%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +} +@-webkit-keyframes parchmiddle3{ +0%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +45%{width:0px;margin-left:0px;background-position:-633px -882px;} +55%{width:0px;margin-left:0px;background-position:-633px -882px;} +100%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +} +@-o-keyframes parchmiddle3{ +0%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +45%{width:0px;margin-left:0px;background-position:-633px -882px;} +55%{width:0px;margin-left:0px;background-position:-633px -882px;} +100%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +} +@-ms-keyframes parchmiddle3{ +0%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +45%{width:0px;margin-left:0px;background-position:-633px -882px;} +55%{width:0px;margin-left:0px;background-position:-633px -882px;} +100%{width:1038px;margin-left:-519px;background-position:-114px -882px;} +} +@-moz-keyframes parchmiddle2{ +0%{width:692px;margin-left:-346px;background-position:-76px -588px;} +45%{width:0px;margin-left:0px;background-position:-422px -588px;} +55%{width:0px;margin-left:0px;background-position:-422px -588px;} +100%{width:692px;margin-left:-346px;background-position:-76px -588px;} +} +@-webkit-keyframes parchmiddle2{ +0%{width:692px;margin-left:-346px;background-position:-76px -588px;} +45%{width:0px;margin-left:0px;background-position:-422px -588px;} +55%{width:0px;margin-left:0px;background-position:-422px -588px;} +100%{width:692px;margin-left:-346px;background-position:-76px -588px;} +} +@-o-keyframes parchmiddle2{ +0%{width:692px;margin-left:-346px;background-position:-76px -588px;} +45%{width:0px;margin-left:0px;background-position:-422px -588px;} +55%{width:0px;margin-left:0px;background-position:-422px -588px;} +100%{width:692px;margin-left:-346px;background-position:-76px -588px;} +} +@-ms-keyframes parchmiddle2{ +0%{width:692px;margin-left:-346px;background-position:-76px -588px;} +45%{width:0px;margin-left:0px;background-position:-422px -588px;} +55%{width:0px;margin-left:0px;background-position:-422px -588px;} +100%{width:692px;margin-left:-346px;background-position:-76px -588px;} +} +@-moz-keyframes parchmiddle1{ +0%{width:346px;margin-left:-173px;background-position:-38px -294px;} +45%{width:0px;margin-left:0px;background-position:-211px -294px;} +55%{width:0px;margin-left:0px;background-position:-211px -294px;} +100%{width:346px;margin-left:-173px;background-position:-38px -294px;} +} +@-webkit-keyframes parchmiddle1{ +0%{width:346px;margin-left:-173px;background-position:-38px -294px;} +45%{width:0px;margin-left:0px;background-position:-211px -294px;} +55%{width:0px;margin-left:0px;background-position:-211px -294px;} +100%{width:346px;margin-left:-173px;background-position:-38px -294px;} +} +@-o-keyframes parchmiddle1{ +0%{width:346px;margin-left:-173px;background-position:-38px -294px;} +45%{width:0px;margin-left:0px;background-position:-211px -294px;} +55%{width:0px;margin-left:0px;background-position:-211px -294px;} +100%{width:346px;margin-left:-173px;background-position:-38px -294px;} +} +@-ms-keyframes parchmiddle1{ +0%{width:346px;margin-left:-173px;background-position:-38px -294px;} +45%{width:0px;margin-left:0px;background-position:-211px -294px;} +55%{width:0px;margin-left:0px;background-position:-211px -294px;} +100%{width:346px;margin-left:-173px;background-position:-38px -294px;} +} +@-moz-keyframes coinsparks1{from{background-position:-216px -248px;}to{background-position:-360px -248px;}} +@-webkit-keyframes coinsparks1{from{background-position:-216px -248px;}to{background-position:-360px -248px;}} +@-o-keyframes coinsparks1{from{background-position:-216px -248px;}to{background-position:-360px -248px;}} +@-ms-keyframes coinsparks1{from{background-position:-216px -248px;}to{background-position:-360px -248px;}} +@-moz-keyframes coinsparks2{from{background-position:-432px -496px;}to{background-position:-720px -496px;}} +@-webkit-keyframes coinsparks2{from{background-position:-432px -496px;}to{background-position:-720px -496px;}} +@-o-keyframes coinsparks2{from{background-position:-432px -496px;}to{background-position:-720px -496px;}} +@-ms-keyframes coinsparks2{from{background-position:-432px -496px;}to{background-position:-720px -496px;}} +@-moz-keyframes coinsparks3{from{background-position:-648px -744px;}to{background-position:-1080px -744px;}} +@-webkit-keyframes coinsparks3{from{background-position:-648px -744px;}to{background-position:-1080px -744px;}} +@-o-keyframes coinsparks3{from{background-position:-648px -744px;}to{background-position:-1080px -744px;}} +@-ms-keyframes coinsparks3{from{background-position:-648px -744px;}to{background-position:-1080px -744px;}} +@-moz-keyframes invincible{from{background:#fa6a00;}to{background:#fabc00;}} +@-webkit-keyframes invincible{from{background:#fa6a00;}to{background:#fabc00;}} +@-o-keyframes invincible{from{background:#fa6a00;}to{background:#fabc00;}} +@-ms-keyframes invincible{from{background:#fa6a00;}to{background:#fabc00;}} +@media screen and (min-width:1501px){ +.upscaled #logo,.upscaled #logosparks,.upscaled .left-ornament,.upscaled .right-ornament,.upscaled #character,.upscaled #character div,.upscaled .button,.upscaled .button div,.upscaled #respawn,.upscaled #scroll,.upscaled #instructions,.upscaled .icon,.upscaled #tilt,.upscaled .parchment-left,.upscaled .parchment-middle,.upscaled .parchment-right,.upscaled .avatar,.upscaled .facebook,.upscaled .twitter,.upscaled .close,.upscaled .ribbon .top,.upscaled .ribbon .bottom,.upscaled #about .img,.upscaled .ext-link{background-image:url('../img/3/spritesheet.png');} +.upscaled #bar-container,.upscaled #healthbar,.upscaled .barbutton,.upscaled #chatbox,.upscaled #population{background-image:url('../img/3/barsheet.png');} +.upscaled #achievements,.upscaled #achievements li,.upscaled .coin,.upscaled #achievement-notification,.upscaled #coinsparks,.upscaled .achievement-sharing a,.upscaled #previous,.upscaled #next{background:url('../img/3/achievements.png');} +body{background:-moz-radial-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1) 125%),url('../img/1/wood2.png') no-repeat 1587px 138px,url('../img/1/wood2.png') no-repeat 51px 519px,url('../img/1/wood3.png') no-repeat 228px 219px,url('../img/1/wood.png') repeat,#000;background-size:auto,15px auto,15px auto,60px auto,384px;} +body{background:-webkit-gradient(radial,center center,360,center center,1200,from(rgba(0,0,0,0)),to(rgba(0,0,0,1))),url('../img/3/wood2.png') no-repeat 1587px 138px,url('../img/3/wood2.png') no-repeat 51px 519px,url('../img/3/wood3.png') no-repeat 228px 219px,url('../img/3/wood.png') repeat,#000;background-size:auto,15px auto,15px auto,60px auto,384px;} +#logo,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon,.avatar,.close,#note,.ribbon .top,.ribbon .bottom,#about .img,.ext-link{background-size:1266px auto;} +#logo{height:126px;width:687px;position:absolute;top:10%;left:50%;margin-left:-344px;z-index:3;} +#logosparks{width:687px;height:126px;z-index:4;-moz-animation:logo3 .8s steps(6,end) infinite;-webkit-animation:logo3 .8s steps(6,end) infinite;-o-animation:logo3 .8s steps(6,end) infinite;-ms-animation:logo3 .8s steps(6,end) infinite;} +#parchment,#loadcharacter,#confirmation,#error{width:1266px;height:546px;position:absolute;top:55%;left:50%;margin-left:-633px;margin-top:-273px;font-size:30px;text-align:center;z-index:2;} +#parchment h1{margin-top:60px;font-weight:normal;} +.left-ornament,.right-ornament{height:36px;width:93px;display:inline-block;margin:0 20px;position:relative;top:12px;} +.left-ornament{background-position:-1062px 0;} +.right-ornament{background-position:-1155px 0;} +#character{height:63px;width:36px;margin:0 auto;background-position:-1062px -36px;margin-top:45px;position:relative;} +#character div{height:63px;width:36px;position:absolute;top:0;left:0;background-position:-1098px -36px;opacity:1;} +#character.disabled div{opacity:0;pointer-events:none;} +#parchment input{margin-top:30px;padding:0 15px;border:3px dashed #b2af9b;font-size:30px;border-radius:9px;height:61px;} +.button{height:153px;width:375px;background-position:-687px -306px;margin:30px auto 0 auto;position:relative;} +.play div{height:153px;width:375px;background-position:-687px 0px;} +.play div:active{background-position:-687px -459px;} +.play.loading div{background-position:-681px -2178px;} +.play.loading img{margin-top:-16px;margin-left:-16px;height:32px;width:32px;} +.stroke,.achievement-name{text-shadow:3px 3px 0 #373737,3px -3px 0 #373737,0 3px 0 #373737,3px 0 0 #373737,-3px 3px 0 #373737,-3px -3px 0 #373737,0 -3px 0 #373737,0 3px 0 #373737,-3px 0 0 #373737;} +#loadcharacter h1,#confirmation h1,#error h1{margin-top:30px;} +#playername{margin-top:15px;} +.loadcharacter .play,.confirmation .delete{margin:15px auto 15px auto;} +#confirmation p,#error p{font-size:30px;margin-top:60px;line-height:40px;} +#error p{width:70%;margin:60px auto 0;} +.button.delete{background-position:-687px -153px;} +.button.delete:active{background-position:0 -2178px;} +#container{width:1470px;margin:0 auto;position:absolute;top:50%;margin-top:-378px;left:50%;margin-left:-735px;} +#canvasborder{padding:15px;background:url('../img/3/border.png') no-repeat;} +#canvas{width:100%;height:672px;} +#fade{width:1440px;height:672px;top:15px;left:15px;} +#instructions{height:516px;width:1251px;background-position:0 -1581px;margin-left:-624px;margin-top:-279px;color:#373737;} +#instructions h1{font-size:40px;text-align:center;margin:50px 0;} +#instructions ul{font-size:30px;margin-top:30px;} +#instructions ul li{margin:20px 0;clear:left;} +#instructions li:nth-child(1) span{height:87px;width:45px;background-position:-1134px -36px;display:block;float:left;margin:0 30px 9px 60px;position:relative;top:-39px;} +#instructions li:nth-child(2) span{height:48px;width:39px;background-position:-1179px -36px;display:block;float:left;margin:0 36px 42px 60px;position:relative;top:-9px;} +#instructions li:nth-child(3) span{height:63px;width:48px;background-position:-1218px -36px;display:block;float:left;margin:0 27px 0 60px;position:relative;top:-18px;} +#instructions p{text-align:center;font-family:'GraphicPixel';font-size:20px;clear:left;margin-top:50px;} +#playerimage{height:96px;width:96px;} +.close{height:48px;width:48px;top:-12px;right:-15px;background-position:-1062px -378px;} +.close:hover{background-position:-1110px -378px;} +.close:active{background-position:-1158px -378px;} +.ribbon{width:54px;right:30px;top:12px;} +.ribbon .top{width:100%;height:18px;background-position:-1143px -516px;} +.ribbon .bottom{width:100%;height:66px;background-position:-1143px -555px;} +.ribbon:hover .top{height:30px;} +.ribbon:hover .bottom{background-position:-1197px -555px;} +#createcharacter .ribbon{right:30px;top:12px;} +#loadcharacter .ribbon{right:148px;top:-13px;} +#death p{font-size:30px;margin-top:140px;} +#death p em{margin-top:50px;} +#respawn{width:375px;height:153px;margin:60px auto 0 auto;background-position:0 -1428px;} +#respawn:active{background-position:-375px -1428px;} +#bubbles{width:1440px;height:672px;margin-bottom:-672px;position:relative;top:-672px;pointer-events:none;} +p{font-family:arial,sans-serif;font-size:12px;margin:0;padding:12px 0} +.bubble p{font-family:"GraphicPixel";font-size:18px;line-height:24px;} +#bar-container{height:51px;top:-3px;background-size:1440px;} +#healthbar{height:39px;background-position:0 -51px;width:306px;top:9px;background-size:1440px;z-index:20;} +#hitpoints{width:0px;height:33px;top:12px;left:33px;z-index:10;position:absolute;} +#armor,#weapon{width:48px;height:48px;position:absolute;background-size:288px;background-position:-96px;} +#weapon{left:312px;top:3px;background-size:288px;} +#armor{left:363px;top:3px;} +#notifications{width:588px;margin-left:-294px;font-size:20px;color:#eee;top:6px;height:45px;} +#notifications div.top{top:-45px;} +#notifications span{line-height:45px;height:45px;} +#playercount{font-size:20px;left:1076px;top:18px;width:172px;text-align:center;} +#population{background-size:1440px;right:105px;bottom:66px;width:393px;background-position:-720px -144px;font-size:20px;line-height:30px;} +#population.visible{height:96px;} +#instance-population{padding-top:18px;} +.barbutton{background-size:1440px;height:45px;width:42px;} +#chatbutton{background-position:-306px -51px;top:3px;left:1260px;} +#chatbutton:hover{background-position:-348px -51px;} +#chatbutton.active{background-position:-390px -51px;} +#achievementsbutton{background-position:-432px -51px;top:3px;left:1305px;} +#achievementsbutton:hover,#achievementsbutton.blink:hover{background-position:-474px -51px;} +#achievementsbutton.blink{background-position:-864px -51px;} +#achievementsbutton.active{background-position:-516px -51px;} +#helpbutton{background-position:-558px -51px;top:3px;left:1350px;} +#helpbutton:hover{background-position:-600px -51px;} +#helpbutton.active{background-position:-642px -51px;} +#mutebutton{background-position:-684px -51px;top:3px;left:1395px;} +#mutebutton:hover{background-position:-726px -51px;} +#mutebutton.active{background-position:-768px -51px;} +#chatbox{height:48px;width:1182px;background-size:1440px;background-position:0 -96px;margin-left:-591px;bottom:18px;} +#chatbox.active{bottom:66px;} +#chatbox input{font-size:20px;color:#eee;background:none;width:90%;border:0;margin-left:2%;padding:16px 0;} +#credits,#death,#about{width:1266px;height:546px;margin-left:-633px;margin-top:-273px;font-size:30px;} +.parchment-left,.parchment-right,.parchment-middle{background-size:1266px;} +.parchment-left{width:114px;height:546px;background-position:0 -882px;} +.parchment-right{width:114px;height:546px;background-position:-1152px -882px;} +.parchment-middle{height:546px;background-position:-114px -882px;width:1038px;margin-left:-519px;} +#credits h1,#about h1{margin-top:35px;font-weight:normal;} +#credits h1 a{font-size:36px;} +.game #credits h1,.game #about h1{margin-top:52px;} +#credits h1 span.title{max-width:300px;display:inline-block;line-height:39px;margin-top:-90px;position:relative;top:36px;} +#authors{clear:both;margin-top:100px;} +#guillaume,#franck{width:47%;line-height:36px;} +#guillaume{float:left;text-align:right;} +#franck{float:right;text-align:left;} +.avatar{height:75px;width:39px;} +#guillaume .avatar{float:right;background-position:-1062px -303px;margin-left:60px;} +#franck .avatar{float:left;background-position:-1101px -303px;margin-right:60px;} +#seb{margin:270px auto 0 auto;width:54%;color:#373737;font-size:25px;} +#seb a{color:#373737;text-decoration:none;} +#seb a:hover{color:#397cd8;} +#note{float:left;background-position:-1203px -336px;height:33px;width:30px;} +#close-credits{margin:45px auto 0 auto;text-align:center;clear:both;font-size:20px;color:#373737;} +#sharing{width:240px;} +#about h1 span.title{max-width:400px;display:inline-block;line-height:39px;margin-top:-90px;position:relative;} +#close-about{margin:230px auto 0 auto;text-align:center;clear:both;font-size:20px;color:#373737;} +#about #game-desc{font-size:28px;text-align:center;max-width:70%;margin:30px auto;line-height:34px;} +#about .left p,#about .right p{font-size:20px;text-align:left;line-height:26px;padding:0;margin-top:-10px;} +#about .left{width:31%;float:left;margin-left:12%;} +#about .right{width:37%;float:right;margin-right:12%;} +#about .left .img{height:90px;width:81px;float:left;background-position:-1062px -516px;margin-right:20px;} +#about .right .img{height:90px;width:168px;float:left;background-position:-1062px -426px;margin-right:20px;} +#about .link{clear:both;font-size:20px;margin:30px 0;display:block;text-align:left;line-height:16px;} +#about .link a{color:#2e7fdd;text-decoration:none;} +#about .link .ext-link{height:18px;width:18px;background-position:-1197px -516px;display:block;float:left;margin-right:10px;} +.animate .parchment-middle{-moz-animation:parchmiddle3 1s ease 1;-webkit-animation:parchmiddle3 1s ease 1;-o-animation:parchmiddle3 1s ease 1;-ms-animation:parchmiddle3 1s ease 1;} +.game .parchment-middle{background-position:-633px -882px;} +.game.credits .parchment-middle,.game.death .parchment-middle,.game.about .parchment-middle{width:1038px;margin-left:-519px;background-position:-114px -882px;} +footer{font-size:20px;} +#resize-check{height:3px;} +} +@media screen and (max-width:1500px){ +.upscaled #logo,.upscaled #logosparks,.upscaled .left-ornament,.upscaled .right-ornament,.upscaled #character,.upscaled #character div,.upscaled .button,.upscaled .button div,.upscaled #respawn,.upscaled #scroll,.upscaled #instructions,.upscaled .icon,.upscaled #tilt,.upscaled .parchment-left,.upscaled .parchment-middle,.upscaled .parchment-right,.upscaled .avatar,.upscaled .facebook,.upscaled .twitter,.upscaled .close,.upscaled .ribbon .top,.upscaled .ribbon .bottom,.upscaled #about .img,.upscaled .ext-link{background-image:url('../img/2/spritesheet.png');} +.upscaled #bar-container,.upscaled #healthbar,.upscaled .barbutton,.upscaled #chatbox,.upscaled #population{background-image:url('../img/2/barsheet.png');} +.upscaled #achievements,.upscaled #achievements li,.upscaled .coin,.upscaled #achievement-notification,.upscaled #coinsparks,.upscaled .achievement-sharing a,.upscaled #previous,.upscaled #next{background:url('../img/2/achievements.png');} +body{background:-moz-radial-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1) 125%),url('../img/1/wood.png') repeat,#000;background-size:auto,256px;} +body{background:-webkit-gradient(radial,center center,240,center center,800,from(rgba(0,0,0,0)),to(rgba(0,0,0,1))),url('../img/2/wood.png') repeat,#000;background-size:auto,256px;} +#logo,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon,.avatar,.close,#note,.ribbon .top,.ribbon .bottom,#about .img,.ext-link{background-size:844px auto;} +#logo{height:84px;width:458px;position:absolute;top:10%;left:50%;margin-left:-229px;z-index:3;} +#logosparks{width:458px;height:84px;z-index:4;-moz-animation:logo2 .8s steps(6,end) infinite;-webkit-animation:logo2 .8s steps(6,end) infinite;-o-animation:logo2 .8s steps(6,end) infinite;-ms-animation:logo2 .8s steps(6,end) infinite;} +#parchment,#loadcharacter,#confirmation,#error{width:844px;height:364px;position:absolute;top:55%;left:50%;margin-left:-422px;margin-top:-182px;font-size:20px;text-align:center;z-index:2;} +#parchment h1{margin-top:40px;font-weight:normal;} +.left-ornament,.right-ornament{height:24px;width:62px;display:inline-block;margin:0 15px;position:relative;top:7px;} +.left-ornament{background-position:-708px 0;} +.right-ornament{background-position:-770px 0;} +#character{height:42px;width:24px;margin:0 auto;background-position:-708px -24px;margin-top:30px;position:relative;} +#character div{height:42px;width:24px;position:absolute;top:0;left:0;background-position:-732px -24px;opacity:1;} +#character.disabled div{opacity:0;pointer-events:none;} +#parchment input{margin-top:20px;padding:0 10px;border:2px dashed #b2af9b;font-size:20px;border-radius:6px;height:41px;} +.button{height:102px;width:250px;background-position:-458px -204px;margin:20px auto 0 auto;position:relative;} +.play div{height:102px;width:250px;background-position:-458px 0px;} +.play div:active{background-position:-458px -306px;} +.play.loading div{background-position:-454px -1452px;} +.play.loading img{margin-top:-12px;margin-left:-12px;height:24px;width:24px;} +.stroke,.achievement-name{text-shadow:2px 2px 0 #373737,2px -2px 0 #373737,0 2px 0 #373737,2px 0 0 #373737,-2px 2px 0 #373737,-2px -2px 0 #373737,0 -2px 0 #373737,0 2px 0 #373737,-2px 0 0 #373737;} +#loadcharacter h1,#confirmation h1,#error h1{margin-top:20px;} +#playername{margin-top:10px;} +.loadcharacter .play,.confirmation .delete{margin:10px auto 10px auto;} +#confirmation p,#error p{font-size:20px;margin-top:40px;line-height:30px;} +#error p{width:70%;margin:40px auto 0;} +.button.delete{background-position:-458px -102px;} +.button.delete:active{background-position:0 -1452px;} +#container{width:980px;margin:0 auto;position:absolute;top:50%;margin-top:-252px;left:50%;margin-left:-490px;} +#canvasborder{padding:10px;background:url('../img/2/border.png') no-repeat;} +#canvas{width:100%;height:448px;} +#fade{width:960px;height:448px;top:10px;left:10px;} +#instructions{height:344px;width:834px;background-position:0 -1054px;margin-left:-416px;margin-top:-186px;color:#373737;} +#instructions h1{font-size:30px;text-align:center;margin:40px 0;} +#instructions ul{font-size:20px;margin-top:40px;} +#instructions ul li{margin:20px 0;clear:left;} +#instructions li:nth-child(1) span{height:58px;width:30px;background-position:-756px -24px;display:block;float:left;margin:0 20px 6px 40px;position:relative;top:-26px;} +#instructions li:nth-child(2) span{height:32px;width:26px;background-position:-786px -24px;display:block;float:left;margin:0 24px 28px 40px;position:relative;top:-6px;} +#instructions li:nth-child(3) span{height:42px;width:32px;background-position:-812px -24px;display:block;float:left;margin:0 18px 0 40px;position:relative;top:-12px;} +#instructions p{text-align:center;font-family:'GraphicPixel';font-size:20px;clear:left;margin-top:20px;} +#playerimage{height:64px;width:64px;} +.close{height:32px;width:32px;top:-8px;right:-10px;background-position:-708px -252px;} +.close:hover{background-position:-740px -252px;} +.close:active{background-position:-772px -252px;} +.ribbon{width:36px;right:20px;top:8px;} +.ribbon .top{width:100%;height:12px;background-position:-762px -344px;} +.ribbon .bottom{width:100%;height:44px;background-position:-762px -370px;} +.ribbon:hover .top{height:20px;} +.ribbon:hover .bottom{background-position:-798px -370px;} +#createcharacter .ribbon{right:20px;top:8px;} +#loadcharacter .ribbon{right:99px;top:-8px;} +#death p{font-size:20px;margin-top:90px;} +#death p em{margin-top:30px;} +#respawn{width:250px;height:102px;margin:40px auto 0 auto;background-position:0 -952px;} +#respawn:active{background-position:-250px -952px;} +#bubbles{width:960px;height:448px;margin-bottom:-448px;position:relative;top:-448px;pointer-events:none;} +p{font-family:arial,sans-serif;font-size:12px;margin:0;padding:0;line-height:35px;} +.bubble p{font-family:"GraphicPixel";font-size:14px;} +#bar-container{height:34px;top:-2px;background-size:960px;} +#healthbar{height:26px;background-position:0 -34px;width:204px;top:6px;background-size:960px;z-index:20;} +#hitpoints{width:0px;height:22px;top:8px;left:22px;z-index:10;position:absolute;} +#armor,#weapon{width:32px;height:32px;position:absolute;background-size:192px;background-position:-64px;} +#weapon{left:208px;top:2px;} +#armor{left:242px;top:2px;} +#notifications{width:392px;margin-left:-196px;font-size:16px;color:#eee;top:2px;height:30px;} +#notifications div.top{top:-30px;} +#notifications span{line-height:30px;height:30px;} +.windows #notifications span{line-height:34px;} +#playercount{font-size:16px;left:717px;top:10px;width:114px;text-align:center;} +#population{background-size:960px;right:70px;bottom:44px;width:262px;background-position:-480px -96px;font-size:14px;line-height:20px;} +#population.visible{height:64px;} +#instance-population{padding-top:12px;} +.barbutton{background-size:960px;height:30px;width:28px;} +#chatbutton{background-position:-204px -34px;top:2px;left:840px;} +#chatbutton:hover{background-position:-232px -34px;} +#chatbutton.active{background-position:-260px -34px;} +#achievementsbutton{background-position:-288px -34px;top:2px;left:870px;} +#achievementsbutton:hover,#achievementsbutton.blink:hover{background-position:-316px -34px;} +#achievementsbutton.blink{background-position:-576px -34px;} +#achievementsbutton.active{background-position:-344px -34px;} +#helpbutton{background-position:-372px -34px;top:2px;left:900px;} +#helpbutton:hover{background-position:-400px -34px;} +#helpbutton.active{background-position:-428px -34px;} +#mutebutton{background-position:-456px -34px;top:2px;left:930px;} +#mutebutton:hover{background-position:-484px -34px;} +#mutebutton.active{background-position:-512px -34px;} +#chatbox{height:32px;width:788px;background-size:960px;background-position:0 -64px;margin-left:-394px;bottom:12px;} +#chatbox.active{bottom:44px;} +#chatbox input{font-size:20px;color:#eee;background:none;width:90%;border:0;margin-left:2%;padding:7px 0;} +#credits,#death,#about{width:844px;height:364px;margin-left:-422px;margin-top:-182px;font-size:20px;} +.parchment-left,.parchment-right,.parchment-middle{background-size:844px;} +.parchment-left{width:76px;height:364px;background-position:0 -588px;} +.parchment-right{width:76px;height:364px;background-position:-768px -588px;} +.parchment-middle{height:364px;background-position:-76px -588px;width:692px;margin-left:-346px;} +#credits h1,#about h1{margin-top:25px;font-weight:normal;} +#credits h1 a{font-size:24px;} +.game #credits h1,.game #about h1{margin-top:40px;} +#credits h1 span.title{max-width:200px;display:inline-block;line-height:26px;margin-top:-60px;position:relative;top:24px;} +#authors{clear:both;margin-top:70px;} +#guillaume,#franck{width:47%;line-height:26px;} +#guillaume{float:left;text-align:right;} +#franck{float:right;text-align:left;} +.avatar{height:50px;width:26px;} +#guillaume .avatar{float:right;background-position:-708px -202px;margin-left:40px;} +#franck .avatar{float:left;background-position:-734px -202px;margin-right:40px;} +#seb{margin:180px auto 0 auto;width:52%;color:#373737;font-size:16px;} +#seb a{color:#373737;text-decoration:none;} +#seb a:hover{color:#397cd8;} +#note{float:left;background-position:-802px -224px;height:22px;width:20px;} +#close-credits{margin:20px auto 0 auto;text-align:center;clear:both;font-size:14px;} +#sharing{width:202px;} +#about h1 span.title{max-width:400px;display:inline-block;line-height:24px;margin-top:-90px;position:relative;} +#close-about{margin:153px auto 0 auto;text-align:center;clear:both;font-size:14px;color:#373737;} +#about #game-desc{font-size:18px;text-align:center;max-width:70%;margin:25px auto;line-height:24px;} +#about .left p,#about .right p{font-size:14px;text-align:left;line-height:20px;padding:0;margin-top:-8px;} +.windows #about .left p,.windows #about .right p{font-size:13px;text-align:left;line-height:20px;padding:0;margin-top:-10px;} +#about .left{width:31%;float:left;margin-left:12%;} +#about .right{width:37%;float:right;margin-right:12%;} +#about .left .img{height:60px;width:54px;float:left;background-position:-708px -344px;margin-right:14px;} +#about .right .img{height:60px;width:112px;float:left;background-position:-708px -284px;margin-right:14px;} +#about .link{clear:both;font-size:14px;margin:20px 0;display:block;text-align:left;line-height:10px;} +#about .link a{color:#2e7fdd;text-decoration:none;} +#about .link .ext-link{height:12px;width:12px;background-position:-798px -344px;display:block;float:left;margin-right:7px;} +.animate .parchment-middle{-moz-animation:parchmiddle2 1s ease 1;-webkit-animation:parchmiddle2 1s ease 1;-o-animation:parchmiddle2 1s ease 1;-ms-animation:parchmiddle2 1s ease 1;} +.game .parchment-middle{background-position:-422px -588px;} +.game.credits .parchment-middle,.game.death .parchment-middle,.game.about .parchment-middle{width:692px;margin-left:-346px;background-position:-76px -588px;} +footer{font-size:16px;} +#resize-check{height:2px;} +} +@media screen and (max-height:870px){ +.upscaled #logo,.upscaled #logosparks,.upscaled .left-ornament,.upscaled .right-ornament,.upscaled #character,.upscaled #character div,.upscaled .button,.upscaled .button div,.upscaled #respawn,.upscaled #scroll,.upscaled #instructions,.upscaled .icon,.upscaled #tilt,.upscaled .parchment-left,.upscaled .parchment-middle,.upscaled .parchment-right,.upscaled .avatar,.upscaled .facebook,.upscaled .twitter,.upscaled .close,.upscaled .ribbon .top,.upscaled .ribbon .bottom,.upscaled #about .img,.upscaled .ext-link{background-image:url('../img/2/spritesheet.png');} +.upscaled #bar-container,.upscaled #healthbar,.upscaled .barbutton,.upscaled #chatbox,.upscaled #population{background-image:url('../img/2/barsheet.png');} +.upscaled #achievements,.upscaled #achievements li,.upscaled .coin,.upscaled #achievement-notification,.upscaled #coinsparks,.upscaled .achievement-sharing a,.upscaled #previous,.upscaled #next{background:url('../img/2/achievements.png');} +body{background:-moz-radial-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1) 125%),url('../img/1/wood.png') repeat,#000;background-size:auto,256px;} +body{background:-webkit-gradient(radial,center center,240,center center,800,from(rgba(0,0,0,0)),to(rgba(0,0,0,1))),url('../img/2/wood.png') repeat,#000;background-size:auto,256px;} +#logo,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon,.avatar,.close,#note,.ribbon .top,.ribbon .bottom,#about .img,.ext-link{background-size:844px auto;} +#logo{height:84px;width:458px;position:absolute;top:10%;left:50%;margin-left:-229px;z-index:3;} +#logosparks{width:458px;height:84px;z-index:4;-moz-animation:logo2 .8s steps(6,end) infinite;-webkit-animation:logo2 .8s steps(6,end) infinite;-o-animation:logo2 .8s steps(6,end) infinite;-ms-animation:logo2 .8s steps(6,end) infinite;} +#parchment,#loadcharacter,#confirmation,#error{width:844px;height:364px;position:absolute;top:55%;left:50%;margin-left:-422px;margin-top:-182px;font-size:20px;text-align:center;z-index:2;} +#parchment h1{margin-top:40px;font-weight:normal;} +.left-ornament,.right-ornament{height:24px;width:62px;display:inline-block;margin:0 15px;position:relative;top:7px;} +.left-ornament{background-position:-708px 0;} +.right-ornament{background-position:-770px 0;} +#character{height:42px;width:24px;margin:0 auto;background-position:-708px -24px;margin-top:30px;position:relative;} +#character div{height:42px;width:24px;position:absolute;top:0;left:0;background-position:-732px -24px;opacity:1;} +#character.disabled div{opacity:0;pointer-events:none;} +#parchment input{margin-top:20px;padding:0 10px;border:2px dashed #b2af9b;font-size:20px;border-radius:6px;height:41px;} +.button{height:102px;width:250px;background-position:-458px -204px;margin:20px auto 0 auto;position:relative;} +.play div{height:102px;width:250px;background-position:-458px 0px;} +.play div:active{background-position:-458px -306px;} +.play.loading div{background-position:-454px -1452px;} +.play.loading img{margin-top:-12px;margin-left:-12px;height:24px;width:24px;} +.stroke,.achievement-name{text-shadow:2px 2px 0 #373737,2px -2px 0 #373737,0 2px 0 #373737,2px 0 0 #373737,-2px 2px 0 #373737,-2px -2px 0 #373737,0 -2px 0 #373737,0 2px 0 #373737,-2px 0 0 #373737;} +#loadcharacter h1,#confirmation h1,#error h1{margin-top:20px;} +#playername{margin-top:10px;} +.loadcharacter .play,.confirmation .delete{margin:10px auto 10px auto;} +#confirmation p,#error p{font-size:20px;margin-top:40px;line-height:30px;} +#error p{width:70%;margin:40px auto 0;} +.button.delete{background-position:-458px -102px;} +.button.delete:active{background-position:0 -1452px;} +#container{width:980px;margin:0 auto;position:absolute;top:50%;margin-top:-252px;left:50%;margin-left:-490px;} +#canvasborder{padding:10px;background:url('../img/2/border.png') no-repeat;} +#canvas{width:100%;height:448px;} +#fade{width:960px;height:448px;top:10px;left:10px;} +#instructions{height:344px;width:834px;background-position:0 -1054px;margin-left:-416px;margin-top:-186px;color:#373737;} +#instructions h1{font-size:30px;text-align:center;margin:40px 0;} +#instructions ul{font-size:20px;margin-top:40px;} +#instructions ul li{margin:20px 0;clear:left;} +#instructions li:nth-child(1) span{height:58px;width:30px;background-position:-756px -24px;display:block;float:left;margin:0 20px 6px 40px;position:relative;top:-26px;} +#instructions li:nth-child(2) span{height:32px;width:26px;background-position:-786px -24px;display:block;float:left;margin:0 24px 28px 40px;position:relative;top:-6px;} +#instructions li:nth-child(3) span{height:42px;width:32px;background-position:-812px -24px;display:block;float:left;margin:0 18px 0 40px;position:relative;top:-12px;} +#instructions p{text-align:center;font-family:'GraphicPixel';font-size:20px;clear:left;margin-top:20px;} +#playerimage{height:64px;width:64px;} +.close{height:32px;width:32px;top:-8px;right:-10px;background-position:-708px -252px;} +.close:hover{background-position:-740px -252px;} +.close:active{background-position:-772px -252px;} +.ribbon{width:36px;right:20px;top:8px;} +.ribbon .top{width:100%;height:12px;background-position:-762px -344px;} +.ribbon .bottom{width:100%;height:44px;background-position:-762px -370px;} +.ribbon:hover .top{height:20px;} +.ribbon:hover .bottom{background-position:-798px -370px;} +#createcharacter .ribbon{right:20px;top:8px;} +#loadcharacter .ribbon{right:99px;top:-8px;} +#death p{font-size:20px;margin-top:90px;} +#death p em{margin-top:30px;} +#respawn{width:250px;height:102px;margin:40px auto 0 auto;background-position:0 -952px;} +#respawn:active{background-position:-250px -952px;} +#bubbles{width:960px;height:448px;margin-bottom:-448px;position:relative;top:-448px;pointer-events:none;} +p{font-family:arial,sans-serif;font-size:12px;margin:0;padding:0;} +.bubble p{font-family:"GraphicPixel";font-size:14px;line-height:35px;} +#bar-container{height:34px;top:-2px;background-size:960px;} +#healthbar{height:26px;background-position:0 -34px;width:204px;top:6px;background-size:960px;z-index:20;} +#hitpoints{width:0px;height:22px;top:8px;left:22px;z-index:10;position:absolute;} +#armor,#weapon{width:32px;height:32px;position:absolute;background-size:192px;background-position:-64px;} +#weapon{left:208px;top:2px;} +#armor{left:242px;top:2px;} +#notifications{width:392px;margin-left:-196px;font-size:16px;color:#eee;top:2px;height:30px;} +#notifications div.top{top:-30px;} +#notifications span{line-height:30px;height:30px;} +.windows #notifications span{line-height:34px;} +#playercount{font-size:16px;left:717px;top:10px;width:114px;text-align:center;} +#population{background-size:960px;right:70px;bottom:44px;width:262px;background-position:-480px -96px;font-size:14px;line-height:20px;} +#population.visible{height:64px;} +#instance-population{padding-top:12px;} +.barbutton{background-size:960px;height:30px;width:28px;} +#chatbutton{background-position:-204px -34px;top:2px;left:840px;} +#chatbutton:hover{background-position:-232px -34px;} +#chatbutton.active{background-position:-260px -34px;} +#achievementsbutton{background-position:-288px -34px;top:2px;left:870px;} +#achievementsbutton:hover,#achievementsbutton.blink:hover{background-position:-316px -34px;} +#achievementsbutton.blink{background-position:-576px -34px;} +#achievementsbutton.active{background-position:-344px -34px;} +#helpbutton{background-position:-372px -34px;top:2px;left:900px;} +#helpbutton:hover{background-position:-400px -34px;} +#helpbutton.active{background-position:-428px -34px;} +#mutebutton{background-position:-456px -34px;top:2px;left:930px;} +#mutebutton:hover{background-position:-484px -34px;} +#mutebutton.active{background-position:-512px -34px;} +#chatbox{height:32px;width:788px;background-size:960px;background-position:0 -64px;margin-left:-394px;bottom:12px;} +#chatbox.active{bottom:44px;} +#chatbox input{font-size:20px;color:#eee;background:none;width:90%;border:0;margin-left:2%;padding:7px 0;} +#credits,#death,#about{width:844px;height:364px;margin-left:-422px;margin-top:-182px;font-size:20px;} +.parchment-left,.parchment-right,.parchment-middle{background-size:844px;} +.parchment-left{width:76px;height:364px;background-position:0 -588px;} +.parchment-right{width:76px;height:364px;background-position:-768px -588px;} +.parchment-middle{height:364px;background-position:-76px -588px;width:692px;margin-left:-346px;} +#credits h1,#about h1{margin-top:25px;font-weight:normal;} +#credits h1 a{font-size:24px;} +#credits h1 span.title{max-width:200px;display:inline-block;line-height:26px;margin-top:-60px;position:relative;top:24px;} +#authors{clear:both;margin-top:70px;} +#guillaume,#franck{width:47%;line-height:26px;} +#guillaume{float:left;text-align:right;} +#franck{float:right;text-align:left;} +.avatar{height:50px;width:26px;} +#guillaume .avatar{float:right;background-position:-708px -202px;margin-left:40px;} +#franck .avatar{float:left;background-position:-734px -202px;margin-right:40px;} +#seb{margin:180px auto 0 auto;width:52%;color:#373737;font-size:16px;} +#seb a{color:#373737;text-decoration:none;} +#seb a:hover{color:#397cd8;} +#note{float:left;background-position:-802px -224px;height:22px;width:20px;} +#close-credits{margin:20px auto 0 auto;text-align:center;clear:both;font-size:14px;} +#sharing{width:202px;} +#about h1 span.title{max-width:400px;display:inline-block;line-height:24px;margin-top:-90px;position:relative;} +#close-about{margin:153px auto 0 auto;text-align:center;clear:both;font-size:14px;color:#373737;} +#about #game-desc{font-size:18px;text-align:center;max-width:70%;margin:25px auto;line-height:24px;} +#about .left p,#about .right p{font-size:14px;text-align:left;line-height:20px;padding:0;margin-top:-8px;} +.windows #about .left p,.windows #about .right p{font-size:13px;text-align:left;line-height:20px;padding:0;margin-top:-10px;} +#about .left{width:31%;float:left;margin-left:12%;} +#about .right{width:37%;float:right;margin-right:12%;} +#about .left .img{height:60px;width:54px;float:left;background-position:-708px -344px;margin-right:14px;} +#about .right .img{height:60px;width:112px;float:left;background-position:-708px -284px;margin-right:14px;} +#about .link{clear:both;font-size:14px;margin:20px 0;display:block;text-align:left;line-height:10px;} +#about .link a{color:#2e7fdd;text-decoration:none;} +#about .link .ext-link{height:12px;width:12px;background-position:-798px -344px;display:block;float:left;margin-right:7px;} +.animate .parchment-middle{-moz-animation:parchmiddle2 1s ease 1;-webkit-animation:parchmiddle2 1s ease 1;-o-animation:parchmiddle2 1s ease 1;-ms-animation:parchmiddle2 1s ease 1;} +.game .parchment-middle{background-position:-422px -588px;} +.game.credits .parchment-middle,.game.death .parchment-middle,.game.about .parchment-middle{width:692px;margin-left:-346px;background-position:-76px -588px;} +footer{font-size:16px;} +#resize-check{height:2px;} +} +@media screen and (max-width:1000px){ +canvas{image-rendering:optimizeSpeed;} +body{background:-moz-radial-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1) 125%),url('../img/1/wood.png') repeat,#000;background-size:auto,128px;} +body{background:-webkit-gradient(radial,center center,200,center center,600,from(rgba(0,0,0,0)),to(rgba(0,0,0,1))),url('../img/1/wood.png') repeat,#000;background-size:auto,128px;} +#logo,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon,.avatar,.close,#note,.ribbon .top,.ribbon .bottom,#about .img,.ext-link{background-size:422px auto;} +#logo{height:42px;width:229px;position:absolute;top:10%;left:50%;margin-left:-114px;z-index:3;} +#logosparks{width:229px;height:42px;z-index:4;-moz-animation:logo1 .8s steps(6,end) infinite;-webkit-animation:logo1 .8s steps(6,end) infinite;-o-animation:logo1 .8s steps(6,end) infinite;-ms-animation:logo1 .8s steps(6,end) infinite;} +#parchment,#loadcharacter,#confirmation,#error{width:422px;height:182px;position:absolute;top:50%;left:50%;margin-left:-211px;margin-top:-91px;font-size:10px;text-align:center;z-index:2;} +#parchment h1,#instructions h1{margin-top:20px;font-weight:normal;} +.left-ornament,.right-ornament{height:12px;width:31px;display:inline-block;margin:0 10px;position:relative;top:3px;} +.left-ornament{background-position:-354px 0;} +.right-ornament{background-position:-385px 0;} +#character{height:21px;width:12px;margin:0 auto;background-position:-354px -12px;margin-top:15px;position:relative;} +#character div{height:21px;width:12px;position:absolute;top:0;left:0;background-position:-366px -12px;opacity:1;} +#character.disabled div{opacity:0;pointer-events:none;} +#parchment input{margin-top:10px;padding:0 5px;border:1px dashed #b2af9b;font-size:10px;border-radius:3px;height:21px;} +.button{height:51px;width:125px;background-position:-229px -102px;margin:10px auto 0 auto;position:relative;} +.play div{height:51px;width:125px;background-position:-229px 0px;} +.play div:active{background-position:-229px -153px;} +.play.loading div{background-position:-227px -726px;} +.play.loading img{margin-top:-8px;margin-left:-8px;height:16px;width:16px;} +.stroke,.achievement-name{text-shadow:1px 1px 0 #373737,1px -1px 0 #373737,0 1px 0 #373737,1px 0 0 #373737,-1px 1px 0 #373737,-1px -1px 0 #373737,0 -1px 0 #373737,0 1px 0 #373737,-1px 0 0 #373737;} +#loadcharacter h1,#confirmation h1,#error h1{margin-top:20px;} +#playername{margin-top:5px;} +.loadcharacter .play,.confirmation .delete{margin:5px auto 5px auto;} +#confirmation p,#error p{font-size:10px;margin-top:20px;line-height:20px;} +#error p{width:70%;margin:40px auto 0;} +.button.delete{background-position:-229px -51px;} +.button.delete:active{background-position:0 -726px;} +#container{width:490px;margin:0 auto;position:absolute;top:50%;margin-top:-126px;left:50%;margin-left:-245px;} +#canvasborder{padding:5px;background:url('../img/1/border.png') no-repeat;} +#canvas{width:100%;height:224px;} +#fade{width:480px;height:224px;top:5px;left:5px;} +#instructions{height:172px;width:417px;background-position:0 -527px;margin-left:-208px;margin-top:-93px;color:#373737;} +#instructions h1{font-size:20px;text-align:center;margin-bottom:0;} +#instructions ul{font-size:10px;margin-top:10px;} +#instructions ul li{margin:10px 0;clear:left;} +#instructions li:nth-child(1) span{height:29px;width:15px;background-position:-378px -12px;display:block;float:left;margin:0 10px 3px 20px;position:relative;top:-13px;} +#instructions li:nth-child(2) span{height:16px;width:13px;background-position:-393px -12px;display:block;float:left;margin:0 12px 14px 20px;position:relative;top:-3px;} +#instructions li:nth-child(3) span{height:21px;width:16px;background-position:-406px -12px;display:block;float:left;margin:0 9px 0 20px;position:relative;top:-6px;} +#instructions p{text-align:center;font-family:'GraphicPixel';font-size:10px;clear:left;margin:0;} +#foreground{cursor:default; } +#playerimage{height:32px;width:32px;} +.close{height:16px;width:16px;top:-4px;right:-5px;background-position:-354px -126px;} +.close:hover{background-position:-370px -126px;} +.close:active{background-position:-386px -126px;} +.ribbon{width:18px;right:10px;top:4px;} +.ribbon .top{width:100%;height:6px;background-position:-381px -172px;} +.ribbon .bottom{width:100%;height:22px;background-position:-381px -185px;} +.ribbon:hover .top{height:10px;} +.ribbon:hover .bottom{background-position:-399px -185px;} +#createcharacter .ribbon{right:10px;top:4px;} +#loadcharacter .ribbon{right:50px;top:4px;} +#death p{font-size:10px;margin-top:45px;} +#death p em{margin-top:0px;} +#respawn{width:125px;height:51px;margin:21px auto 0 auto;background-position:0 -476px;} +#respawn:active{background-position:-125px -476px;} +#bubbles{width:480px;height:224px;margin-bottom:-224px;position:relative;top:-224px;pointer-events:none;} +p{font-family:arial,sans-serif;font-size:12px;margin:0;padding:0;line-height:35px;} +.bubble p{font-family:"GraphicPixel";font-size:10px;} +#bar-container{height:17px;top:-1px;background-size:480px;} +#healthbar{height:13px;background-position:0 -17px;width:102px;top:3px;background-size:480px;z-index:20;} +#hitpoints{width:0px;height:11px;top:4px;left:11px;z-index:10;position:absolute;} +#armor,#weapon{width:16px;height:16px;position:absolute;background-size:96px;background-position:-32px;} +#weapon{left:104px;top:1px;} +#armor{left:121px;top:1px;} +#notifications{width:196px;margin-left:-98px;font-size:10px;color:#eee;top:2px;height:15px;} +#notifications div.top{top:-15px;} +#notifications span{line-height:15px;height:15px;} +#playercount{font-size:10px;left:358px;top:4px;width:57px;text-align:center;} +#population{background-size:480px;right:35px;bottom:22px;width:131px;background-position:-240px -48px;font-size:9px;line-height:12px;} +#population.visible{height:32px;} +#instance-population{padding-top:5px;} +.barbutton{background-size:480px;height:15px;width:14px;} +#chatbutton{background-position:-102px -17px;top:1px;left:420px;} +#chatbutton:hover{background-position:-116px -17px;} +#chatbutton.active{background-position:-130px -17px;} +#achievementsbutton{background-position:-144px -17px;top:1px;left:435px;} +#achievementsbutton:hover,#achievementsbutton.blink:hover{background-position:-158px -17px;} +#achievementsbutton.blink{background-position:-288px -17px;} +#achievementsbutton.active{background-position:-172px -17px;} +#helpbutton{background-position:-186px -17px;top:1px;left:450px;} +#helpbutton:hover{background-position:-200px -17px;} +#helpbutton.active{background-position:-214px -17px;} +#mutebutton{background-position:-228px -17px;top:1px;left:465px;} +#mutebutton:hover{background-position:-242px -17px;} +#mutebutton.active{background-position:-256px -17px;} +#chatbox{height:16px;width:394px;background-size:480px;background-position:0 -32px;margin-left:-197px;bottom:6px;} +#chatbox.active{bottom:22px;} +#chatbox input{font-size:10px;color:#eee;background:none;width:90%;border:0;margin-left:2%;padding:0;} +#credits,#death,#about{width:422px;height:182px;top:50%;margin-left:-211px;margin-top:-91px;font-size:10px;} +#credits h1 a{font-size:12px;} +.parchment-left,.parchment-right,.parchment-middle{background-size:422px;} +.parchment-left{width:38px;height:182px;background-position:0 -294px;} +.parchment-right{width:38px;height:182px;background-position:-384px -294px;} +.parchment-middle{height:182px;background-position:-38px -294px;width:346px;margin-left:-173px;} +#credits h1,#about h1{margin-top:12px;font-weight:normal;} +.game #credits h1,.game #about h1{margin-top:20px;} +#credits h1 span.title{max-width:100px;display:inline-block;line-height:13px;margin-top:-30px;position:relative;top:12px;} +#authors{clear:both;margin-top:36px;} +#guillaume,#franck{width:47%;line-height:13px;} +#guillaume{float:left;text-align:right;} +#franck{float:right;text-align:left;} +.avatar{height:25px;width:13px;} +#guillaume .avatar{float:right;background-position:-354px -101px;margin-left:20px;} +#franck .avatar{float:left;background-position:-367px -101px;margin-right:20px;} +#seb{margin:90px auto 0 auto;width:64%;color:#373737;font-size:10px;} +#seb a{color:#373737;text-decoration:none;} +#seb a:hover{color:#397cd8;} +#note{float:left;background-position:-401px -112px;height:11px;width:10px;} +#close-credits{margin:12px auto 0 auto;text-align:center;clear:both;font-size:10px;} +#sharing{width:202px;} +#about h1 span.title{max-width:400px;display:inline-block;line-height:24px;margin-top:-30px;position:relative;margin-bottom:-10px;} +#close-about{margin:77px auto 0 auto;text-align:center;clear:both;font-size:10px;color:#373737;} +#about #game-desc{font-size:10px;text-align:center;max-width:70%;margin:10px auto;line-height:14px;} +#about .left p,#about .right p{font-size:9px;text-align:left;line-height:10px;padding:0;margin-top:-6px;} +#about .left{width:37%;float:left;margin-left:10%;} +#about .right{width:37%;float:right;margin-right:12%;} +#about .img{display:none;} +#about .link{clear:both;font-size:9px;margin:10px 0;display:block;text-align:left;line-height:5px;} +#about .link a{color:#2e7fdd;text-decoration:none;} +#about .link .ext-link{height:6px;width:6px;background-position:-399px -172px;display:block;float:left;margin-right:4px;} +.animate .parchment-middle{-moz-animation:parchmiddle1 1s ease 1;-webkit-animation:parchmiddle1 1s ease 1;-o-animation:parchmiddle1 1s ease 1;-ms-animation:parchmiddle1 1s ease 1;} +.game .parchment-middle{background-position:-211px -294px;} +.game.credits .parchment-middle,.game.death .parchment-middle,.game.about .parchment-middle{width:346px;margin-left:-173px;background-position:-38px -294px;} +#resize-check{height:1px;} +} +@media screen and (max-width:800px){ +body{border-top:0px;} +.intro #container,.game #logo,.game #parchment{display:none;} +.game.about #parchment{display:block;left:50%;background:url('../img/1/spritesheet.png') no-repeat 0 -527px;height:172px;width:417px;top:50%;margin-left:-208px;margin-top:-98px;position:absolute;} +.game.about .parchment-middle{top:50%;left:50%;color:#000;position:absolute;} +#about .right{width:34%;} +#about #game-desc{margin:8px auto 16px;line-height:12px;} +#close-about{margin-top:83px;} +.game #container{display:block;padding:0;} +#mask,#fade{display:none;} +.game.death #parchment{display:block;} +.game .createcharacter #createcharacter,.game .loadcharacter #loadcharacter,.game .confirmation #confirmation,.game .error #error{display:none;} +.ribbon{display:none;} +canvas{image-rendering:optimizeSpeed;} +#moztab{display:none;} +body.intro{background:-moz-radial-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1) 125%),url('../img/1/wood.png') repeat,#000;background-size:auto,128px;} +body.intro{background:-webkit-gradient(radial,center center,120,center center,400,from(rgba(0,0,0,0)),to(rgba(0,0,0,1))),url('../img/1/wood.png') repeat,#000;background-size:auto,128px;} +body{background:#000;} +#logosparks{-moz-animation:none;-webkit-animation:none;-o-animation:none;-ms-animation:none;display:none;} +#container{height:258px;width:480px;position:relative;left:50%;top:50%;margin:-128px auto 0 -240px;} +#canvasborder{background:none;padding:0;} +#parchment,#logosparks,.left-ornament,.right-ornament,#character,#character div,.button,.button div,#respawn,#scroll,#instructions,.icon{background-size:422px auto;} +#parchment{background:none;} +#logo{height:84px;width:458px;position:absolute;top:10%;left:50%;margin-left:-229px;z-index:3;background-size:844px;} +#parchment{width:100%;height:auto;position:absolute;left:0;top:125px;margin-left:0;margin-top:0;font-size:10px;text-align:center;z-index:2;color:#eee;} +#parchment h1{margin-top:0px;font-weight:normal;} +#instructions h1{margin-top:15px;font-size:14px;} +.left-ornament,.right-ornament{height:12px;width:31px;display:inline-block;margin:0 10px;position:relative;top:3px;} +.left-ornament{background-position:-354px 0;} +.right-ornament{background-position:-385px 0;} +#character{height:21px;width:12px;margin:0 auto;background-position:-354px -12px;margin-top:15px;position:relative;display:none;} +#character div{height:21px;width:12px;position:absolute;top:0;left:0;background-position:-366px -12px;opacity:1;} +#character.disabled div{opacity:0;pointer-events:none;} +#parchment input{margin-top:10px;padding-bottom:5px;border-bottom:1px dashed #b2af9b;font-size:20px;-moz-animation:none;-webkit-animation:none;-o-animation:none;-ms-animation:none;color:#eee;} +.button{height:54px;width:204px;background-position:-500px -952px;margin:20px auto 0 auto;position:relative;background-size:844px;} +.play div{height:54px;width:204px;background-position:-458px -512px;background-size:844px;} +.play div:active{background-position:0px -1398px;} +.stroke{text-shadow:1px 1px 0 #373737,1px -1px 0 #373737,0 1px 0 #373737,1px 0 0 #373737,-1px 1px 0 #373737,-1px -1px 0 #373737,0 -1px 0 #373737,0 1px 0 #373737,-1px 0 0 #373737;} +#instructions{height:172px;width:417px;background-position:0 -527px;margin-left:-208px;margin-top:-93px;color:#373737;} +#instructions h1{font-size:20px;text-align:center;margin-bottom:0;} +#instructions ul{font-size:13px;margin-top:15px;} +#instructions ul li{margin:10px 0;clear:left;} +#instructions li:nth-child(1) span{height:29px;width:15px;background-position:-378px -12px;display:block;float:left;margin:0 10px 3px 20px;position:relative;top:-13px;} +#instructions li:nth-child(2) span{height:16px;width:13px;background-position:-393px -12px;display:block;float:left;margin:0 12px 14px 20px;position:relative;top:-3px;} +#instructions li:nth-child(3) span{height:21px;width:16px;background-position:-406px -12px;display:block;float:left;margin:0 9px 0 20px;position:relative;top:-6px;} +#instructions p{text-align:center;font-family:'GraphicPixel';font-size:10px;clear:left;margin:0;} +#foreground{cursor:default; } +#parchment.animate{-moz-animation:none;-webkit-animation:none;-o-animation:none;-webkit-animation:none;} +#loadcharacter,#confirmation,#createcharacter,#error{display:none;margin-top:0;margin-left:0;left:0;width:auto;} +.loadcharacter #loadcharacter,.confirmation #confirmation,.createcharacter #createcharacter,.error #error{display:block;width:100%;} +#loadcharacter h1,#confirmation h1,#error h1{font-size:12px;font-weight:normal;} +#loadcharacter,#confirmation,#error{height:auto;} +#loadcharacter h1,#confirmation h1,#createcharacter h1,#error h1{font-size:12px;} +#createcharacter{padding-bottom:20px;} +#playername{font-size:20px;margin:10px 0px;} +#create-new{margin:20px 0px;font-size:16px;} +.button.delete{background-position:-612px -1398px;} +.button.delete:active{background-position:-250px -1452px;} +#confirmation,#error{top:70%;} +#confirmation p,#error p{margin:10px 0;line-height:12px;font-size:12px;} +#cancel{font-size:20px;margin:20px 0;} +#playerimage{display:none;} +#bar-container{height:34px;top:-2px;background-size:960px;background-position:0 -96px;} +#healthbar{height:26px;background-position:0 -34px;width:204px;top:6px;background-size:960px;z-index:20;} +#hitpoints{width:0px;height:22px;top:8px;left:22px;z-index:10;position:absolute;} +#armor,#weapon{width:32px;height:32px;position:absolute;background-size:192px;background-position:-64px;} +#weapon{left:208px;top:2px;} +#armor{left:242px;top:2px;} +#notifications{display:none;} +#playercount{font-size:20px;left:270px;top:10px;width:114px;text-align:center;} +#playercount span{display:none;} +#playercount span.count{display:inline;} +.barbutton{background-size:960px;height:30px;width:28px;} +#chatbutton{background-position:-204px -34px;top:2px;left:360px;} +#chatbutton:hover{background-position:-232px -34px;} +#chatbutton.active{background-position:-260px -34px;} +#achievementsbutton{background-position:-288px -34px;top:2px;left:390px;} +#achievementsbutton:hover,#achievementsbutton.blink{background-position:-316px -34px;} +#achievementsbutton.active{background-position:-344px -34px;} +#helpbutton{background-position:-372px -34px;top:2px;left:420px;} +#helpbutton:hover{background-position:-400px -34px;} +#helpbutton.active{background-position:-428px -34px;} +#mutebutton{background-position:-456px -34px;top:2px;left:450px;} +#mutebutton:hover{background-position:-484px -34px;} +#mutebutton.active{background-position:-512px -34px;} +#chatbox{height:32px;width:480px;background-size:960px;background-position:0 -64px;margin-left:-240px;bottom:2px;} +#chatbox.active{bottom:34px;} +#chatbox input{font-size:20px;color:#eee;background:none;width:90%;border:0;margin-left:2%;padding:0px 0;} +.parchment-left,.upscaled .parchment-left,.parchment-middle,.upscaled .parchment-middle,.parchment-right,.upscaled .parchment-right{background:none;} +.parchment-left,.parchment-right{display:none;} +.parchment-middle{width:100%;left:0px;margin-left:0px;height:auto;position:relative;} +#toggle-credits,#credits{display:none;} +.game.death #parchment{background:url('../img/spritesheet.png') 0 -294px;height:182px;width:422px;position:absolute;top:50%;left:50%;margin-top:-91px;margin-left:-211px;} +.game.death .parchment-middle{width:100%;position:relative;top:0;left:0;margin-left:0;margin-top:0;} +.game.death #death{position:relative;top:0;left:0;margin-top:0;margin-left:0;width:100%;} +.game.death #death p{padding-top:30px;color:#373737;font-size:20px;margin-top:0;width:80%;margin:0 auto;} +.game.death #death p em{display:block;margin-top:15px;font-style:normal;} +#instructions,#achievements,#lists,#about{-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none;} +.game.death #death{height:172px;width:417px;margin-left:-208px;margin-top:-93px;color:#373737;background:url('../img/1/spritesheet.png') 0 -527px;margin:-10px 0 0 0;} +#respawn{background-position:-204px -1398px;background-size:844px auto;width:204px;height:54px;} +#respawn:active{background-position:-408px -1398px;} +footer{display:none;} +#bubbles{overflow:hidden;} +} +@media screen and (max-width:800px) and (orientation:portrait){ +#portrait{display:block;height:300px;width:300px;position:absolute;top:55%;left:50%;margin:-150px 0 0 -150px;} +#parchment{display:none;} +#container,.game #container{display:none;} +#logo{height:84px;width:458px;position:absolute;top:10%;left:50%;margin-left:-229px;z-index:3;background-size:844px;} +#portrait p{color:#eee;font-family:'GraphicPixel',sans-serif;font-size:20px;text-align:center;} +#tilt{height:120px;width:132px;background-position:-710px -82px;background-size:844px;margin:25px auto 0 auto;} +} +@media screen and (max-width:640px) and (orientation:portrait){ +#portrait{display:block;height:300px;width:300px;position:absolute;top:70%;left:50%;margin:-150px 0 0 -150px;} +#logo{height:42px;width:229px;position:absolute;top:10%;left:50%;margin-left:-114px;z-index:3;background-size:422px;} +} +.tablet .animate .parchment-left,.tablet .animate .parchment-right,.tablet .animate .parchment-middle{-webkit-animation:none;-moz-animation:none;-o-animation:none;-ms-animation:none;} +.tablet #instructions,.tablet #achievements,.tablet #lists{-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none;} +.tablet #achievements li.unlocked .achievement-sharing{display:block;} +.tablet #coinsparks{display:none;-moz-animation:none;} +.tablet #logo,.tablet #parchment,.tablet #container{-moz-transition:none;} +.tablet #achievement-notification .name,.tablet #achievement-notification .title,.tablet #achievement-notification .coin,.tablet #achievement-notification{-moz-transition:none;} +.windows #parchment,.windows #parchment input,.windows #notifications,.windows #instructions,.windows #achievements,.windows #achievement-notification, +.windows #playercount,.windows #credits,.windows #loadcharacter,.windows #confirmation,.windows #death,.windows #error,.windows #about, +.windows #parchment p,.windows #portrait p,.windows .alert,.windows footer,.windows .bubble p,.windows #population{font-family:'AdvoCut';} +.opera.intro #bubbles,.opera.intro #canvas,.opera.intro #container{z-index:-30000;} +.opera .credits #credits,.opera .createcharacter #createcharacter,.opera .loadcharacter #loadcharacter,.opera .confirmation #confirmation,.opera .death #death, +.opera .error #error,.opera .about #about{z-index:30000;} +.opera #instructions,.opera #achievements{z-index:-30000;} +.opera #achievements.active,.opera #instructions.active{z-index:30000;} +.opera #coinsparks{display:none;} +.opera #death,.opera #about,.opera #credits,.opera #error,.opera #confirmation,.opera #loadcharacter{z-index:-30000;} \ No newline at end of file diff --git a/public_html/browserquest/fonts/advocut-webfont.eot b/public_html/browserquest/fonts/advocut-webfont.eot new file mode 100644 index 0000000..add2379 Binary files /dev/null and b/public_html/browserquest/fonts/advocut-webfont.eot differ diff --git a/public_html/browserquest/fonts/advocut-webfont.svg b/public_html/browserquest/fonts/advocut-webfont.svg new file mode 100644 index 0000000..28d1dfc --- /dev/null +++ b/public_html/browserquest/fonts/advocut-webfont.svg @@ -0,0 +1,193 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Copyright c homebrainbox 2001 All rights reserved +Designer : Marc mieps Misman + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public_html/browserquest/fonts/advocut-webfont.ttf b/public_html/browserquest/fonts/advocut-webfont.ttf new file mode 100644 index 0000000..69e0e59 Binary files /dev/null and b/public_html/browserquest/fonts/advocut-webfont.ttf differ diff --git a/public_html/browserquest/fonts/advocut-webfont.woff b/public_html/browserquest/fonts/advocut-webfont.woff new file mode 100644 index 0000000..2847fe6 Binary files /dev/null and b/public_html/browserquest/fonts/advocut-webfont.woff differ diff --git a/public_html/browserquest/fonts/graphicpixel-webfont.eot b/public_html/browserquest/fonts/graphicpixel-webfont.eot new file mode 100644 index 0000000..a8ebc2b Binary files /dev/null and b/public_html/browserquest/fonts/graphicpixel-webfont.eot differ diff --git a/public_html/browserquest/fonts/graphicpixel-webfont.svg b/public_html/browserquest/fonts/graphicpixel-webfont.svg new file mode 100644 index 0000000..e8ec459 --- /dev/null +++ b/public_html/browserquest/fonts/graphicpixel-webfont.svg @@ -0,0 +1,161 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : C GiorgioCat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public_html/browserquest/fonts/graphicpixel-webfont.ttf b/public_html/browserquest/fonts/graphicpixel-webfont.ttf new file mode 100644 index 0000000..331d0a5 Binary files /dev/null and b/public_html/browserquest/fonts/graphicpixel-webfont.ttf differ diff --git a/public_html/browserquest/fonts/graphicpixel-webfont.woff b/public_html/browserquest/fonts/graphicpixel-webfont.woff new file mode 100644 index 0000000..9823073 Binary files /dev/null and b/public_html/browserquest/fonts/graphicpixel-webfont.woff differ diff --git a/public_html/browserquest/img/1/achievements.png b/public_html/browserquest/img/1/achievements.png new file mode 100644 index 0000000..b133694 Binary files /dev/null and b/public_html/browserquest/img/1/achievements.png differ diff --git a/public_html/browserquest/img/1/agent.png b/public_html/browserquest/img/1/agent.png new file mode 100644 index 0000000..bf02cb0 Binary files /dev/null and b/public_html/browserquest/img/1/agent.png differ diff --git a/public_html/browserquest/img/1/axe.png b/public_html/browserquest/img/1/axe.png new file mode 100644 index 0000000..d89de7c Binary files /dev/null and b/public_html/browserquest/img/1/axe.png differ diff --git a/public_html/browserquest/img/1/barsheet.png b/public_html/browserquest/img/1/barsheet.png new file mode 100644 index 0000000..235a2ef Binary files /dev/null and b/public_html/browserquest/img/1/barsheet.png differ diff --git a/public_html/browserquest/img/1/bat.png b/public_html/browserquest/img/1/bat.png new file mode 100644 index 0000000..727f640 Binary files /dev/null and b/public_html/browserquest/img/1/bat.png differ diff --git a/public_html/browserquest/img/1/beachnpc.png b/public_html/browserquest/img/1/beachnpc.png new file mode 100644 index 0000000..880b9e7 Binary files /dev/null and b/public_html/browserquest/img/1/beachnpc.png differ diff --git a/public_html/browserquest/img/1/bluesword.png b/public_html/browserquest/img/1/bluesword.png new file mode 100644 index 0000000..9d9d0e9 Binary files /dev/null and b/public_html/browserquest/img/1/bluesword.png differ diff --git a/public_html/browserquest/img/1/border.png b/public_html/browserquest/img/1/border.png new file mode 100644 index 0000000..35ec8d1 Binary files /dev/null and b/public_html/browserquest/img/1/border.png differ diff --git a/public_html/browserquest/img/1/boss.png b/public_html/browserquest/img/1/boss.png new file mode 100644 index 0000000..349ab5e Binary files /dev/null and b/public_html/browserquest/img/1/boss.png differ diff --git a/public_html/browserquest/img/1/chest.png b/public_html/browserquest/img/1/chest.png new file mode 100644 index 0000000..315438c Binary files /dev/null and b/public_html/browserquest/img/1/chest.png differ diff --git a/public_html/browserquest/img/1/clotharmor.png b/public_html/browserquest/img/1/clotharmor.png new file mode 100644 index 0000000..ae13f2a Binary files /dev/null and b/public_html/browserquest/img/1/clotharmor.png differ diff --git a/public_html/browserquest/img/1/coder.png b/public_html/browserquest/img/1/coder.png new file mode 100644 index 0000000..8bc0f2a Binary files /dev/null and b/public_html/browserquest/img/1/coder.png differ diff --git a/public_html/browserquest/img/1/crab.png b/public_html/browserquest/img/1/crab.png new file mode 100644 index 0000000..26768bc Binary files /dev/null and b/public_html/browserquest/img/1/crab.png differ diff --git a/public_html/browserquest/img/1/death.png b/public_html/browserquest/img/1/death.png new file mode 100644 index 0000000..fe1909c Binary files /dev/null and b/public_html/browserquest/img/1/death.png differ diff --git a/public_html/browserquest/img/1/deathknight.png b/public_html/browserquest/img/1/deathknight.png new file mode 100644 index 0000000..4fb2369 Binary files /dev/null and b/public_html/browserquest/img/1/deathknight.png differ diff --git a/public_html/browserquest/img/1/desertnpc.png b/public_html/browserquest/img/1/desertnpc.png new file mode 100644 index 0000000..ce01671 Binary files /dev/null and b/public_html/browserquest/img/1/desertnpc.png differ diff --git a/public_html/browserquest/img/1/eye.png b/public_html/browserquest/img/1/eye.png new file mode 100644 index 0000000..d32a755 Binary files /dev/null and b/public_html/browserquest/img/1/eye.png differ diff --git a/public_html/browserquest/img/1/firefox.png b/public_html/browserquest/img/1/firefox.png new file mode 100644 index 0000000..2d2eb98 Binary files /dev/null and b/public_html/browserquest/img/1/firefox.png differ diff --git a/public_html/browserquest/img/1/forestnpc.png b/public_html/browserquest/img/1/forestnpc.png new file mode 100644 index 0000000..1035f66 Binary files /dev/null and b/public_html/browserquest/img/1/forestnpc.png differ diff --git a/public_html/browserquest/img/1/goblin.png b/public_html/browserquest/img/1/goblin.png new file mode 100644 index 0000000..e929020 Binary files /dev/null and b/public_html/browserquest/img/1/goblin.png differ diff --git a/public_html/browserquest/img/1/goldenarmor.png b/public_html/browserquest/img/1/goldenarmor.png new file mode 100644 index 0000000..bb4a936 Binary files /dev/null and b/public_html/browserquest/img/1/goldenarmor.png differ diff --git a/public_html/browserquest/img/1/goldensword.png b/public_html/browserquest/img/1/goldensword.png new file mode 100644 index 0000000..b903a8c Binary files /dev/null and b/public_html/browserquest/img/1/goldensword.png differ diff --git a/public_html/browserquest/img/1/guard.png b/public_html/browserquest/img/1/guard.png new file mode 100644 index 0000000..5d71781 Binary files /dev/null and b/public_html/browserquest/img/1/guard.png differ diff --git a/public_html/browserquest/img/1/hand.png b/public_html/browserquest/img/1/hand.png new file mode 100644 index 0000000..28c02a1 Binary files /dev/null and b/public_html/browserquest/img/1/hand.png differ diff --git a/public_html/browserquest/img/1/item-axe.png b/public_html/browserquest/img/1/item-axe.png new file mode 100644 index 0000000..91d370f Binary files /dev/null and b/public_html/browserquest/img/1/item-axe.png differ diff --git a/public_html/browserquest/img/1/item-bluesword.png b/public_html/browserquest/img/1/item-bluesword.png new file mode 100644 index 0000000..b25e971 Binary files /dev/null and b/public_html/browserquest/img/1/item-bluesword.png differ diff --git a/public_html/browserquest/img/1/item-burger.png b/public_html/browserquest/img/1/item-burger.png new file mode 100644 index 0000000..a5c45d3 Binary files /dev/null and b/public_html/browserquest/img/1/item-burger.png differ diff --git a/public_html/browserquest/img/1/item-cake.png b/public_html/browserquest/img/1/item-cake.png new file mode 100644 index 0000000..44da17c Binary files /dev/null and b/public_html/browserquest/img/1/item-cake.png differ diff --git a/public_html/browserquest/img/1/item-clotharmor.png b/public_html/browserquest/img/1/item-clotharmor.png new file mode 100644 index 0000000..39e7288 Binary files /dev/null and b/public_html/browserquest/img/1/item-clotharmor.png differ diff --git a/public_html/browserquest/img/1/item-firepotion.png b/public_html/browserquest/img/1/item-firepotion.png new file mode 100644 index 0000000..9db57ef Binary files /dev/null and b/public_html/browserquest/img/1/item-firepotion.png differ diff --git a/public_html/browserquest/img/1/item-flask.png b/public_html/browserquest/img/1/item-flask.png new file mode 100644 index 0000000..d0dc2c7 Binary files /dev/null and b/public_html/browserquest/img/1/item-flask.png differ diff --git a/public_html/browserquest/img/1/item-goldenarmor.png b/public_html/browserquest/img/1/item-goldenarmor.png new file mode 100644 index 0000000..4dcb017 Binary files /dev/null and b/public_html/browserquest/img/1/item-goldenarmor.png differ diff --git a/public_html/browserquest/img/1/item-goldensword.png b/public_html/browserquest/img/1/item-goldensword.png new file mode 100644 index 0000000..5cbb89e Binary files /dev/null and b/public_html/browserquest/img/1/item-goldensword.png differ diff --git a/public_html/browserquest/img/1/item-leatherarmor.png b/public_html/browserquest/img/1/item-leatherarmor.png new file mode 100644 index 0000000..c3b1ea7 Binary files /dev/null and b/public_html/browserquest/img/1/item-leatherarmor.png differ diff --git a/public_html/browserquest/img/1/item-mailarmor.png b/public_html/browserquest/img/1/item-mailarmor.png new file mode 100644 index 0000000..6872f85 Binary files /dev/null and b/public_html/browserquest/img/1/item-mailarmor.png differ diff --git a/public_html/browserquest/img/1/item-morningstar.png b/public_html/browserquest/img/1/item-morningstar.png new file mode 100644 index 0000000..1e85221 Binary files /dev/null and b/public_html/browserquest/img/1/item-morningstar.png differ diff --git a/public_html/browserquest/img/1/item-platearmor.png b/public_html/browserquest/img/1/item-platearmor.png new file mode 100644 index 0000000..71dde3f Binary files /dev/null and b/public_html/browserquest/img/1/item-platearmor.png differ diff --git a/public_html/browserquest/img/1/item-redarmor.png b/public_html/browserquest/img/1/item-redarmor.png new file mode 100644 index 0000000..1f2a16a Binary files /dev/null and b/public_html/browserquest/img/1/item-redarmor.png differ diff --git a/public_html/browserquest/img/1/item-redsword.png b/public_html/browserquest/img/1/item-redsword.png new file mode 100644 index 0000000..df7f739 Binary files /dev/null and b/public_html/browserquest/img/1/item-redsword.png differ diff --git a/public_html/browserquest/img/1/item-sword1.png b/public_html/browserquest/img/1/item-sword1.png new file mode 100644 index 0000000..fe7cc51 Binary files /dev/null and b/public_html/browserquest/img/1/item-sword1.png differ diff --git a/public_html/browserquest/img/1/item-sword2.png b/public_html/browserquest/img/1/item-sword2.png new file mode 100644 index 0000000..f47dbb4 Binary files /dev/null and b/public_html/browserquest/img/1/item-sword2.png differ diff --git a/public_html/browserquest/img/1/king.png b/public_html/browserquest/img/1/king.png new file mode 100644 index 0000000..36f97b5 Binary files /dev/null and b/public_html/browserquest/img/1/king.png differ diff --git a/public_html/browserquest/img/1/lavanpc.png b/public_html/browserquest/img/1/lavanpc.png new file mode 100644 index 0000000..13ab738 Binary files /dev/null and b/public_html/browserquest/img/1/lavanpc.png differ diff --git a/public_html/browserquest/img/1/leatherarmor.png b/public_html/browserquest/img/1/leatherarmor.png new file mode 100644 index 0000000..1296041 Binary files /dev/null and b/public_html/browserquest/img/1/leatherarmor.png differ diff --git a/public_html/browserquest/img/1/loot.png b/public_html/browserquest/img/1/loot.png new file mode 100644 index 0000000..914b4a9 Binary files /dev/null and b/public_html/browserquest/img/1/loot.png differ diff --git a/public_html/browserquest/img/1/mailarmor.png b/public_html/browserquest/img/1/mailarmor.png new file mode 100644 index 0000000..4fc2e80 Binary files /dev/null and b/public_html/browserquest/img/1/mailarmor.png differ diff --git a/public_html/browserquest/img/1/morningstar.png b/public_html/browserquest/img/1/morningstar.png new file mode 100644 index 0000000..84bf555 Binary files /dev/null and b/public_html/browserquest/img/1/morningstar.png differ diff --git a/public_html/browserquest/img/1/nyan.png b/public_html/browserquest/img/1/nyan.png new file mode 100644 index 0000000..2a1c012 Binary files /dev/null and b/public_html/browserquest/img/1/nyan.png differ diff --git a/public_html/browserquest/img/1/octocat.png b/public_html/browserquest/img/1/octocat.png new file mode 100644 index 0000000..a0e99e2 Binary files /dev/null and b/public_html/browserquest/img/1/octocat.png differ diff --git a/public_html/browserquest/img/1/ogre.png b/public_html/browserquest/img/1/ogre.png new file mode 100644 index 0000000..5f242c9 Binary files /dev/null and b/public_html/browserquest/img/1/ogre.png differ diff --git a/public_html/browserquest/img/1/platearmor.png b/public_html/browserquest/img/1/platearmor.png new file mode 100644 index 0000000..be64c10 Binary files /dev/null and b/public_html/browserquest/img/1/platearmor.png differ diff --git a/public_html/browserquest/img/1/priest.png b/public_html/browserquest/img/1/priest.png new file mode 100644 index 0000000..e0a47b7 Binary files /dev/null and b/public_html/browserquest/img/1/priest.png differ diff --git a/public_html/browserquest/img/1/rat.png b/public_html/browserquest/img/1/rat.png new file mode 100644 index 0000000..bbced91 Binary files /dev/null and b/public_html/browserquest/img/1/rat.png differ diff --git a/public_html/browserquest/img/1/redarmor.png b/public_html/browserquest/img/1/redarmor.png new file mode 100644 index 0000000..346d1ad Binary files /dev/null and b/public_html/browserquest/img/1/redarmor.png differ diff --git a/public_html/browserquest/img/1/redsword.png b/public_html/browserquest/img/1/redsword.png new file mode 100644 index 0000000..b20086d Binary files /dev/null and b/public_html/browserquest/img/1/redsword.png differ diff --git a/public_html/browserquest/img/1/rick.png b/public_html/browserquest/img/1/rick.png new file mode 100644 index 0000000..852fc10 Binary files /dev/null and b/public_html/browserquest/img/1/rick.png differ diff --git a/public_html/browserquest/img/1/scientist.png b/public_html/browserquest/img/1/scientist.png new file mode 100644 index 0000000..0546c6d Binary files /dev/null and b/public_html/browserquest/img/1/scientist.png differ diff --git a/public_html/browserquest/img/1/shadow16.png b/public_html/browserquest/img/1/shadow16.png new file mode 100644 index 0000000..f3d7c0f Binary files /dev/null and b/public_html/browserquest/img/1/shadow16.png differ diff --git a/public_html/browserquest/img/1/skeleton.png b/public_html/browserquest/img/1/skeleton.png new file mode 100644 index 0000000..0e3572a Binary files /dev/null and b/public_html/browserquest/img/1/skeleton.png differ diff --git a/public_html/browserquest/img/1/skeleton2.png b/public_html/browserquest/img/1/skeleton2.png new file mode 100644 index 0000000..5ed428d Binary files /dev/null and b/public_html/browserquest/img/1/skeleton2.png differ diff --git a/public_html/browserquest/img/1/snake.png b/public_html/browserquest/img/1/snake.png new file mode 100644 index 0000000..4087778 Binary files /dev/null and b/public_html/browserquest/img/1/snake.png differ diff --git a/public_html/browserquest/img/1/sorcerer.png b/public_html/browserquest/img/1/sorcerer.png new file mode 100644 index 0000000..5d5d288 Binary files /dev/null and b/public_html/browserquest/img/1/sorcerer.png differ diff --git a/public_html/browserquest/img/1/sparks.png b/public_html/browserquest/img/1/sparks.png new file mode 100644 index 0000000..1b38612 Binary files /dev/null and b/public_html/browserquest/img/1/sparks.png differ diff --git a/public_html/browserquest/img/1/spectre.png b/public_html/browserquest/img/1/spectre.png new file mode 100644 index 0000000..faeff64 Binary files /dev/null and b/public_html/browserquest/img/1/spectre.png differ diff --git a/public_html/browserquest/img/1/spritesheet.png b/public_html/browserquest/img/1/spritesheet.png new file mode 100644 index 0000000..3f304d6 Binary files /dev/null and b/public_html/browserquest/img/1/spritesheet.png differ diff --git a/public_html/browserquest/img/1/sword.png b/public_html/browserquest/img/1/sword.png new file mode 100644 index 0000000..92af5b8 Binary files /dev/null and b/public_html/browserquest/img/1/sword.png differ diff --git a/public_html/browserquest/img/1/sword1.png b/public_html/browserquest/img/1/sword1.png new file mode 100644 index 0000000..b5fb4f4 Binary files /dev/null and b/public_html/browserquest/img/1/sword1.png differ diff --git a/public_html/browserquest/img/1/sword2.png b/public_html/browserquest/img/1/sword2.png new file mode 100644 index 0000000..9daeb03 Binary files /dev/null and b/public_html/browserquest/img/1/sword2.png differ diff --git a/public_html/browserquest/img/1/talk.png b/public_html/browserquest/img/1/talk.png new file mode 100644 index 0000000..2932a41 Binary files /dev/null and b/public_html/browserquest/img/1/talk.png differ diff --git a/public_html/browserquest/img/1/target.png b/public_html/browserquest/img/1/target.png new file mode 100644 index 0000000..711aa0b Binary files /dev/null and b/public_html/browserquest/img/1/target.png differ diff --git a/public_html/browserquest/img/1/tilesheet.png b/public_html/browserquest/img/1/tilesheet.png new file mode 100644 index 0000000..b9f7707 Binary files /dev/null and b/public_html/browserquest/img/1/tilesheet.png differ diff --git a/public_html/browserquest/img/1/villagegirl.png b/public_html/browserquest/img/1/villagegirl.png new file mode 100644 index 0000000..13b595d Binary files /dev/null and b/public_html/browserquest/img/1/villagegirl.png differ diff --git a/public_html/browserquest/img/1/villager.png b/public_html/browserquest/img/1/villager.png new file mode 100644 index 0000000..97e0752 Binary files /dev/null and b/public_html/browserquest/img/1/villager.png differ diff --git a/public_html/browserquest/img/1/wizard.png b/public_html/browserquest/img/1/wizard.png new file mode 100644 index 0000000..ea634f9 Binary files /dev/null and b/public_html/browserquest/img/1/wizard.png differ diff --git a/public_html/browserquest/img/1/wood.png b/public_html/browserquest/img/1/wood.png new file mode 100644 index 0000000..21d0669 Binary files /dev/null and b/public_html/browserquest/img/1/wood.png differ diff --git a/public_html/browserquest/img/1/wood2.png b/public_html/browserquest/img/1/wood2.png new file mode 100644 index 0000000..2b7cbd3 Binary files /dev/null and b/public_html/browserquest/img/1/wood2.png differ diff --git a/public_html/browserquest/img/1/wood3.png b/public_html/browserquest/img/1/wood3.png new file mode 100644 index 0000000..83ed733 Binary files /dev/null and b/public_html/browserquest/img/1/wood3.png differ diff --git a/public_html/browserquest/img/2/achievements.png b/public_html/browserquest/img/2/achievements.png new file mode 100644 index 0000000..e85a889 Binary files /dev/null and b/public_html/browserquest/img/2/achievements.png differ diff --git a/public_html/browserquest/img/2/agent.png b/public_html/browserquest/img/2/agent.png new file mode 100644 index 0000000..544b733 Binary files /dev/null and b/public_html/browserquest/img/2/agent.png differ diff --git a/public_html/browserquest/img/2/axe.png b/public_html/browserquest/img/2/axe.png new file mode 100644 index 0000000..669eee1 Binary files /dev/null and b/public_html/browserquest/img/2/axe.png differ diff --git a/public_html/browserquest/img/2/barsheet.png b/public_html/browserquest/img/2/barsheet.png new file mode 100644 index 0000000..cab19e9 Binary files /dev/null and b/public_html/browserquest/img/2/barsheet.png differ diff --git a/public_html/browserquest/img/2/bat.png b/public_html/browserquest/img/2/bat.png new file mode 100644 index 0000000..e7253d2 Binary files /dev/null and b/public_html/browserquest/img/2/bat.png differ diff --git a/public_html/browserquest/img/2/beachnpc.png b/public_html/browserquest/img/2/beachnpc.png new file mode 100644 index 0000000..c1b965a Binary files /dev/null and b/public_html/browserquest/img/2/beachnpc.png differ diff --git a/public_html/browserquest/img/2/bluesword.png b/public_html/browserquest/img/2/bluesword.png new file mode 100644 index 0000000..3e0b492 Binary files /dev/null and b/public_html/browserquest/img/2/bluesword.png differ diff --git a/public_html/browserquest/img/2/border.png b/public_html/browserquest/img/2/border.png new file mode 100644 index 0000000..d7ddfa5 Binary files /dev/null and b/public_html/browserquest/img/2/border.png differ diff --git a/public_html/browserquest/img/2/boss.png b/public_html/browserquest/img/2/boss.png new file mode 100644 index 0000000..71cbf90 Binary files /dev/null and b/public_html/browserquest/img/2/boss.png differ diff --git a/public_html/browserquest/img/2/chest.png b/public_html/browserquest/img/2/chest.png new file mode 100644 index 0000000..6199751 Binary files /dev/null and b/public_html/browserquest/img/2/chest.png differ diff --git a/public_html/browserquest/img/2/clotharmor.png b/public_html/browserquest/img/2/clotharmor.png new file mode 100644 index 0000000..cad21b6 Binary files /dev/null and b/public_html/browserquest/img/2/clotharmor.png differ diff --git a/public_html/browserquest/img/2/coder.png b/public_html/browserquest/img/2/coder.png new file mode 100644 index 0000000..f9057fe Binary files /dev/null and b/public_html/browserquest/img/2/coder.png differ diff --git a/public_html/browserquest/img/2/crab.png b/public_html/browserquest/img/2/crab.png new file mode 100644 index 0000000..e3c277c Binary files /dev/null and b/public_html/browserquest/img/2/crab.png differ diff --git a/public_html/browserquest/img/2/death.png b/public_html/browserquest/img/2/death.png new file mode 100644 index 0000000..52c4de1 Binary files /dev/null and b/public_html/browserquest/img/2/death.png differ diff --git a/public_html/browserquest/img/2/deathknight.png b/public_html/browserquest/img/2/deathknight.png new file mode 100644 index 0000000..3160fd1 Binary files /dev/null and b/public_html/browserquest/img/2/deathknight.png differ diff --git a/public_html/browserquest/img/2/desertnpc.png b/public_html/browserquest/img/2/desertnpc.png new file mode 100644 index 0000000..6455fcd Binary files /dev/null and b/public_html/browserquest/img/2/desertnpc.png differ diff --git a/public_html/browserquest/img/2/eye.png b/public_html/browserquest/img/2/eye.png new file mode 100644 index 0000000..73e50f0 Binary files /dev/null and b/public_html/browserquest/img/2/eye.png differ diff --git a/public_html/browserquest/img/2/firefox.png b/public_html/browserquest/img/2/firefox.png new file mode 100644 index 0000000..44f7e24 Binary files /dev/null and b/public_html/browserquest/img/2/firefox.png differ diff --git a/public_html/browserquest/img/2/forestnpc.png b/public_html/browserquest/img/2/forestnpc.png new file mode 100644 index 0000000..feb5207 Binary files /dev/null and b/public_html/browserquest/img/2/forestnpc.png differ diff --git a/public_html/browserquest/img/2/goblin.png b/public_html/browserquest/img/2/goblin.png new file mode 100644 index 0000000..a47f00d Binary files /dev/null and b/public_html/browserquest/img/2/goblin.png differ diff --git a/public_html/browserquest/img/2/goldenarmor.png b/public_html/browserquest/img/2/goldenarmor.png new file mode 100644 index 0000000..81fd3e2 Binary files /dev/null and b/public_html/browserquest/img/2/goldenarmor.png differ diff --git a/public_html/browserquest/img/2/goldensword.png b/public_html/browserquest/img/2/goldensword.png new file mode 100644 index 0000000..354aa93 Binary files /dev/null and b/public_html/browserquest/img/2/goldensword.png differ diff --git a/public_html/browserquest/img/2/guard.png b/public_html/browserquest/img/2/guard.png new file mode 100644 index 0000000..2268dbd Binary files /dev/null and b/public_html/browserquest/img/2/guard.png differ diff --git a/public_html/browserquest/img/2/hand.png b/public_html/browserquest/img/2/hand.png new file mode 100644 index 0000000..7010f66 Binary files /dev/null and b/public_html/browserquest/img/2/hand.png differ diff --git a/public_html/browserquest/img/2/item-axe.png b/public_html/browserquest/img/2/item-axe.png new file mode 100644 index 0000000..5b6e8bd Binary files /dev/null and b/public_html/browserquest/img/2/item-axe.png differ diff --git a/public_html/browserquest/img/2/item-bluesword.png b/public_html/browserquest/img/2/item-bluesword.png new file mode 100644 index 0000000..747fe01 Binary files /dev/null and b/public_html/browserquest/img/2/item-bluesword.png differ diff --git a/public_html/browserquest/img/2/item-burger.png b/public_html/browserquest/img/2/item-burger.png new file mode 100644 index 0000000..ea4e3a6 Binary files /dev/null and b/public_html/browserquest/img/2/item-burger.png differ diff --git a/public_html/browserquest/img/2/item-cake.png b/public_html/browserquest/img/2/item-cake.png new file mode 100644 index 0000000..66882fd Binary files /dev/null and b/public_html/browserquest/img/2/item-cake.png differ diff --git a/public_html/browserquest/img/2/item-clotharmor.png b/public_html/browserquest/img/2/item-clotharmor.png new file mode 100644 index 0000000..92f9514 Binary files /dev/null and b/public_html/browserquest/img/2/item-clotharmor.png differ diff --git a/public_html/browserquest/img/2/item-firepotion.png b/public_html/browserquest/img/2/item-firepotion.png new file mode 100644 index 0000000..626aadd Binary files /dev/null and b/public_html/browserquest/img/2/item-firepotion.png differ diff --git a/public_html/browserquest/img/2/item-flask.png b/public_html/browserquest/img/2/item-flask.png new file mode 100644 index 0000000..3f36114 Binary files /dev/null and b/public_html/browserquest/img/2/item-flask.png differ diff --git a/public_html/browserquest/img/2/item-goldenarmor.png b/public_html/browserquest/img/2/item-goldenarmor.png new file mode 100644 index 0000000..f65f0ba Binary files /dev/null and b/public_html/browserquest/img/2/item-goldenarmor.png differ diff --git a/public_html/browserquest/img/2/item-goldensword.png b/public_html/browserquest/img/2/item-goldensword.png new file mode 100644 index 0000000..b9058e6 Binary files /dev/null and b/public_html/browserquest/img/2/item-goldensword.png differ diff --git a/public_html/browserquest/img/2/item-leatherarmor.png b/public_html/browserquest/img/2/item-leatherarmor.png new file mode 100644 index 0000000..fd66086 Binary files /dev/null and b/public_html/browserquest/img/2/item-leatherarmor.png differ diff --git a/public_html/browserquest/img/2/item-mailarmor.png b/public_html/browserquest/img/2/item-mailarmor.png new file mode 100644 index 0000000..cec3f1f Binary files /dev/null and b/public_html/browserquest/img/2/item-mailarmor.png differ diff --git a/public_html/browserquest/img/2/item-morningstar.png b/public_html/browserquest/img/2/item-morningstar.png new file mode 100644 index 0000000..e0473cb Binary files /dev/null and b/public_html/browserquest/img/2/item-morningstar.png differ diff --git a/public_html/browserquest/img/2/item-platearmor.png b/public_html/browserquest/img/2/item-platearmor.png new file mode 100644 index 0000000..4043faf Binary files /dev/null and b/public_html/browserquest/img/2/item-platearmor.png differ diff --git a/public_html/browserquest/img/2/item-redarmor.png b/public_html/browserquest/img/2/item-redarmor.png new file mode 100644 index 0000000..909c38d Binary files /dev/null and b/public_html/browserquest/img/2/item-redarmor.png differ diff --git a/public_html/browserquest/img/2/item-redsword.png b/public_html/browserquest/img/2/item-redsword.png new file mode 100644 index 0000000..442d4de Binary files /dev/null and b/public_html/browserquest/img/2/item-redsword.png differ diff --git a/public_html/browserquest/img/2/item-sword1.png b/public_html/browserquest/img/2/item-sword1.png new file mode 100644 index 0000000..000fcf6 Binary files /dev/null and b/public_html/browserquest/img/2/item-sword1.png differ diff --git a/public_html/browserquest/img/2/item-sword2.png b/public_html/browserquest/img/2/item-sword2.png new file mode 100644 index 0000000..4128491 Binary files /dev/null and b/public_html/browserquest/img/2/item-sword2.png differ diff --git a/public_html/browserquest/img/2/king.png b/public_html/browserquest/img/2/king.png new file mode 100644 index 0000000..35f0474 Binary files /dev/null and b/public_html/browserquest/img/2/king.png differ diff --git a/public_html/browserquest/img/2/lavanpc.png b/public_html/browserquest/img/2/lavanpc.png new file mode 100644 index 0000000..2c261ec Binary files /dev/null and b/public_html/browserquest/img/2/lavanpc.png differ diff --git a/public_html/browserquest/img/2/leatherarmor.png b/public_html/browserquest/img/2/leatherarmor.png new file mode 100644 index 0000000..98831c1 Binary files /dev/null and b/public_html/browserquest/img/2/leatherarmor.png differ diff --git a/public_html/browserquest/img/2/loot.png b/public_html/browserquest/img/2/loot.png new file mode 100644 index 0000000..9010170 Binary files /dev/null and b/public_html/browserquest/img/2/loot.png differ diff --git a/public_html/browserquest/img/2/mailarmor.png b/public_html/browserquest/img/2/mailarmor.png new file mode 100644 index 0000000..9e9b96a Binary files /dev/null and b/public_html/browserquest/img/2/mailarmor.png differ diff --git a/public_html/browserquest/img/2/morningstar.png b/public_html/browserquest/img/2/morningstar.png new file mode 100644 index 0000000..7226dc6 Binary files /dev/null and b/public_html/browserquest/img/2/morningstar.png differ diff --git a/public_html/browserquest/img/2/nyan.png b/public_html/browserquest/img/2/nyan.png new file mode 100644 index 0000000..cf2d500 Binary files /dev/null and b/public_html/browserquest/img/2/nyan.png differ diff --git a/public_html/browserquest/img/2/octocat.png b/public_html/browserquest/img/2/octocat.png new file mode 100644 index 0000000..35b05c6 Binary files /dev/null and b/public_html/browserquest/img/2/octocat.png differ diff --git a/public_html/browserquest/img/2/ogre.png b/public_html/browserquest/img/2/ogre.png new file mode 100644 index 0000000..71eaa8e Binary files /dev/null and b/public_html/browserquest/img/2/ogre.png differ diff --git a/public_html/browserquest/img/2/platearmor.png b/public_html/browserquest/img/2/platearmor.png new file mode 100644 index 0000000..1aa4afe Binary files /dev/null and b/public_html/browserquest/img/2/platearmor.png differ diff --git a/public_html/browserquest/img/2/priest.png b/public_html/browserquest/img/2/priest.png new file mode 100644 index 0000000..9500608 Binary files /dev/null and b/public_html/browserquest/img/2/priest.png differ diff --git a/public_html/browserquest/img/2/rat.png b/public_html/browserquest/img/2/rat.png new file mode 100644 index 0000000..8a96fa1 Binary files /dev/null and b/public_html/browserquest/img/2/rat.png differ diff --git a/public_html/browserquest/img/2/redarmor.png b/public_html/browserquest/img/2/redarmor.png new file mode 100644 index 0000000..a770320 Binary files /dev/null and b/public_html/browserquest/img/2/redarmor.png differ diff --git a/public_html/browserquest/img/2/redsword.png b/public_html/browserquest/img/2/redsword.png new file mode 100644 index 0000000..28b7423 Binary files /dev/null and b/public_html/browserquest/img/2/redsword.png differ diff --git a/public_html/browserquest/img/2/rick.png b/public_html/browserquest/img/2/rick.png new file mode 100644 index 0000000..0646ec7 Binary files /dev/null and b/public_html/browserquest/img/2/rick.png differ diff --git a/public_html/browserquest/img/2/scientist.png b/public_html/browserquest/img/2/scientist.png new file mode 100644 index 0000000..a7cab4d Binary files /dev/null and b/public_html/browserquest/img/2/scientist.png differ diff --git a/public_html/browserquest/img/2/shadow16.png b/public_html/browserquest/img/2/shadow16.png new file mode 100644 index 0000000..686596f Binary files /dev/null and b/public_html/browserquest/img/2/shadow16.png differ diff --git a/public_html/browserquest/img/2/skeleton.png b/public_html/browserquest/img/2/skeleton.png new file mode 100644 index 0000000..8bf55df Binary files /dev/null and b/public_html/browserquest/img/2/skeleton.png differ diff --git a/public_html/browserquest/img/2/skeleton2.png b/public_html/browserquest/img/2/skeleton2.png new file mode 100644 index 0000000..48dee3a Binary files /dev/null and b/public_html/browserquest/img/2/skeleton2.png differ diff --git a/public_html/browserquest/img/2/snake.png b/public_html/browserquest/img/2/snake.png new file mode 100644 index 0000000..847f163 Binary files /dev/null and b/public_html/browserquest/img/2/snake.png differ diff --git a/public_html/browserquest/img/2/sorcerer.png b/public_html/browserquest/img/2/sorcerer.png new file mode 100644 index 0000000..e2a28ff Binary files /dev/null and b/public_html/browserquest/img/2/sorcerer.png differ diff --git a/public_html/browserquest/img/2/sparks.png b/public_html/browserquest/img/2/sparks.png new file mode 100644 index 0000000..13ab6f6 Binary files /dev/null and b/public_html/browserquest/img/2/sparks.png differ diff --git a/public_html/browserquest/img/2/spectre.png b/public_html/browserquest/img/2/spectre.png new file mode 100644 index 0000000..2687652 Binary files /dev/null and b/public_html/browserquest/img/2/spectre.png differ diff --git a/public_html/browserquest/img/2/spritesheet.png b/public_html/browserquest/img/2/spritesheet.png new file mode 100644 index 0000000..a7b3383 Binary files /dev/null and b/public_html/browserquest/img/2/spritesheet.png differ diff --git a/public_html/browserquest/img/2/sword.png b/public_html/browserquest/img/2/sword.png new file mode 100644 index 0000000..87447eb Binary files /dev/null and b/public_html/browserquest/img/2/sword.png differ diff --git a/public_html/browserquest/img/2/sword1.png b/public_html/browserquest/img/2/sword1.png new file mode 100644 index 0000000..45562d2 Binary files /dev/null and b/public_html/browserquest/img/2/sword1.png differ diff --git a/public_html/browserquest/img/2/sword2.png b/public_html/browserquest/img/2/sword2.png new file mode 100644 index 0000000..10b4acb Binary files /dev/null and b/public_html/browserquest/img/2/sword2.png differ diff --git a/public_html/browserquest/img/2/talk.png b/public_html/browserquest/img/2/talk.png new file mode 100644 index 0000000..e8528d0 Binary files /dev/null and b/public_html/browserquest/img/2/talk.png differ diff --git a/public_html/browserquest/img/2/target.png b/public_html/browserquest/img/2/target.png new file mode 100644 index 0000000..5ec1c99 Binary files /dev/null and b/public_html/browserquest/img/2/target.png differ diff --git a/public_html/browserquest/img/2/tilesheet.png b/public_html/browserquest/img/2/tilesheet.png new file mode 100644 index 0000000..9eb40fc Binary files /dev/null and b/public_html/browserquest/img/2/tilesheet.png differ diff --git a/public_html/browserquest/img/2/villagegirl.png b/public_html/browserquest/img/2/villagegirl.png new file mode 100644 index 0000000..699d886 Binary files /dev/null and b/public_html/browserquest/img/2/villagegirl.png differ diff --git a/public_html/browserquest/img/2/villager.png b/public_html/browserquest/img/2/villager.png new file mode 100644 index 0000000..feb5207 Binary files /dev/null and b/public_html/browserquest/img/2/villager.png differ diff --git a/public_html/browserquest/img/2/wizard.png b/public_html/browserquest/img/2/wizard.png new file mode 100644 index 0000000..2b6c766 Binary files /dev/null and b/public_html/browserquest/img/2/wizard.png differ diff --git a/public_html/browserquest/img/2/wood.png b/public_html/browserquest/img/2/wood.png new file mode 100644 index 0000000..a8c8998 Binary files /dev/null and b/public_html/browserquest/img/2/wood.png differ diff --git a/public_html/browserquest/img/2/wood2.png b/public_html/browserquest/img/2/wood2.png new file mode 100644 index 0000000..623aff8 Binary files /dev/null and b/public_html/browserquest/img/2/wood2.png differ diff --git a/public_html/browserquest/img/2/wood3.png b/public_html/browserquest/img/2/wood3.png new file mode 100644 index 0000000..8bab21a Binary files /dev/null and b/public_html/browserquest/img/2/wood3.png differ diff --git a/public_html/browserquest/img/3/achievements.png b/public_html/browserquest/img/3/achievements.png new file mode 100644 index 0000000..1dccc7d Binary files /dev/null and b/public_html/browserquest/img/3/achievements.png differ diff --git a/public_html/browserquest/img/3/agent.png b/public_html/browserquest/img/3/agent.png new file mode 100644 index 0000000..99240b7 Binary files /dev/null and b/public_html/browserquest/img/3/agent.png differ diff --git a/public_html/browserquest/img/3/axe.png b/public_html/browserquest/img/3/axe.png new file mode 100644 index 0000000..e0cd012 Binary files /dev/null and b/public_html/browserquest/img/3/axe.png differ diff --git a/public_html/browserquest/img/3/barsheet.png b/public_html/browserquest/img/3/barsheet.png new file mode 100644 index 0000000..d7f88de Binary files /dev/null and b/public_html/browserquest/img/3/barsheet.png differ diff --git a/public_html/browserquest/img/3/bat.png b/public_html/browserquest/img/3/bat.png new file mode 100644 index 0000000..8c61404 Binary files /dev/null and b/public_html/browserquest/img/3/bat.png differ diff --git a/public_html/browserquest/img/3/beachnpc.png b/public_html/browserquest/img/3/beachnpc.png new file mode 100644 index 0000000..92c1f69 Binary files /dev/null and b/public_html/browserquest/img/3/beachnpc.png differ diff --git a/public_html/browserquest/img/3/bluesword.png b/public_html/browserquest/img/3/bluesword.png new file mode 100644 index 0000000..2b04024 Binary files /dev/null and b/public_html/browserquest/img/3/bluesword.png differ diff --git a/public_html/browserquest/img/3/border.png b/public_html/browserquest/img/3/border.png new file mode 100644 index 0000000..f4ddd1d Binary files /dev/null and b/public_html/browserquest/img/3/border.png differ diff --git a/public_html/browserquest/img/3/boss.png b/public_html/browserquest/img/3/boss.png new file mode 100644 index 0000000..f7099d5 Binary files /dev/null and b/public_html/browserquest/img/3/boss.png differ diff --git a/public_html/browserquest/img/3/chest.png b/public_html/browserquest/img/3/chest.png new file mode 100644 index 0000000..8067b01 Binary files /dev/null and b/public_html/browserquest/img/3/chest.png differ diff --git a/public_html/browserquest/img/3/clotharmor.png b/public_html/browserquest/img/3/clotharmor.png new file mode 100644 index 0000000..a9467fe Binary files /dev/null and b/public_html/browserquest/img/3/clotharmor.png differ diff --git a/public_html/browserquest/img/3/coder.png b/public_html/browserquest/img/3/coder.png new file mode 100644 index 0000000..b6f8b9c Binary files /dev/null and b/public_html/browserquest/img/3/coder.png differ diff --git a/public_html/browserquest/img/3/crab.png b/public_html/browserquest/img/3/crab.png new file mode 100644 index 0000000..448d573 Binary files /dev/null and b/public_html/browserquest/img/3/crab.png differ diff --git a/public_html/browserquest/img/3/death.png b/public_html/browserquest/img/3/death.png new file mode 100644 index 0000000..b578239 Binary files /dev/null and b/public_html/browserquest/img/3/death.png differ diff --git a/public_html/browserquest/img/3/deathknight.png b/public_html/browserquest/img/3/deathknight.png new file mode 100644 index 0000000..3d8a109 Binary files /dev/null and b/public_html/browserquest/img/3/deathknight.png differ diff --git a/public_html/browserquest/img/3/desertnpc.png b/public_html/browserquest/img/3/desertnpc.png new file mode 100644 index 0000000..60ef8c0 Binary files /dev/null and b/public_html/browserquest/img/3/desertnpc.png differ diff --git a/public_html/browserquest/img/3/eye.png b/public_html/browserquest/img/3/eye.png new file mode 100644 index 0000000..ee66ca2 Binary files /dev/null and b/public_html/browserquest/img/3/eye.png differ diff --git a/public_html/browserquest/img/3/firefox.png b/public_html/browserquest/img/3/firefox.png new file mode 100644 index 0000000..6c18770 Binary files /dev/null and b/public_html/browserquest/img/3/firefox.png differ diff --git a/public_html/browserquest/img/3/forestnpc.png b/public_html/browserquest/img/3/forestnpc.png new file mode 100644 index 0000000..656289c Binary files /dev/null and b/public_html/browserquest/img/3/forestnpc.png differ diff --git a/public_html/browserquest/img/3/goblin.png b/public_html/browserquest/img/3/goblin.png new file mode 100644 index 0000000..c6988e4 Binary files /dev/null and b/public_html/browserquest/img/3/goblin.png differ diff --git a/public_html/browserquest/img/3/goldenarmor.png b/public_html/browserquest/img/3/goldenarmor.png new file mode 100644 index 0000000..9749bd7 Binary files /dev/null and b/public_html/browserquest/img/3/goldenarmor.png differ diff --git a/public_html/browserquest/img/3/goldensword.png b/public_html/browserquest/img/3/goldensword.png new file mode 100644 index 0000000..3ca4993 Binary files /dev/null and b/public_html/browserquest/img/3/goldensword.png differ diff --git a/public_html/browserquest/img/3/guard.png b/public_html/browserquest/img/3/guard.png new file mode 100644 index 0000000..c817c65 Binary files /dev/null and b/public_html/browserquest/img/3/guard.png differ diff --git a/public_html/browserquest/img/3/hand.png b/public_html/browserquest/img/3/hand.png new file mode 100644 index 0000000..01122fb Binary files /dev/null and b/public_html/browserquest/img/3/hand.png differ diff --git a/public_html/browserquest/img/3/item-axe.png b/public_html/browserquest/img/3/item-axe.png new file mode 100644 index 0000000..6226bc5 Binary files /dev/null and b/public_html/browserquest/img/3/item-axe.png differ diff --git a/public_html/browserquest/img/3/item-bluesword.png b/public_html/browserquest/img/3/item-bluesword.png new file mode 100644 index 0000000..2b55bb5 Binary files /dev/null and b/public_html/browserquest/img/3/item-bluesword.png differ diff --git a/public_html/browserquest/img/3/item-burger.png b/public_html/browserquest/img/3/item-burger.png new file mode 100644 index 0000000..f4cbe6d Binary files /dev/null and b/public_html/browserquest/img/3/item-burger.png differ diff --git a/public_html/browserquest/img/3/item-cake.png b/public_html/browserquest/img/3/item-cake.png new file mode 100644 index 0000000..67c78c6 Binary files /dev/null and b/public_html/browserquest/img/3/item-cake.png differ diff --git a/public_html/browserquest/img/3/item-clotharmor.png b/public_html/browserquest/img/3/item-clotharmor.png new file mode 100644 index 0000000..4a85585 Binary files /dev/null and b/public_html/browserquest/img/3/item-clotharmor.png differ diff --git a/public_html/browserquest/img/3/item-firepotion.png b/public_html/browserquest/img/3/item-firepotion.png new file mode 100644 index 0000000..5b7474e Binary files /dev/null and b/public_html/browserquest/img/3/item-firepotion.png differ diff --git a/public_html/browserquest/img/3/item-flask.png b/public_html/browserquest/img/3/item-flask.png new file mode 100644 index 0000000..8e635fe Binary files /dev/null and b/public_html/browserquest/img/3/item-flask.png differ diff --git a/public_html/browserquest/img/3/item-goldenarmor.png b/public_html/browserquest/img/3/item-goldenarmor.png new file mode 100644 index 0000000..3c0fa71 Binary files /dev/null and b/public_html/browserquest/img/3/item-goldenarmor.png differ diff --git a/public_html/browserquest/img/3/item-goldensword.png b/public_html/browserquest/img/3/item-goldensword.png new file mode 100644 index 0000000..0711322 Binary files /dev/null and b/public_html/browserquest/img/3/item-goldensword.png differ diff --git a/public_html/browserquest/img/3/item-leatherarmor.png b/public_html/browserquest/img/3/item-leatherarmor.png new file mode 100644 index 0000000..fd2d034 Binary files /dev/null and b/public_html/browserquest/img/3/item-leatherarmor.png differ diff --git a/public_html/browserquest/img/3/item-mailarmor.png b/public_html/browserquest/img/3/item-mailarmor.png new file mode 100644 index 0000000..db23b60 Binary files /dev/null and b/public_html/browserquest/img/3/item-mailarmor.png differ diff --git a/public_html/browserquest/img/3/item-morningstar.png b/public_html/browserquest/img/3/item-morningstar.png new file mode 100644 index 0000000..18f7d13 Binary files /dev/null and b/public_html/browserquest/img/3/item-morningstar.png differ diff --git a/public_html/browserquest/img/3/item-platearmor.png b/public_html/browserquest/img/3/item-platearmor.png new file mode 100644 index 0000000..562f4e8 Binary files /dev/null and b/public_html/browserquest/img/3/item-platearmor.png differ diff --git a/public_html/browserquest/img/3/item-redarmor.png b/public_html/browserquest/img/3/item-redarmor.png new file mode 100644 index 0000000..2604f5d Binary files /dev/null and b/public_html/browserquest/img/3/item-redarmor.png differ diff --git a/public_html/browserquest/img/3/item-redsword.png b/public_html/browserquest/img/3/item-redsword.png new file mode 100644 index 0000000..310dd5e Binary files /dev/null and b/public_html/browserquest/img/3/item-redsword.png differ diff --git a/public_html/browserquest/img/3/item-sword1.png b/public_html/browserquest/img/3/item-sword1.png new file mode 100644 index 0000000..70561f5 Binary files /dev/null and b/public_html/browserquest/img/3/item-sword1.png differ diff --git a/public_html/browserquest/img/3/item-sword2.png b/public_html/browserquest/img/3/item-sword2.png new file mode 100644 index 0000000..f90c619 Binary files /dev/null and b/public_html/browserquest/img/3/item-sword2.png differ diff --git a/public_html/browserquest/img/3/king.png b/public_html/browserquest/img/3/king.png new file mode 100644 index 0000000..1f29c0e Binary files /dev/null and b/public_html/browserquest/img/3/king.png differ diff --git a/public_html/browserquest/img/3/lavanpc.png b/public_html/browserquest/img/3/lavanpc.png new file mode 100644 index 0000000..e08b526 Binary files /dev/null and b/public_html/browserquest/img/3/lavanpc.png differ diff --git a/public_html/browserquest/img/3/leatherarmor.png b/public_html/browserquest/img/3/leatherarmor.png new file mode 100644 index 0000000..f86ef8b Binary files /dev/null and b/public_html/browserquest/img/3/leatherarmor.png differ diff --git a/public_html/browserquest/img/3/loot.png b/public_html/browserquest/img/3/loot.png new file mode 100644 index 0000000..17eca43 Binary files /dev/null and b/public_html/browserquest/img/3/loot.png differ diff --git a/public_html/browserquest/img/3/mailarmor.png b/public_html/browserquest/img/3/mailarmor.png new file mode 100644 index 0000000..db926d5 Binary files /dev/null and b/public_html/browserquest/img/3/mailarmor.png differ diff --git a/public_html/browserquest/img/3/morningstar.png b/public_html/browserquest/img/3/morningstar.png new file mode 100644 index 0000000..77f6b94 Binary files /dev/null and b/public_html/browserquest/img/3/morningstar.png differ diff --git a/public_html/browserquest/img/3/nyan.png b/public_html/browserquest/img/3/nyan.png new file mode 100644 index 0000000..6e501f3 Binary files /dev/null and b/public_html/browserquest/img/3/nyan.png differ diff --git a/public_html/browserquest/img/3/octocat.png b/public_html/browserquest/img/3/octocat.png new file mode 100644 index 0000000..16f8a95 Binary files /dev/null and b/public_html/browserquest/img/3/octocat.png differ diff --git a/public_html/browserquest/img/3/ogre.png b/public_html/browserquest/img/3/ogre.png new file mode 100644 index 0000000..9296df0 Binary files /dev/null and b/public_html/browserquest/img/3/ogre.png differ diff --git a/public_html/browserquest/img/3/platearmor.png b/public_html/browserquest/img/3/platearmor.png new file mode 100644 index 0000000..c8b21f3 Binary files /dev/null and b/public_html/browserquest/img/3/platearmor.png differ diff --git a/public_html/browserquest/img/3/priest.png b/public_html/browserquest/img/3/priest.png new file mode 100644 index 0000000..a84f729 Binary files /dev/null and b/public_html/browserquest/img/3/priest.png differ diff --git a/public_html/browserquest/img/3/rat.png b/public_html/browserquest/img/3/rat.png new file mode 100644 index 0000000..083d224 Binary files /dev/null and b/public_html/browserquest/img/3/rat.png differ diff --git a/public_html/browserquest/img/3/redarmor.png b/public_html/browserquest/img/3/redarmor.png new file mode 100644 index 0000000..88e0b55 Binary files /dev/null and b/public_html/browserquest/img/3/redarmor.png differ diff --git a/public_html/browserquest/img/3/redsword.png b/public_html/browserquest/img/3/redsword.png new file mode 100644 index 0000000..8307668 Binary files /dev/null and b/public_html/browserquest/img/3/redsword.png differ diff --git a/public_html/browserquest/img/3/rick.png b/public_html/browserquest/img/3/rick.png new file mode 100644 index 0000000..55be26c Binary files /dev/null and b/public_html/browserquest/img/3/rick.png differ diff --git a/public_html/browserquest/img/3/scientist.png b/public_html/browserquest/img/3/scientist.png new file mode 100644 index 0000000..080d368 Binary files /dev/null and b/public_html/browserquest/img/3/scientist.png differ diff --git a/public_html/browserquest/img/3/shadow16.png b/public_html/browserquest/img/3/shadow16.png new file mode 100644 index 0000000..8059a83 Binary files /dev/null and b/public_html/browserquest/img/3/shadow16.png differ diff --git a/public_html/browserquest/img/3/skeleton.png b/public_html/browserquest/img/3/skeleton.png new file mode 100644 index 0000000..44faf36 Binary files /dev/null and b/public_html/browserquest/img/3/skeleton.png differ diff --git a/public_html/browserquest/img/3/skeleton2.png b/public_html/browserquest/img/3/skeleton2.png new file mode 100644 index 0000000..22a232f Binary files /dev/null and b/public_html/browserquest/img/3/skeleton2.png differ diff --git a/public_html/browserquest/img/3/snake.png b/public_html/browserquest/img/3/snake.png new file mode 100644 index 0000000..5f2ee77 Binary files /dev/null and b/public_html/browserquest/img/3/snake.png differ diff --git a/public_html/browserquest/img/3/sorcerer.png b/public_html/browserquest/img/3/sorcerer.png new file mode 100644 index 0000000..6871f84 Binary files /dev/null and b/public_html/browserquest/img/3/sorcerer.png differ diff --git a/public_html/browserquest/img/3/sparks.png b/public_html/browserquest/img/3/sparks.png new file mode 100644 index 0000000..cd4a4a6 Binary files /dev/null and b/public_html/browserquest/img/3/sparks.png differ diff --git a/public_html/browserquest/img/3/spectre.png b/public_html/browserquest/img/3/spectre.png new file mode 100644 index 0000000..a624a35 Binary files /dev/null and b/public_html/browserquest/img/3/spectre.png differ diff --git a/public_html/browserquest/img/3/spritesheet.png b/public_html/browserquest/img/3/spritesheet.png new file mode 100644 index 0000000..7e73ddb Binary files /dev/null and b/public_html/browserquest/img/3/spritesheet.png differ diff --git a/public_html/browserquest/img/3/sword.png b/public_html/browserquest/img/3/sword.png new file mode 100644 index 0000000..563abdd Binary files /dev/null and b/public_html/browserquest/img/3/sword.png differ diff --git a/public_html/browserquest/img/3/sword1.png b/public_html/browserquest/img/3/sword1.png new file mode 100644 index 0000000..0c56006 Binary files /dev/null and b/public_html/browserquest/img/3/sword1.png differ diff --git a/public_html/browserquest/img/3/sword2.png b/public_html/browserquest/img/3/sword2.png new file mode 100644 index 0000000..6819c33 Binary files /dev/null and b/public_html/browserquest/img/3/sword2.png differ diff --git a/public_html/browserquest/img/3/talk.png b/public_html/browserquest/img/3/talk.png new file mode 100644 index 0000000..1207968 Binary files /dev/null and b/public_html/browserquest/img/3/talk.png differ diff --git a/public_html/browserquest/img/3/target.png b/public_html/browserquest/img/3/target.png new file mode 100644 index 0000000..533d7ac Binary files /dev/null and b/public_html/browserquest/img/3/target.png differ diff --git a/public_html/browserquest/img/3/tilesheet.png b/public_html/browserquest/img/3/tilesheet.png new file mode 100644 index 0000000..1e95f82 Binary files /dev/null and b/public_html/browserquest/img/3/tilesheet.png differ diff --git a/public_html/browserquest/img/3/villagegirl.png b/public_html/browserquest/img/3/villagegirl.png new file mode 100644 index 0000000..849a937 Binary files /dev/null and b/public_html/browserquest/img/3/villagegirl.png differ diff --git a/public_html/browserquest/img/3/villager.png b/public_html/browserquest/img/3/villager.png new file mode 100644 index 0000000..656289c Binary files /dev/null and b/public_html/browserquest/img/3/villager.png differ diff --git a/public_html/browserquest/img/3/wizard.png b/public_html/browserquest/img/3/wizard.png new file mode 100644 index 0000000..18cf1a5 Binary files /dev/null and b/public_html/browserquest/img/3/wizard.png differ diff --git a/public_html/browserquest/img/3/wood.png b/public_html/browserquest/img/3/wood.png new file mode 100644 index 0000000..2e8621b Binary files /dev/null and b/public_html/browserquest/img/3/wood.png differ diff --git a/public_html/browserquest/img/3/wood2.png b/public_html/browserquest/img/3/wood2.png new file mode 100644 index 0000000..86ae133 Binary files /dev/null and b/public_html/browserquest/img/3/wood2.png differ diff --git a/public_html/browserquest/img/3/wood3.png b/public_html/browserquest/img/3/wood3.png new file mode 100644 index 0000000..e08cb9d Binary files /dev/null and b/public_html/browserquest/img/3/wood3.png differ diff --git a/public_html/browserquest/img/common/empty.cur b/public_html/browserquest/img/common/empty.cur new file mode 100644 index 0000000..6fb1837 Binary files /dev/null and b/public_html/browserquest/img/common/empty.cur differ diff --git a/public_html/browserquest/img/common/favicon.png b/public_html/browserquest/img/common/favicon.png new file mode 100644 index 0000000..a1783aa Binary files /dev/null and b/public_html/browserquest/img/common/favicon.png differ diff --git a/public_html/browserquest/img/common/loading-error.png b/public_html/browserquest/img/common/loading-error.png new file mode 100644 index 0000000..dbf9c71 Binary files /dev/null and b/public_html/browserquest/img/common/loading-error.png differ diff --git a/public_html/browserquest/img/common/loading.png b/public_html/browserquest/img/common/loading.png new file mode 100644 index 0000000..3500d8c Binary files /dev/null and b/public_html/browserquest/img/common/loading.png differ diff --git a/public_html/browserquest/img/common/promo-title.jpg b/public_html/browserquest/img/common/promo-title.jpg new file mode 100644 index 0000000..5026494 Binary files /dev/null and b/public_html/browserquest/img/common/promo-title.jpg differ diff --git a/public_html/browserquest/img/common/screenshot.jpg b/public_html/browserquest/img/common/screenshot.jpg new file mode 100644 index 0000000..dd4873c Binary files /dev/null and b/public_html/browserquest/img/common/screenshot.jpg differ diff --git a/public_html/browserquest/img/common/spinner.gif b/public_html/browserquest/img/common/spinner.gif new file mode 100644 index 0000000..332616c Binary files /dev/null and b/public_html/browserquest/img/common/spinner.gif differ diff --git a/public_html/browserquest/img/common/thingy.png b/public_html/browserquest/img/common/thingy.png new file mode 100644 index 0000000..4356b02 Binary files /dev/null and b/public_html/browserquest/img/common/thingy.png differ diff --git a/public_html/browserquest/index.html b/public_html/browserquest/index.html new file mode 100644 index 0000000..2a75f61 --- /dev/null +++ b/public_html/browserquest/index.html @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + BrowserQuest + + + + +
+

+ + + +

+
+

+ Please rotate your device to landscape mode +

+
+
+
+
+
+
+

+ + A Massively Multiplayer Adventure + +

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

+ + Load your character + +

+
+
+
+
+ +
+
+
+
+ +
+
+ or create a new character +
+
+
+

+ + Delete your character? + +

+

+ All your items and achievements will be lost.
+ Are you sure you wish to continue? +

+
+
+ cancel +
+
+ +
+

+ + + What is BrowserQuest? + + +

+

+ BrowserQuest is a multiplayer game inviting you to explore a + world of adventure from your Web browser. +

+
+
+

+ This demo is powered by HTML5 and WebSockets, which allow for real-time gaming and apps on the Web. +

+ + + Learn more about the technology + +
+
+
+

+ BrowserQuest is available on Firefox, Chrome, Safari as well as iOS devices and Firefox for Android. +

+ + + Grab the source on Github + +
+
+ - click anywhere to close - +
+
+
+

You are dead...

+
+
+
+

+ + Your browser cannot run BrowserQuest! + +

+

+ We're sorry, but your browser does not support WebSockets.
+ In order to play, we recommend using the latest version of Firefox, Chrome or Safari. +

+
+
+
+
+
+
+
+
+
+

+ + How to play + +

+
    +
  • Left click or tap to move, attack and pick up items.
  • +
  • Press ENTER to chat.
  • +
  • Your character is automatically saved as you play.
  • +
+

- click anywhere to close -

+
+
+
+
+
+
+
+
+ Completed +
+ 0 + / + +
+
+ +
+
+ + + +
+
+
+
+
+
+
+
+
New Achievement Unlocked!
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ 0 players +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ 0 players in this world +
+
+ 0 players total +
+
+
+
+ + + + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/public_html/browserquest/js/animation.js b/public_html/browserquest/js/animation.js new file mode 100644 index 0000000..dced016 --- /dev/null +++ b/public_html/browserquest/js/animation.js @@ -0,0 +1 @@ +define([],function(){var e=Class.extend({init:function(e,t,n,r,i){this.name=e,this.length=t,this.row=n,this.width=r,this.height=i,this.reset()},tick:function(){var e=this.currentFrame.index;e=e0&&e===0){this.count-=1;if(this.count===0){this.currentFrame.index=0,this.endcount_callback();return}}this.currentFrame.x=this.width*e,this.currentFrame.y=this.height*this.row,this.currentFrame.index=e},setSpeed:function(e){this.speed=e},setCount:function(e,t){this.count=e,this.endcount_callback=t},isTimeToAnimate:function(e){return e-this.lastTime>this.speed},update:function(e){return this.lastTime===0&&this.name.substr(0,3)==="atk"&&(this.lastTime=e),this.isTimeToAnimate(e)?(this.lastTime=e,this.tick(),!0):!1},reset:function(){this.lastTime=0,this.currentFrame={index:0,x:0,y:this.row*this.height}}});return e}); \ No newline at end of file diff --git a/public_html/browserquest/js/app.js b/public_html/browserquest/js/app.js new file mode 100644 index 0000000..151e9fc --- /dev/null +++ b/public_html/browserquest/js/app.js @@ -0,0 +1 @@ +define(["jquery","storage"],function(e,t){var n=Class.extend({init:function(){this.currentPage=1,this.blinkInterval=null,this.previousState=null,this.isParchmentReady=!0,this.ready=!1,this.storage=new t,this.watchNameInputInterval=setInterval(this.toggleButton.bind(this),100),this.$playButton=e(".play"),this.$playDiv=e(".play div")},setGame:function(e){this.game=e,this.isMobile=this.game.renderer.mobile,this.isTablet=this.game.renderer.tablet,this.isDesktop=!this.isMobile&&!this.isTablet,this.supportsWorkers=!!window.Worker,this.ready=!0},center:function(){window.scrollTo(0,1)},canStartGame:function(){return this.isDesktop?this.game&&this.game.map&&this.game.map.isLoaded:this.game},tryStartingGame:function(e,t){var n=this,r=this.$playButton;if(e!=="")if(!this.ready||!this.canStartGame()){this.isMobile||r.addClass("loading"),this.$playDiv.unbind("click");var i=setInterval(function(){log.debug("waiting..."),n.canStartGame()&&(setTimeout(function(){n.isMobile||r.removeClass("loading")},1500),clearInterval(i),n.startGame(e,t))},100)}else this.$playDiv.unbind("click"),this.startGame(e,t)},startGame:function(e,t){var n=this;t&&t(),this.hideIntro(function(){n.isDesktop||n.game.loadMap(),n.start(e)})},start:function(t){var n=this,r=!n.storage.hasAlreadyPlayed();if(t&&!this.game.started){var i=!1,s=this.config;i||(log.debug("Starting game with build config."),this.game.setServerOptions(s.build.host,s.build.port,t)),this.center(),this.game.run(function(){e("body").addClass("started"),r&&n.toggleInstructions()})}},setMouseCoordinates:function(t){var n=e("#container").offset(),r=this.game.renderer.getScaleFactor(),i=this.game.renderer.getWidth(),s=this.game.renderer.getHeight(),o=this.game.mouse;o.x=t.pageX-n.left-(this.isMobile?0:5*r),o.y=t.pageY-n.top-(this.isMobile?0:7*r),o.x<=0?o.x=0:o.x>=i&&(o.x=i-1),o.y<=0?o.y=0:o.y>=s&&(o.y=s-1)},initHealthBar:function(){var t=this.game.renderer.getScaleFactor(),n=e("#healthbar").width()-12*t;this.game.onPlayerHealthChange(function(t,r){var i=Math.round(n/r*(t>0?t:0));e("#hitpoints").css("width",i+"px")}),this.game.onPlayerHurt(this.blinkHealthBar.bind(this))},blinkHealthBar:function(){var t=e("#hitpoints");t.addClass("white"),setTimeout(function(){t.removeClass("white")},500)},toggleButton:function(){var t=e("#parchment input").val(),n=e("#createcharacter .play");t&&t.length>0?(n.removeClass("disabled"),e("#character").removeClass("disabled")):(n.addClass("disabled"),e("#character").addClass("disabled"))},hideIntro:function(t){clearInterval(this.watchNameInputInterval),e("body").removeClass("intro"),setTimeout(function(){e("body").addClass("game"),t()},1e3)},showChat:function(){this.game.started&&(e("#chatbox").addClass("active"),e("#chatinput").focus(),e("#chatbutton").addClass("active"))},hideChat:function(){this.game.started&&(e("#chatbox").removeClass("active"),e("#chatinput").blur(),e("#chatbutton").removeClass("active"))},toggleInstructions:function(){e("#achievements").hasClass("active")&&(this.toggleAchievements(),e("#achievementsbutton").removeClass("active")),e("#instructions").toggleClass("active")},toggleAchievements:function(){e("#instructions").hasClass("active")&&(this.toggleInstructions(),e("#helpbutton").removeClass("active")),this.resetPage(),e("#achievements").toggleClass("active")},resetPage:function(){var t=this,n=e("#achievements");n.hasClass("active")&&n.bind(TRANSITIONEND,function(){n.removeClass("page"+t.currentPage).addClass("page1"),t.currentPage=1,n.unbind(TRANSITIONEND)})},initEquipmentIcons:function(){var t=this.game.renderer.getScaleFactor(),n=function(e){return"img/"+t+"/item-"+e+".png"},r=this.game.player.getWeaponName(),i=this.game.player.getSpriteName(),s=n(r),o=n(i);e("#weapon").css("background-image",'url("'+s+'")'),i!=="firefox"&&e("#armor").css("background-image",'url("'+o+'")')},hideWindows:function(){e("#achievements").hasClass("active")&&(this.toggleAchievements(),e("#achievementsbutton").removeClass("active")),e("#instructions").hasClass("active")&&(this.toggleInstructions(),e("#helpbutton").removeClass("active")),e("body").hasClass("credits")&&this.closeInGameCredits(),e("body").hasClass("about")&&this.closeInGameAbout()},showAchievementNotification:function(t,n){var r=e("#achievement-notification"),i=r.find(".name"),s=e("#achievementsbutton");r.removeClass().addClass("active achievement"+t),i.text(n),this.game.storage.getAchievementCount()===1&&(this.blinkInterval=setInterval(function(){s.toggleClass("blink")},500)),setTimeout(function(){r.removeClass("active"),s.removeClass("blink")},5e3)},displayUnlockedAchievement:function(t){var n=e("#achievements li.achievement"+t),r=this.game.getAchievementById(t);r&&r.hidden&&this.setAchievementData(n,r.name,r.desc),n.addClass("unlocked")},unlockAchievement:function(t,n){this.showAchievementNotification(t,n),this.displayUnlockedAchievement(t);var r=parseInt(e("#unlocked-achievements").text());e("#unlocked-achievements").text(r+1)},initAchievementList:function(t){var n=this,r=e("#lists"),i=e("#page-tmpl"),s=e("#achievement-tmpl"),o=0,u=0,a=null;_.each(t,function(t){u++;var f=s.clone();f.removeAttr("id"),f.addClass("achievement"+u),t.hidden||n.setAchievementData(f,t.name,t.desc),f.find(".twitter").attr("href","http://twitter.com/share?url=http%3A%2F%2Fbrowserquest.mozilla.org&text=I%20unlocked%20the%20%27"+t.name+"%27%20achievement%20on%20Mozilla%27s%20%23BrowserQuest%21&related=glecollinet:Creators%20of%20BrowserQuest%2Cwhatthefranck"),f.show(),f.find("a").click(function(){var t=e(this).attr("href");return n.openPopup("twitter",t),!1}),(u-1)%4===0&&(o++,a=i.clone(),a.attr("id","page"+o),a.show(),r.append(a)),a.append(f)}),e("#total-achievements").text(e("#achievements").find("li").length)},initUnlockedAchievements:function(t){var n=this;_.each(t,function(e){n.displayUnlockedAchievement(e)}),e("#unlocked-achievements").text(t.length)},setAchievementData:function(e,t,n){e.find(".achievement-name").html(t),e.find(".achievement-description").html(n)},toggleCredits:function(){var t=e("#parchment").attr("class");this.game.started?(e("#parchment").removeClass().addClass("credits"),e("body").toggleClass("credits"),this.game.player||e("body").toggleClass("death"),e("body").hasClass("about")&&(this.closeInGameAbout(),e("#helpbutton").removeClass("active"))):t!=="animate"&&(t==="credits"?this.animateParchment(t,this.previousState):(this.animateParchment(t,"credits"),this.previousState=t))},toggleAbout:function(){var t=e("#parchment").attr("class");this.game.started?(e("#parchment").removeClass().addClass("about"),e("body").toggleClass("about"),this.game.player||e("body").toggleClass("death"),e("body").hasClass("credits")&&this.closeInGameCredits()):t!=="animate"&&(t==="about"?localStorage&&localStorage.data?this.animateParchment(t,"loadcharacter"):this.animateParchment(t,"createcharacter"):(this.animateParchment(t,"about"),this.previousState=t))},closeInGameCredits:function(){e("body").removeClass("credits"),e("#parchment").removeClass("credits"),this.game.player||e("body").addClass("death")},closeInGameAbout:function(){e("body").removeClass("about"),e("#parchment").removeClass("about"),this.game.player||e("body").addClass("death"),e("#helpbutton").removeClass("active")},togglePopulationInfo:function(){e("#population").toggleClass("visible")},openPopup:function(t,n){var r=e(window).height(),i=e(window).width(),s,o,u,a;switch(t){case"twitter":s=450,o=550;break;case"facebook":s=400,o=580}u=r/2-s/2,a=i/2-o/2,newwindow=window.open(n,"name","height="+s+",width="+o+",top="+u+",left="+a),window.focus&&newwindow.focus()},animateParchment:function(t,n){var r=this,i=e("#parchment"),s=1;this.isMobile?i.removeClass(t).addClass(n):this.isParchmentReady&&(this.isTablet&&(s=0),this.isParchmentReady=!this.isParchmentReady,i.toggleClass("animate"),i.removeClass(t),setTimeout(function(){e("#parchment").toggleClass("animate"),i.addClass(n)},s*1e3),setTimeout(function(){r.isParchmentReady=!r.isParchmentReady},s*1e3))},animateMessages:function(){var t=e("#notifications div");t.addClass("top")},resetMessagesPosition:function(){var t=e("#message2").text();e("#notifications div").removeClass("top"),e("#message2").text(""),e("#message1").text(t)},showMessage:function(t){var n=e("#notifications div"),r=e("#notifications #message2");this.animateMessages(),r.text(t),this.messageTimer&&this.resetMessageTimer(),this.messageTimer=setTimeout(function(){n.addClass("top")},5e3)},resetMessageTimer:function(){clearTimeout(this.messageTimer)},resizeUi:function(){if(this.game)if(this.game.started)this.game.resize(),this.initHealthBar(),this.game.updateBars();else{var e=this.game.renderer.getScaleFactor();this.game.renderer.rescale(e)}}});return n}); \ No newline at end of file diff --git a/public_html/browserquest/js/area.js b/public_html/browserquest/js/area.js new file mode 100644 index 0000000..a352fac --- /dev/null +++ b/public_html/browserquest/js/area.js @@ -0,0 +1 @@ +define([],function(){var e=Class.extend({init:function(e,t,n,r){this.x=e,this.y=t,this.width=n,this.height=r},contains:function(e){return e?e.gridX>=this.x&&e.gridY>=this.y&&e.gridX0&&(e.sound.pause(),e.sound.currentTime=0)},fadeOutMusic:function(e,t){var n=this;e&&!e.sound.fadingOut&&(this.clearFadeIn(e),e.sound.fadingOut=setInterval(function(){var r=.02;volume=e.sound.volume-r,n.enabled&&volume>=r?e.sound.volume=volume:(e.sound.volume=0,n.clearFadeOut(e),t(e))},50))},fadeInMusic:function(e){var t=this;e&&!e.sound.fadingIn&&(this.clearFadeOut(e),e.sound.fadingIn=setInterval(function(){var n=.01;volume=e.sound.volume+n,t.enabled&&volume<1-n?e.sound.volume=volume:(e.sound.volume=1,t.clearFadeIn(e))},30))},clearFadeOut:function(e){e.sound.fadingOut&&(clearInterval(e.sound.fadingOut),e.sound.fadingOut=null)},clearFadeIn:function(e){e.sound.fadingIn&&(clearInterval(e.sound.fadingIn),e.sound.fadingIn=null)},fadeOutCurrentMusic:function(){var e=this;this.currentMusic&&(this.fadeOutMusic(this.currentMusic,function(t){e.resetMusic(t)}),this.currentMusic=null)}});return t}); \ No newline at end of file diff --git a/public_html/browserquest/js/bubble.js b/public_html/browserquest/js/bubble.js new file mode 100644 index 0000000..4aac6a0 --- /dev/null +++ b/public_html/browserquest/js/bubble.js @@ -0,0 +1 @@ +define(["jquery","timer"],function(e,t){var n=Class.extend({init:function(e,n,r){this.id=e,this.element=n,this.timer=new t(5e3,r)},isOver:function(e){return this.timer.isOver(e)?!0:!1},destroy:function(){e(this.element).remove()},reset:function(e){this.timer.lastTime=e}}),r=Class.extend({init:function(e){this.container=e,this.bubbles={}},getBubbleById:function(e){return e in this.bubbles?this.bubbles[e]:null},create:function(t,r,i){if(this.bubbles[t])this.bubbles[t].reset(i),e("#"+t+" p").html(r);else{var s=e('

'+r+'

');e(s).appendTo(this.container),this.bubbles[t]=new n(t,s,i)}},update:function(e){var t=this,n=[];_.each(this.bubbles,function(t){t.isOver(e)&&(t.destroy(),n.push(t.id))}),_.each(n,function(e){delete t.bubbles[e]})},clean:function(){var e=this,t=[];_.each(this.bubbles,function(e){e.destroy(),t.push(e.id)}),_.each(t,function(t){delete e.bubbles[t]}),this.bubbles={}},destroyBubble:function(e){var t=this.getBubbleById(e);t&&(t.destroy(),delete this.bubbles[e])},forEachBubble:function(e){_.each(this.bubbles,function(t){e(t)})}});return r}); \ No newline at end of file diff --git a/public_html/browserquest/js/build.js b/public_html/browserquest/js/build.js new file mode 100644 index 0000000..aeb975b --- /dev/null +++ b/public_html/browserquest/js/build.js @@ -0,0 +1 @@ +({appDir:"../",baseUrl:"js/",dir:"../../client-build",optimize:"uglify",optimizeCss:"standard.keepLines",paths:{jquery:"lib/require-jquery"},modules:[{name:"jquery"},{name:"game",exclude:["jquery"]},{name:"home",exclude:["jquery","game"]}],pragmas:{devHost:!1,prodHost:!0}}); \ No newline at end of file diff --git a/public_html/browserquest/js/camera.js b/public_html/browserquest/js/camera.js new file mode 100644 index 0000000..b676feb --- /dev/null +++ b/public_html/browserquest/js/camera.js @@ -0,0 +1 @@ +define([],function(){var e=Class.extend({init:function(e){this.renderer=e,this.x=0,this.y=0,this.gridX=0,this.gridY=0,this.offset=.5,this.rescale()},rescale:function(){var e=this.renderer.mobile?1:2;this.gridW=15*e,this.gridH=7*e,log.debug("---------"),log.debug("Factor:"+e),log.debug("W:"+this.gridW+" H:"+this.gridH)},setPosition:function(e,t){this.x=e,this.y=t,this.gridX=Math.floor(e/16),this.gridY=Math.floor(t/16)},setGridPosition:function(e,t){this.gridX=e,this.gridY=t,this.x=this.gridX*16,this.y=this.gridY*16},lookAt:function(e){var t=this.renderer,n=Math.round(e.x-Math.floor(this.gridW/2)*t.tilesize),r=Math.round(e.y-Math.floor(this.gridH/2)*t.tilesize);this.setPosition(n,r)},forEachVisiblePosition:function(e,t){var t=t||0;for(var n=this.gridY-t,r=this.gridY+this.gridH+t*2;n=this.gridY&&t=this.gridX&&e=0&&(e+="_"+(o===Types.Orientations.LEFT?"right":Types.getOrientationAsString(o)),this.flipSpriteX=this.orientation===Types.Orientations.LEFT?!0:!1),this.setAnimation(e,t,n,r)},turnTo:function(e){this.orientation=e,this.idle()},setOrientation:function(e){e&&(this.orientation=e)},idle:function(e){this.setOrientation(e),this.animate("idle",this.idleSpeed)},hit:function(e){this.setOrientation(e),this.animate("atk",this.atkSpeed,1)},walk:function(e){this.setOrientation(e),this.animate("walk",this.walkSpeed)},moveTo_:function(e,t,n){this.destination={gridX:e,gridY:t},this.adjacentTiles={};if(this.isMoving())this.continueTo(e,t);else{var r=this.requestPathfindingTo(e,t);this.followPath(r)}},requestPathfindingTo:function(e,t){return this.request_path_callback?this.request_path_callback(e,t):(log.error(this.id+" couldn't request pathfinding to "+e+", "+t),[])},onRequestPath:function(e){this.request_path_callback=e},onStartPathing:function(e){this.start_pathing_callback=e},onStopPathing:function(e){this.stop_pathing_callback=e},followPath:function(e){e.length>1&&(this.path=e,this.step=0,this.followingMode&&e.pop(),this.start_pathing_callback&&this.start_pathing_callback(e),this.nextStep())},continueTo:function(e,t){this.newDestination={x:e,y:t}},updateMovement:function(){var e=this.path,t=this.step;e[t][0]e[t-1][0]&&this.walk(Types.Orientations.RIGHT),e[t][1]e[t-1][1]&&this.walk(Types.Orientations.DOWN)},updatePositionOnGrid:function(){this.setGridPosition(this.path[this.step][0],this.path[this.step][1])},nextStep:function(){var e=!1,t,n,r;this.isMoving()&&(this.before_step_callback&&this.before_step_callback(),this.updatePositionOnGrid(),this.checkAggro(),this.interrupted?(e=!0,this.interrupted=!1):(this.hasNextStep()&&(this.nextGridX=this.path[this.step+1][0],this.nextGridY=this.path[this.step+1][1]),this.step_callback&&this.step_callback(),this.hasChangedItsPath()?(t=this.newDestination.x,n=this.newDestination.y,r=this.requestPathfindingTo(t,n),this.newDestination=null,r.length<2?e=!0:this.followPath(r)):this.hasNextStep()?(this.step+=1,this.updateMovement()):e=!0),e&&(this.path=null,this.idle(),this.stop_pathing_callback&&this.stop_pathing_callback(this.gridX,this.gridY)))},onBeforeStep:function(e){this.before_step_callback=e},onStep:function(e){this.step_callback=e},isMoving:function(){return this.path!==null},hasNextStep:function(){return this.path.length-1>this.step},hasChangedItsPath:function(){return this.newDestination!==null},isNear:function(e,t){var n,r,i=!1;return n=Math.abs(this.gridX-e.gridX),r=Math.abs(this.gridY-e.gridY),n<=t&&r<=t&&(i=!0),i},onAggro:function(e){this.aggro_callback=e},onCheckAggro:function(e){this.checkaggro_callback=e},checkAggro:function(){this.checkaggro_callback&&this.checkaggro_callback()},aggro:function(e){this.aggro_callback&&this.aggro_callback(e)},onDeath:function(e){this.death_callback=e},lookAtTarget:function(){this.target&&this.turnTo(this.getOrientationTo(this.target))},go:function(e,t){this.isAttacking()?this.disengage():this.followingMode&&(this.followingMode=!1,this.target=null),this.moveTo_(e,t)},follow:function(e){e&&(this.followingMode=!0,this.moveTo_(e.gridX,e.gridY))},stop:function(){this.isMoving()&&(this.interrupted=!0)},engage:function(e){this.attackingMode=!0,this.setTarget(e),this.follow(e)},disengage:function(){this.attackingMode=!1,this.followingMode=!1,this.removeTarget()},isAttacking:function(){return this.attackingMode},getOrientationTo:function(e){return this.gridXe.gridX?Types.Orientations.LEFT:this.gridY>e.gridY?Types.Orientations.UP:Types.Orientations.DOWN},isAttackedBy:function(e){return e.id in this.attackers},addAttacker:function(e){this.isAttackedBy(e)?log.error(this.id+" is already attacked by "+e.id):this.attackers[e.id]=e},removeAttacker:function(e){this.isAttackedBy(e)?delete this.attackers[e.id]:log.error(this.id+" is not attacked by "+e.id)},forEachAttacker:function(e){_.each(this.attackers,function(t){e(t)})},setTarget:function(e){this.target!==e?(this.hasTarget()&&this.removeTarget(),this.unconfirmedTarget=null,this.target=e):log.debug(e.id+" is already the target of "+this.id)},removeTarget:function(){var e=this;this.target&&(this.target instanceof r&&this.target.removeAttacker(this),this.target=null)},hasTarget:function(){return this.target!==null},waitToAttack:function(e){this.unconfirmedTarget=e},isWaitingToAttack:function(e){return this.unconfirmedTarget===e},canAttack:function(e){return this.canReachTarget()&&this.attackCooldown.isOver(e)?!0:!1},canReachTarget:function(){return this.hasTarget()&&this.isAdjacentNonDiagonal(this.target)?!0:!1},die:function(){this.removeTarget(),this.isDead=!0,this.death_callback&&this.death_callback()},onHasMoved:function(e){this.hasmoved_callback=e},hasMoved:function(){this.setDirty(),this.hasmoved_callback&&this.hasmoved_callback(this)},hurt:function(){var e=this;this.stopHurting(),this.sprite=this.hurtSprite,this.hurting=setTimeout(this.stopHurting.bind(this),75)},stopHurting:function(){this.sprite=this.normalSprite,clearTimeout(this.hurting)},setAttackRate:function(e){this.attackCooldown=new n(e)}});return r}); \ No newline at end of file diff --git a/public_html/browserquest/js/chest.js b/public_html/browserquest/js/chest.js new file mode 100644 index 0000000..6e7a9f0 --- /dev/null +++ b/public_html/browserquest/js/chest.js @@ -0,0 +1 @@ +define(["entity"],function(e){var t=e.extend({init:function(e,t){this._super(e,Types.Entities.CHEST)},getSpriteName:function(){return"chest"},isMoving:function(){return!1},open:function(){this.open_callback&&this.open_callback()},onOpen:function(e){this.open_callback=e}});return t}); \ No newline at end of file diff --git a/public_html/browserquest/js/config.js b/public_html/browserquest/js/config.js new file mode 100644 index 0000000..e912585 --- /dev/null +++ b/public_html/browserquest/js/config.js @@ -0,0 +1 @@ +define(["text!../config/config_build.json"],function(e){var t={dev:{host:"localhost",port:8e3,dispatcher:!1},build:JSON.parse(e)};return t}); \ No newline at end of file diff --git a/public_html/browserquest/js/detect.js b/public_html/browserquest/js/detect.js new file mode 100644 index 0000000..f5aadf5 --- /dev/null +++ b/public_html/browserquest/js/detect.js @@ -0,0 +1 @@ +var Detect={};Detect.supportsWebSocket=function(){return window.WebSocket||window.MozWebSocket},Detect.userAgentContains=function(e){return navigator.userAgent.indexOf(e)!=-1},Detect.isTablet=function(e){if(e>640)if(Detect.userAgentContains("Android")&&Detect.userAgentContains("Firefox")||Detect.userAgentContains("Mobile"))return!0;return!1},Detect.isWindows=function(){return Detect.userAgentContains("Windows")},Detect.isChromeOnWindows=function(){return Detect.userAgentContains("Chrome")&&Detect.userAgentContains("Windows")},Detect.canPlayMP3=function(){return Modernizr.audio.mp3},Detect.isSafari=function(){return Detect.userAgentContains("Safari")&&!Detect.userAgentContains("Chrome")},Detect.isOpera=function(){return Detect.userAgentContains("Opera")}; \ No newline at end of file diff --git a/public_html/browserquest/js/entity.js b/public_html/browserquest/js/entity.js new file mode 100644 index 0000000..86f385f --- /dev/null +++ b/public_html/browserquest/js/entity.js @@ -0,0 +1 @@ +define([],function(){var e=Class.extend({init:function(e,t){var n=this;this.id=e,this.kind=t,this.sprite=null,this.flipSpriteX=!1,this.flipSpriteY=!1,this.animations=null,this.currentAnimation=null,this.shadowOffsetY=0,this.setGridPosition(0,0),this.isLoaded=!1,this.isHighlighted=!1,this.visible=!0,this.isFading=!1,this.setDirty()},setName:function(e){this.name=e},setPosition:function(e,t){this.x=e,this.y=t},setGridPosition:function(e,t){this.gridX=e,this.gridY=t,this.setPosition(e*16,t*16)},setSprite:function(e){if(!e)throw log.error(this.id+" : sprite is null",!0),"Error";if(this.sprite&&this.sprite.name===e.name)return;this.sprite=e,this.normalSprite=this.sprite;if(Types.isMob(this.kind)||Types.isPlayer(this.kind))this.hurtSprite=e.getHurtSprite();this.animations=e.createAnimations(),this.isLoaded=!0,this.ready_func&&this.ready_func()},getSprite:function(){return this.sprite},getSpriteName:function(){return Types.getKindAsString(this.kind)},getAnimationByName:function(e){var t=null;return e in this.animations?t=this.animations[e]:log.error("No animation called "+e),t},setAnimation:function(e,t,n,r){var i=this;if(this.isLoaded){if(this.currentAnimation&&this.currentAnimation.name===e)return;var s=this.sprite,o=this.getAnimationByName(e);o&&(this.currentAnimation=o,e.substr(0,3)==="atk"&&this.currentAnimation.reset(),this.currentAnimation.setSpeed(t),this.currentAnimation.setCount(n?n:0,r||function(){i.idle()}))}else this.log_error("Not ready for animation")},hasShadow:function(){return!1},ready:function(e){this.ready_func=e},clean:function(){this.stopBlinking()},log_info:function(e){log.info("["+this.id+"] "+e)},log_error:function(e){log.error("["+this.id+"] "+e)},setHighlight:function(e){e===!0?(this.sprite=this.sprite.silhouetteSprite,this.isHighlighted=!0):(this.sprite=this.normalSprite,this.isHighlighted=!1)},setVisible:function(e){this.visible=e},isVisible:function(){return this.visible},toggleVisibility:function(){this.visible?this.setVisible(!1):this.setVisible(!0)},getDistanceToEntity:function(e){var t=Math.abs(e.gridX-this.gridX),n=Math.abs(e.gridY-this.gridY);return t>n?t:n},isCloseTo:function(e){var t,n,r,i=!1;return e&&(t=Math.abs(e.gridX-this.gridX),n=Math.abs(e.gridY-this.gridY),t<30&&n<14&&(i=!0)),i},isAdjacent:function(e){var t=!1;return e&&(t=this.getDistanceToEntity(e)>1?!1:!0),t},isAdjacentNonDiagonal:function(e){var t=!1;return this.isAdjacent(e)&&(this.gridX===e.gridX||this.gridY===e.gridY)&&(t=!0),t},isDiagonallyAdjacent:function(e){return this.isAdjacent(e)&&!this.isAdjacentNonDiagonal(e)},forEachAdjacentNonDiagonalPosition:function(e){e(this.gridX-1,this.gridY,Types.Orientations.LEFT),e(this.gridX,this.gridY-1,Types.Orientations.UP),e(this.gridX+1,this.gridY,Types.Orientations.RIGHT),e(this.gridX,this.gridY+1,Types.Orientations.DOWN)},fadeIn:function(e){this.isFading=!0,this.startFadingTime=e},blink:function(e,t){var n=this;this.blinking=setInterval(function(){n.toggleVisibility()},e)},stopBlinking:function(){this.blinking&&clearInterval(this.blinking),this.setVisible(!0)},setDirty:function(){this.isDirty=!0,this.dirty_callback&&this.dirty_callback(this)},onDirty:function(e){this.dirty_callback=e}});return e}); \ No newline at end of file diff --git a/public_html/browserquest/js/entityfactory.js b/public_html/browserquest/js/entityfactory.js new file mode 100644 index 0000000..800238e --- /dev/null +++ b/public_html/browserquest/js/entityfactory.js @@ -0,0 +1 @@ +define(["mobs","items","npcs","warrior","chest"],function(e,t,n,r,i){var s={};return s.createEntity=function(e,t,n){if(!e){log.error("kind is undefined",!0);return}if(!_.isFunction(s.builders[e]))throw Error(e+" is not a valid Entity type");return s.builders[e](t,n)},s.builders=[],s.builders[Types.Entities.WARRIOR]=function(e,t){return new r(e,t)},s.builders[Types.Entities.RAT]=function(t){return new e.Rat(t)},s.builders[Types.Entities.SKELETON]=function(t){return new e.Skeleton(t)},s.builders[Types.Entities.SKELETON2]=function(t){return new e.Skeleton2(t)},s.builders[Types.Entities.SPECTRE]=function(t){return new e.Spectre(t)},s.builders[Types.Entities.DEATHKNIGHT]=function(t){return new e.Deathknight(t)},s.builders[Types.Entities.GOBLIN]=function(t){return new e.Goblin(t)},s.builders[Types.Entities.OGRE]=function(t){return new e.Ogre(t)},s.builders[Types.Entities.CRAB]=function(t){return new e.Crab(t)},s.builders[Types.Entities.SNAKE]=function(t){return new e.Snake(t)},s.builders[Types.Entities.EYE]=function(t){return new e.Eye(t)},s.builders[Types.Entities.BAT]=function(t){return new e.Bat(t)},s.builders[Types.Entities.WIZARD]=function(t){return new e.Wizard(t)},s.builders[Types.Entities.BOSS]=function(t){return new e.Boss(t)},s.builders[Types.Entities.SWORD2]=function(e){return new t.Sword2(e)},s.builders[Types.Entities.AXE]=function(e){return new t.Axe(e)},s.builders[Types.Entities.REDSWORD]=function(e){return new t.RedSword(e)},s.builders[Types.Entities.BLUESWORD]=function(e){return new t.BlueSword(e)},s.builders[Types.Entities.GOLDENSWORD]=function(e){return new t.GoldenSword(e)},s.builders[Types.Entities.MORNINGSTAR]=function(e){return new t.MorningStar(e)},s.builders[Types.Entities.MAILARMOR]=function(e){return new t.MailArmor(e)},s.builders[Types.Entities.LEATHERARMOR]=function(e){return new t.LeatherArmor(e)},s.builders[Types.Entities.PLATEARMOR]=function(e){return new t.PlateArmor(e)},s.builders[Types.Entities.REDARMOR]=function(e){return new t.RedArmor(e)},s.builders[Types.Entities.GOLDENARMOR]=function(e){return new t.GoldenArmor(e)},s.builders[Types.Entities.FLASK]=function(e){return new t.Flask(e)},s.builders[Types.Entities.FIREPOTION]=function(e){return new t.FirePotion(e)},s.builders[Types.Entities.BURGER]=function(e){return new t.Burger(e)},s.builders[Types.Entities.CAKE]=function(e){return new t.Cake(e)},s.builders[Types.Entities.CHEST]=function(e){return new i(e)},s.builders[Types.Entities.GUARD]=function(e){return new n.Guard(e)},s.builders[Types.Entities.KING]=function(e){return new n.King(e)},s.builders[Types.Entities.VILLAGEGIRL]=function(e){return new n.VillageGirl(e)},s.builders[Types.Entities.VILLAGER]=function(e){return new n.Villager(e)},s.builders[Types.Entities.CODER]=function(e){return new n.Coder(e)},s.builders[Types.Entities.AGENT]=function(e){return new n.Agent(e)},s.builders[Types.Entities.RICK]=function(e){return new n.Rick(e)},s.builders[Types.Entities.SCIENTIST]=function(e){return new n.Scientist(e)},s.builders[Types.Entities.NYAN]=function(e){return new n.Nyan(e)},s.builders[Types.Entities.PRIEST]=function(e){return new n.Priest(e)},s.builders[Types.Entities.SORCERER]=function(e){return new n.Sorcerer(e)},s.builders[Types.Entities.OCTOCAT]=function(e){return new n.Octocat(e)},s.builders[Types.Entities.BEACHNPC]=function(e){return new n.BeachNpc(e)},s.builders[Types.Entities.FORESTNPC]=function(e){return new n.ForestNpc(e)},s.builders[Types.Entities.DESERTNPC]=function(e){return new n.DesertNpc(e)},s.builders[Types.Entities.LAVANPC]=function(e){return new n.LavaNpc(e)},s}); \ No newline at end of file diff --git a/public_html/browserquest/js/exceptions.js b/public_html/browserquest/js/exceptions.js new file mode 100644 index 0000000..971827f --- /dev/null +++ b/public_html/browserquest/js/exceptions.js @@ -0,0 +1 @@ +define([],function(){var e={LootException:Class.extend({init:function(e){this.message=e}})};return e}); \ No newline at end of file diff --git a/public_html/browserquest/js/game.js b/public_html/browserquest/js/game.js new file mode 100644 index 0000000..b5e7030 --- /dev/null +++ b/public_html/browserquest/js/game.js @@ -0,0 +1,35 @@ +/* + RequireJS text 0.26.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + Available via the MIT or new BSD license. + see: http://github.com/jrburke/requirejs for details +*/ + +/* + Copyright (c) 2010-2011 Ivo Wetzel. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +/** + * A* (A-Star) algorithm for a path finder + * @author Andrea Giammarchi + * @license Mit Style License + */ + +define("infomanager",[],function(){var e=Class.extend({init:function(e){this.game=e,this.infos={},this.destroyQueue=[]},addDamageInfo:function(e,t,r,i){var s=this.game.currentTime,o=s+""+Math.abs(e)+""+t+""+r,u=this,a=new n(o,e,t,r,n.DURATION,i);a.onDestroy(function(e){u.destroyQueue.push(e)}),this.infos[o]=a},forEachInfo:function(e){var t=this;_.each(this.infos,function(t,n){e(t)})},update:function(e){var t=this;this.forEachInfo(function(t){t.update(e)}),_.each(this.destroyQueue,function(e){delete t.infos[e]}),this.destroyQueue=[]}}),t={received:{fill:"rgb(255, 50, 50)",stroke:"rgb(255, 180, 180)"},inflicted:{fill:"white",stroke:"#373737"},healed:{fill:"rgb(80, 255, 80)",stroke:"rgb(50, 120, 50)"}},n=Class.extend({DURATION:1e3,init:function(e,n,r,i,s,o){this.id=e,this.value=n,this.duration=s,this.x=r,this.y=i,this.opacity=1,this.lastTime=0,this.speed=100,this.fillColor=t[o].fill,this.strokeColor=t[o].stroke},isTimeToAnimate:function(e){return e-this.lastTime>this.speed},update:function(e){this.isTimeToAnimate(e)&&(this.lastTime=e,this.tick())},tick:function(){this.y-=1,this.opacity-=.07,this.opacity<0&&this.destroy()},onDestroy:function(e){this.destroy_callback=e},destroy:function(){this.destroy_callback&&this.destroy_callback(this.id)}});return e}),define("timer",[],function(){var e=Class.extend({init:function(e,t){this.lastTime=t||0,this.duration=e},isOver:function(e){var t=!1;return e-this.lastTime>this.duration&&(t=!0,this.lastTime=e),t}});return e}),define("bubble",["jquery","timer"],function(e,t){var n=Class.extend({init:function(e,n,r){this.id=e,this.element=n,this.timer=new t(5e3,r)},isOver:function(e){return this.timer.isOver(e)?!0:!1},destroy:function(){e(this.element).remove()},reset:function(e){this.timer.lastTime=e}}),r=Class.extend({init:function(e){this.container=e,this.bubbles={}},getBubbleById:function(e){return e in this.bubbles?this.bubbles[e]:null},create:function(t,r,i){if(this.bubbles[t])this.bubbles[t].reset(i),e("#"+t+" p").html(r);else{var s=e('

'+r+'

');e(s).appendTo(this.container),this.bubbles[t]=new n(t,s,i)}},update:function(e){var t=this,n=[];_.each(this.bubbles,function(t){t.isOver(e)&&(t.destroy(),n.push(t.id))}),_.each(n,function(e){delete t.bubbles[e]})},clean:function(){var e=this,t=[];_.each(this.bubbles,function(e){e.destroy(),t.push(e.id)}),_.each(t,function(t){delete e.bubbles[t]}),this.bubbles={}},destroyBubble:function(e){var t=this.getBubbleById(e);t&&(t.destroy(),delete this.bubbles[e])},forEachBubble:function(e){_.each(this.bubbles,function(t){e(t)})}});return r}),define("camera",[],function(){var e=Class.extend({init:function(e){this.renderer=e,this.x=0,this.y=0,this.gridX=0,this.gridY=0,this.offset=.5,this.rescale()},rescale:function(){var e=this.renderer.mobile?1:2;this.gridW=15*e,this.gridH=7*e,log.debug("---------"),log.debug("Factor:"+e),log.debug("W:"+this.gridW+" H:"+this.gridH)},setPosition:function(e,t){this.x=e,this.y=t,this.gridX=Math.floor(e/16),this.gridY=Math.floor(t/16)},setGridPosition:function(e,t){this.gridX=e,this.gridY=t,this.x=this.gridX*16,this.y=this.gridY*16},lookAt:function(e){var t=this.renderer,n=Math.round(e.x-Math.floor(this.gridW/2)*t.tilesize),r=Math.round(e.y-Math.floor(this.gridH/2)*t.tilesize);this.setPosition(n,r)},forEachVisiblePosition:function(e,t){var t=t||0;for(var n=this.gridY-t,r=this.gridY+this.gridH+t*2;n=this.gridY&&t=this.gridX&&en?t:n},isCloseTo:function(e){var t,n,r,i=!1;return e&&(t=Math.abs(e.gridX-this.gridX),n=Math.abs(e.gridY-this.gridY),t<30&&n<14&&(i=!0)),i},isAdjacent:function(e){var t=!1;return e&&(t=this.getDistanceToEntity(e)>1?!1:!0),t},isAdjacentNonDiagonal:function(e){var t=!1;return this.isAdjacent(e)&&(this.gridX===e.gridX||this.gridY===e.gridY)&&(t=!0),t},isDiagonallyAdjacent:function(e){return this.isAdjacent(e)&&!this.isAdjacentNonDiagonal(e)},forEachAdjacentNonDiagonalPosition:function(e){e(this.gridX-1,this.gridY,Types.Orientations.LEFT),e(this.gridX,this.gridY-1,Types.Orientations.UP),e(this.gridX+1,this.gridY,Types.Orientations.RIGHT),e(this.gridX,this.gridY+1,Types.Orientations.DOWN)},fadeIn:function(e){this.isFading=!0,this.startFadingTime=e},blink:function(e,t){var n=this;this.blinking=setInterval(function(){n.toggleVisibility()},e)},stopBlinking:function(){this.blinking&&clearInterval(this.blinking),this.setVisible(!0)},setDirty:function(){this.isDirty=!0,this.dirty_callback&&this.dirty_callback(this)},onDirty:function(e){this.dirty_callback=e}});return e}),define("item",["entity"],function(e){var t=e.extend({init:function(e,t,n){this._super(e,t),this.itemKind=Types.getKindAsString(t),this.type=n,this.wasDropped=!1},hasShadow:function(){return!0},onLoot:function(e){this.type==="weapon"?e.switchWeapon(this.itemKind):this.type==="armor"&&e.armorloot_callback(this.itemKind)},getSpriteName:function(){return"item-"+this.itemKind},getLootMessage:function(){return this.lootMessage}});return t}),define("transition",[],function(){var e=Class.extend({init:function(){this.startValue=0,this.endValue=0,this.duration=0,this.inProgress=!1},start:function(e,t,n,r,i,s){this.startTime=e,this.updateFunction=t,this.stopFunction=n,this.startValue=r,this.endValue=i,this.duration=s,this.inProgress=!0,this.count=0},step:function(e){if(this.inProgress)if(this.count>0)this.count-=1,log.debug(e+": jumped frame");else{var t=e-this.startTime;t>this.duration&&(t=this.duration);var n=this.endValue-this.startValue,r=this.startValue+n/this.duration*t;r=Math.round(r),t===this.duration||r===this.endValue?(this.stop(),this.stopFunction&&this.stopFunction()):this.updateFunction&&this.updateFunction(r)}},restart:function(e,t,n){this.start(e,this.updateFunction,this.stopFunction,t,n,this.duration),this.step(e)},stop:function(){this.inProgress=!1}});return e}),define("character",["entity","transition","timer"],function(e,t,n){var r=e.extend({init:function(e,n){var r=this;this._super(e,n),this.nextGridX=-1,this.nextGridY=-1,this.orientation=Types.Orientations.DOWN,this.atkSpeed=50,this.moveSpeed=120,this.walkSpeed=100,this.idleSpeed=450,this.setAttackRate(800),this.movement=new t,this.path=null,this.newDestination=null,this.adjacentTiles={},this.target=null,this.unconfirmedTarget=null,this.attackers={},this.hitPoints=0,this.maxHitPoints=0,this.isDead=!1,this.attackingMode=!1,this.followingMode=!1},clean:function(){this.forEachAttacker(function(e){e.disengage(),e.idle()})},setMaxHitPoints:function(e){this.maxHitPoints=e,this.hitPoints=e},setDefaultAnimation:function(){this.idle()},hasWeapon:function(){return!1},hasShadow:function(){return!0},animate:function(e,t,n,r){var i=["atk","walk","idle"];o=this.orientation;if(!this.currentAnimation||this.currentAnimation.name!=="death")this.flipSpriteX=!1,this.flipSpriteY=!1,_.indexOf(i,e)>=0&&(e+="_"+(o===Types.Orientations.LEFT?"right":Types.getOrientationAsString(o)),this.flipSpriteX=this.orientation===Types.Orientations.LEFT?!0:!1),this.setAnimation(e,t,n,r)},turnTo:function(e){this.orientation=e,this.idle()},setOrientation:function(e){e&&(this.orientation=e)},idle:function(e){this.setOrientation(e),this.animate("idle",this.idleSpeed)},hit:function(e){this.setOrientation(e),this.animate("atk",this.atkSpeed,1)},walk:function(e){this.setOrientation(e),this.animate("walk",this.walkSpeed)},moveTo_:function(e,t,n){this.destination={gridX:e,gridY:t},this.adjacentTiles={};if(this.isMoving())this.continueTo(e,t);else{var r=this.requestPathfindingTo(e,t);this.followPath(r)}},requestPathfindingTo:function(e,t){return this.request_path_callback?this.request_path_callback(e,t):(log.error(this.id+" couldn't request pathfinding to "+e+", "+t),[])},onRequestPath:function(e){this.request_path_callback=e},onStartPathing:function(e){this.start_pathing_callback=e},onStopPathing:function(e){this.stop_pathing_callback=e},followPath:function(e){e.length>1&&(this.path=e,this.step=0,this.followingMode&&e.pop(),this.start_pathing_callback&&this.start_pathing_callback(e),this.nextStep())},continueTo:function(e,t){this.newDestination={x:e,y:t}},updateMovement:function(){var e=this.path,t=this.step;e[t][0]e[t-1][0]&&this.walk(Types.Orientations.RIGHT),e[t][1]e[t-1][1]&&this.walk(Types.Orientations.DOWN)},updatePositionOnGrid:function(){this.setGridPosition(this.path[this.step][0],this.path[this.step][1])},nextStep:function(){var e=!1,t,n,r;this.isMoving()&&(this.before_step_callback&&this.before_step_callback(),this.updatePositionOnGrid(),this.checkAggro(),this.interrupted?(e=!0,this.interrupted=!1):(this.hasNextStep()&&(this.nextGridX=this.path[this.step+1][0],this.nextGridY=this.path[this.step+1][1]),this.step_callback&&this.step_callback(),this.hasChangedItsPath()?(t=this.newDestination.x,n=this.newDestination.y,r=this.requestPathfindingTo(t,n),this.newDestination=null,r.length<2?e=!0:this.followPath(r)):this.hasNextStep()?(this.step+=1,this.updateMovement()):e=!0),e&&(this.path=null,this.idle(),this.stop_pathing_callback&&this.stop_pathing_callback(this.gridX,this.gridY)))},onBeforeStep:function(e){this.before_step_callback=e},onStep:function(e){this.step_callback=e},isMoving:function(){return this.path!==null},hasNextStep:function(){return this.path.length-1>this.step},hasChangedItsPath:function(){return this.newDestination!==null},isNear:function(e,t){var n,r,i=!1;return n=Math.abs(this.gridX-e.gridX),r=Math.abs(this.gridY-e.gridY),n<=t&&r<=t&&(i=!0),i},onAggro:function(e){this.aggro_callback=e},onCheckAggro:function(e){this.checkaggro_callback=e},checkAggro:function(){this.checkaggro_callback&&this.checkaggro_callback()},aggro:function(e){this.aggro_callback&&this.aggro_callback(e)},onDeath:function(e){this.death_callback=e},lookAtTarget:function(){this.target&&this.turnTo(this.getOrientationTo(this.target))},go:function(e,t){this.isAttacking()?this.disengage():this.followingMode&&(this.followingMode=!1,this.target=null),this.moveTo_(e,t)},follow:function(e){e&&(this.followingMode=!0,this.moveTo_(e.gridX,e.gridY))},stop:function(){this.isMoving()&&(this.interrupted=!0)},engage:function(e){this.attackingMode=!0,this.setTarget(e),this.follow(e)},disengage:function(){this.attackingMode=!1,this.followingMode=!1,this.removeTarget()},isAttacking:function(){return this.attackingMode},getOrientationTo:function(e){return this.gridXe.gridX?Types.Orientations.LEFT:this.gridY>e.gridY?Types.Orientations.UP:Types.Orientations.DOWN},isAttackedBy:function(e){return e.id in this.attackers},addAttacker:function(e){this.isAttackedBy(e)?log.error(this.id+" is already attacked by "+e.id):this.attackers[e.id]=e},removeAttacker:function(e){this.isAttackedBy(e)?delete this.attackers[e.id]:log.error(this.id+" is not attacked by "+e.id)},forEachAttacker:function(e){_.each(this.attackers,function(t){e(t)})},setTarget:function(e){this.target!==e?(this.hasTarget()&&this.removeTarget(),this.unconfirmedTarget=null,this.target=e):log.debug(e.id+" is already the target of "+this.id)},removeTarget:function(){var e=this;this.target&&(this.target instanceof r&&this.target.removeAttacker(this),this.target=null)},hasTarget:function(){return this.target!==null},waitToAttack:function(e){this.unconfirmedTarget=e},isWaitingToAttack:function(e){return this.unconfirmedTarget===e},canAttack:function(e){return this.canReachTarget()&&this.attackCooldown.isOver(e)?!0:!1},canReachTarget:function(){return this.hasTarget()&&this.isAdjacentNonDiagonal(this.target)?!0:!1},die:function(){this.removeTarget(),this.isDead=!0,this.death_callback&&this.death_callback()},onHasMoved:function(e){this.hasmoved_callback=e},hasMoved:function(){this.setDirty(),this.hasmoved_callback&&this.hasmoved_callback(this)},hurt:function(){var e=this;this.stopHurting(),this.sprite=this.hurtSprite,this.hurting=setTimeout(this.stopHurting.bind(this),75)},stopHurting:function(){this.sprite=this.normalSprite,clearTimeout(this.hurting)},setAttackRate:function(e){this.attackCooldown=new n(e)}});return r}),define("exceptions",[],function(){var e={LootException:Class.extend({init:function(e){this.message=e}})};return e}),define("player",["character","exceptions"],function(e,t){var n=e.extend({MAX_LEVEL:10,init:function(e,t,n){this._super(e,n),this.name=t,this.nameOffsetY=-10,this.spriteName="clotharmor",this.weaponName="sword1",this.isLootMoving=!1,this.isSwitchingWeapon=!0},loot:function(e){if(e){var n,r,i,s;this.currentArmorSprite?s=this.currentArmorSprite.name:s=this.spriteName,e.type==="armor"?(n=Types.getArmorRank(e.kind),r=Types.getArmorRank(Types.getKindFromString(s)),i="You are wearing a better armor"):e.type==="weapon"&&(n=Types.getWeaponRank(e.kind),r=Types.getWeaponRank(Types.getKindFromString(this.weaponName)),i="You are wielding a better weapon");if(n&&r){if(n===r)throw new t.LootException("You already have this "+e.type);if(n<=r)throw new t.LootException(i)}log.info("Player "+this.id+" has looted "+e.id),Types.isArmor(e.kind)&&this.invincible&&this.stopInvincibility(),e.onLoot(this)}},isMovingToLoot:function(){return this.isLootMoving},getSpriteName:function(){return this.spriteName},setSpriteName:function(e){this.spriteName=e},getArmorName:function(){var e=this.getArmorSprite();return e.id},getArmorSprite:function(){return this.invincible?this.currentArmorSprite:this.sprite},getWeaponName:function(){return this.weaponName},setWeaponName:function(e){this.weaponName=e},hasWeapon:function(){return this.weaponName!==null},switchWeapon:function(e){var t=14,n=!1,r=this,i=function(){return n=!n,n};if(e!==this.getWeaponName()){this.isSwitchingWeapon&&clearInterval(s),this.switchingWeapon=!0;var s=setInterval(function(){i()?r.setWeaponName(e):r.setWeaponName(null),t-=1,t===1&&(clearInterval(s),r.switchingWeapon=!1,r.switch_callback&&r.switch_callback())},90)}},switchArmor:function(e){var t=14,n=!1,r=this,i=function(){return n=!n,n};if(e&&e.id!==this.getSpriteName()){this.isSwitchingArmor&&clearInterval(s),this.isSwitchingArmor=!0,r.setSprite(e),r.setSpriteName(e.id);var s=setInterval(function(){r.setVisible(i()),t-=1,t===1&&(clearInterval(s),r.isSwitchingArmor=!1,r.switch_callback&&r.switch_callback())},90)}},onArmorLoot:function(e){this.armorloot_callback=e},onSwitchItem:function(e){this.switch_callback=e},onInvincible:function(e){this.invincible_callback=e},startInvincibility:function(){var e=this;this.invincible?this.invincibleTimeout&&clearTimeout(this.invincibleTimeout):(this.currentArmorSprite=this.getSprite(),this.invincible=!0,this.invincible_callback()),this.invincibleTimeout=setTimeout(function(){e.stopInvincibility(),e.idle()},15e3)},stopInvincibility:function(){this.invincible_callback(),this.invincible=!1,this.currentArmorSprite&&(this.setSprite(this.currentArmorSprite),this.setSpriteName(this.currentArmorSprite.id),this.currentArmorSprite=null),this.invincibleTimeout&&clearTimeout(this.invincibleTimeout)}});return n}),define("renderer",["camera","item","character","player","timer"],function(e,t,n,r,i){var s=Class.extend({init:function(e,t,n,r){this.game=e,this.context=t&&t.getContext?t.getContext("2d"):null,this.background=n&&n.getContext?n.getContext("2d"):null,this.foreground=r&&r.getContext?r.getContext("2d"):null,this.canvas=t,this.backcanvas=n,this.forecanvas=r,this.initFPS(),this.tilesize=16,this.upscaledRendering=this.context.mozImageSmoothingEnabled!==undefined,this.supportsSilhouettes=this.upscaledRendering,this.rescale(this.getScaleFactor()),this.lastTime=new Date,this.frameCount=0,this.maxFPS=this.FPS,this.realFPS=0,this.isDebugInfoVisible=!1,this.animatedTileCount=0,this.highTileCount=0,this.tablet=Detect.isTablet(window.innerWidth),this.fixFlickeringTimer=new i(100)},getWidth:function(){return this.canvas.width},getHeight:function(){return this.canvas.height},setTileset:function(e){this.tileset=e},getScaleFactor:function(){var e=window.innerWidth,t=window.innerHeight,n;return this.mobile=!1,e<=1e3?(n=2,this.mobile=!0):e<=1500||t<=870?n=2:n=3,n},rescale:function(e){this.scale=this.getScaleFactor(),this.createCamera(),this.context.mozImageSmoothingEnabled=!1,this.background.mozImageSmoothingEnabled=!1,this.foreground.mozImageSmoothingEnabled=!1,this.initFont(),this.initFPS(),!this.upscaledRendering&&this.game.map&&this.game.map.tilesets&&this.setTileset(this.game.map.tilesets[this.scale-1]),this.game.renderer&&this.game.setSpriteScale(this.scale)},createCamera:function(){this.camera=new e(this),this.camera.rescale(),this.canvas.width=this.camera.gridW*this.tilesize*this.scale,this.canvas.height=this.camera.gridH*this.tilesize*this.scale,log.debug("#entities set to "+this.canvas.width+" x "+this.canvas.height),this.backcanvas.width=this.canvas.width,this.backcanvas.height=this.canvas.height,log.debug("#background set to "+this.backcanvas.width+" x "+this.backcanvas.height),this.forecanvas.width=this.canvas.width,this.forecanvas.height=this.canvas.height,log.debug("#foreground set to "+this.forecanvas.width+" x "+this.forecanvas.height)},initFPS:function(){this.FPS=this.mobile?50:50},initFont:function(){var e;switch(this.scale){case 1:e=10;break;case 2:e=Detect.isWindows()?10:13;break;case 3:e=20}this.setFontSize(e)},setFontSize:function(e){var t=e+"px GraphicPixel";this.context.font=t,this.background.font=t},drawText:function(e,t,n,r,i,s){var o=this.context,u;switch(this.scale){case 1:u=3;break;case 2:u=3;break;case 3:u=5}e&&t&&n&&(o.save(),r&&(o.textAlign="center"),o.strokeStyle=s||"#373737",o.lineWidth=u,o.strokeText(e,t,n),o.fillStyle=i||"white",o.fillText(e,t,n),o.restore())},drawCellRect:function(e,t,n){this.context.save(),this.context.lineWidth=2*this.scale,this.context.strokeStyle=n,this.context.translate(e+2,t+2),this.context.strokeRect(0,0,this.tilesize*this.scale-4,this.tilesize*this.scale-4),this.context.restore()},drawCellHighlight:function(e,t,n){var r=this.scale,i=this.tilesize,s=e*i*r,o=t*i*r;this.drawCellRect(s,o,n)},drawTargetCell:function(){var e=this.game.getMouseGridPosition();this.game.targetCellVisible&&(e.x!==this.game.selectedX||e.y!==this.game.selectedY)&&this.drawCellHighlight(e.x,e.y,this.game.targetColor)},drawAttackTargetCell:function(){var e=this.game.getMouseGridPosition(),t=this.game.getEntityAt(e.x,e.y),n=this.scale;t&&this.drawCellRect(t.x*n,t.y*n,"rgba(255, 0, 0, 0.5)")},drawOccupiedCells:function(){var e=this.game.entityGrid;if(e)for(var t=0;t0},getEntityBoundingRect:function(e){var t={},n=this.scale,i;if(e instanceof r&&e.hasWeapon()){var s=this.game.sprites[e.getWeaponName()];i=s}else i=e.sprite;return i&&(t.x=(e.x+i.offsetX-this.camera.x)*n,t.y=(e.y+i.offsetY-this.camera.y)*n,t.w=i.width*n,t.h=i.height*n,t.left=t.x,t.right=t.x+t.w,t.top=t.y,t.bottom=t.y+t.h),t},getTileBoundingRect:function(e){var t={},n=this.game.map.width,r=this.scale,i=this.tilesize,s=e.index;return t.x=(o(s+1,n)*i-this.camera.x)*r,t.y=(Math.floor(s/n)*i-this.camera.y)*r,t.w=i*r,t.h=i*r,t.left=t.x,t.right=t.x+t.w,t.top=t.y,t.bottom=t.y+t.h,t},getTargetBoundingRect:function(e,t){var n={},r=this.scale,i=this.tilesize,s=e||this.game.selectedX,o=t||this.game.selectedY;return n.x=(s*i-this.camera.x)*r,n.y=(o*i-this.camera.y)*r,n.w=i*r,n.h=i*r,n.left=n.x,n.right=n.x+n.w,n.top=n.y,n.bottom=n.y+n.h,n},isIntersecting:function(e,t){return!(t.left>e.right||t.righte.bottom||t.bottom=1e3&&(this.realFPS=this.frameCount,this.frameCount=0,this.lastTime=e),this.frameCount++,this.drawText("FPS: "+this.realFPS,30,30,!1)},drawDebugInfo:function(){this.isDebugInfoVisible&&(this.drawFPS(),this.drawText("A: "+this.animatedTileCount,100,30,!1),this.drawText("H: "+this.highTileCount,140,30,!1))},drawCombatInfo:function(){var e=this;switch(this.scale){case 2:this.setFontSize(20);break;case 3:this.setFontSize(30)}this.game.infoManager.forEachInfo(function(t){e.context.save(),e.context.globalAlpha=t.opacity,e.drawText(t.value,(t.x+8)*e.scale,Math.floor(t.y*e.scale),!0,t.fillColor,t.strokeColor),e.context.restore()}),this.initFont()},setCameraView:function(e){e.translate(-this.camera.x*this.scale,-this.camera.y*this.scale)},clearScreen:function(e){e.clearRect(0,0,this.canvas.width,this.canvas.height)},getPlayerImage:function(){var e=document.createElement("canvas"),t=e.getContext("2d"),n=this.upscaledRendering?1:this.scale,r=this.game.player,i=r.getArmorSprite(),s=i.animationData.idle_down,o=s.row,u=i.width*n,a=i.height*n,f=o*a,l=this.game.sprites[this.game.player.getWeaponName()],c=l.width*n,h=l.height*n,p=h*o,d=(l.offsetX-i.offsetX)*n,v=(l.offsetY-i.offsetY)*n,m=this.game.shadows.small,g=m.width*n,y=m.height*n,b=-i.offsetX*n;return oy=-i.offsetY*n,e.width=u,e.height=a,t.clearRect(0,0,u,a),t.drawImage(m.image,0,0,g,y,b,oy,g,y),t.drawImage(i.image,0,f,u,a,0,0,u,a),t.drawImage(l.image,0,p,c,h,d,v,c,h),e.toDataURL("image/png")},renderStaticCanvases:function(){this.background.save(),this.setCameraView(this.background),this.drawTerrain(),this.background.restore();if(this.mobile||this.tablet)this.clearScreen(this.foreground),this.foreground.save(),this.setCameraView(this.foreground),this.drawHighTiles(this.foreground),this.foreground.restore()},renderFrame:function(){this.mobile||this.tablet?this.renderFrameMobile():this.renderFrameDesktop()},renderFrameDesktop:function(){this.clearScreen(this.context),this.context.save(),this.setCameraView(this.context),this.drawAnimatedTiles(),this.game.started&&(this.drawSelectedCell(),this.drawTargetCell()),this.drawPathingCells(),this.drawEntities(),this.drawCombatInfo(),this.drawHighTiles(this.context),this.context.restore(),this.drawCursor(),this.drawDebugInfo()},renderFrameMobile:function(){this.clearDirtyRects(),this.preventFlickeringBug(),this.context.save(),this.setCameraView(this.context),this.drawDirtyAnimatedTiles(),this.drawSelectedCell(),this.drawDirtyEntities(),this.context.restore()},preventFlickeringBug:function(){this.fixFlickeringTimer.isOver(this.game.currentTime)&&(this.background.fillRect(0,0,0,0),this.context.fillRect(0,0,0,0),this.foreground.fillRect(0,0,0,0))}}),o=function(e,t){return e==0?0:e%t==0?t-1:e%t-1};return s}),define("area",[],function(){var e=Class.extend({init:function(e,t,n,r){this.x=e,this.y=t,this.width=n,this.height=r},contains:function(e){return e?e.gridX>=this.x&&e.gridY>=this.y&&e.gridX0)throw Error("Tileset size should be a multiple of "+t.tilesize);log.info("Map tileset loaded."),t.tilesetCount-=1,t.tilesetCount===0&&(log.debug("All map tilesets loaded."),t.tilesetsLoaded=!0,t._checkReady())},n},ready:function(e){this.ready_func=e},tileIndexToGridPosition:function(e){var t=0,n=0,r=function(e,t){return e==0?0:e%t==0?t-1:e%t-1};return e-=1,t=r(e+1,this.width),n=Math.floor(e/this.width),{x:t,y:n}},GridPositionToTileIndex:function(e,t){return t*this.width+e+1},isColliding:function(e,t){return this.isOutOfBounds(e,t)||!this.grid?!1:this.grid[t][e]===1},isPlateau:function(e,t){return this.isOutOfBounds(e,t)||!this.plateauGrid?!1:this.plateauGrid[t][e]===1},_generateCollisionGrid:function(){var e=0,t=this;this.grid=[];for(var n,r=0;r=this.width||t<0||t>=this.height)},isHighTile:function(e){return _.indexOf(this.high,e+1)>=0},isAnimatedTile:function(e){return e+1 in this.animated},getTileAnimationLength:function(e){return this.animated[e+1].l},getTileAnimationDelay:function(e){var t=this.animated[e+1];return t.d?t.d:100},isDoor:function(e,t){return this.doors[this.GridPositionToTileIndex(e,t)]!==undefined},getDoorDestination:function(e,t){return this.doors[this.GridPositionToTileIndex(e,t)]},_getCheckpoints:function(e){var n=[];return _.each(e.checkpoints,function(e){var r=new t(e.x,e.y,e.w,e.h);r.id=e.id,n.push(r)}),n},getCurrentCheckpoint:function(e){return _.detect(this.checkpoints,function(t){return t.contains(e)})}});return n}),define("animation",[],function(){var e=Class.extend({init:function(e,t,n,r,i){this.name=e,this.length=t,this.row=n,this.width=r,this.height=i,this.reset()},tick:function(){var e=this.currentFrame.index;e=e0&&e===0){this.count-=1;if(this.count===0){this.currentFrame.index=0,this.endcount_callback();return}}this.currentFrame.x=this.width*e,this.currentFrame.y=this.height*this.row,this.currentFrame.index=e},setSpeed:function(e){this.speed=e},setCount:function(e,t){this.count=e,this.endcount_callback=t},isTimeToAnimate:function(e){return e-this.lastTime>this.speed},update:function(e){return this.lastTime===0&&this.name.substr(0,3)==="atk"&&(this.lastTime=e),this.isTimeToAnimate(e)?(this.lastTime=e,this.tick(),!0):!1},reset:function(){this.lastTime=0,this.currentFrame={index:0,x:0,y:this.row*this.height}}});return e}),function(){var e=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],t=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,n=/]*>\s*([\s\S]+)\s*<\/body>/im,r=typeof location!="undefined"&&location.href,i=[];define("text",[],function(){var s,o,u;return typeof window!="undefined"&&window.navigator&&window.document?o=function(e,t){var n=s.createXhr();n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)}:typeof process!="undefined"&&process.versions&&process.versions.node?(u=require.nodeRequire("fs"),o=function(e,t){t(u.readFileSync(e,"utf8"))}):typeof Packages!="undefined"&&(o=function(e,t){var n=new java.io.File(e),r=java.lang.System.getProperty("line.separator"),n=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(n),"utf-8")),i,s,o="";try{i=new java.lang.StringBuffer,(s=n.readLine())&&s.length()&&s.charAt(0)===65279&&(s=s.substring(1));for(i.append(s);(s=n.readLine())!==null;)i.append(r),i.append(s);o=String(i.toString())}finally{n.close()}t(o)}),s={version:"0.26.0",strip:function(e){if(e){var e=e.replace(t,""),r=e.match(n);r&&(e=r[1])}else e="";return e},jsEscape:function(e){return e.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")},createXhr:function(){var t,n,r;if(typeof XMLHttpRequest!="undefined")return new XMLHttpRequest;for(n=0;n<3;n++){r=e[n];try{t=new ActiveXObject(r)}catch(i){}if(t){e=[r];break}}if(!t)throw Error("createXhr(): XMLHttpRequest not available");return t},get:o,parseName:function(e){var t=!1,n=e.indexOf("."),r=e.substring(0,n),e=e.substring(n+1,e.length),n=e.indexOf("!");return n!==-1&&(t=e.substring(n+1,e.length),t=t==="strip",e=e.substring(0,n)),{moduleName:r,ext:e,strip:t}},xdRegExp:/^((\w+)\:)?\/\/([^\/\\]+)/,canUseXhr:function(e,t,n,r){var i=s.xdRegExp.exec(e),o;return i?(e=i[2],i=i[3],i=i.split(":"),o=i[1],i=i[0],(!e||e===t)&&(!i||i===n)&&(!o&&!i||o===r)):!0},finishLoad:function(e,t,n,r,o){n=t?s.strip(n):n,o.isBuild&&o.inlineText&&(i[e]=n),r(n)},load:function(e,t,n,i){var o=s.parseName(e),u=o.moduleName+"."+o.ext,a=t.toUrl(u);!r||s.canUseXhr(a)?s.get(a,function(t){s.finishLoad(e,o.strip,t,n,i)}):t([u],function(e){s.finishLoad(o.moduleName+"."+o.ext,o.strip,e,n,i)})},write:function(e,t,n){if(t in i){var r=s.jsEscape(i[t]);n("define('"+e+"!"+t+"', function () { return '"+r+"';});\n")}},writeFile:function(e,t,n,r,i){var t=s.parseName(t),o=t.moduleName+"."+t.ext,u=n.toUrl(t.moduleName+"."+t.ext)+".js";s.load(o,n,function(){s.write(e,o,function(e){r(u,e)},i)},i)}}})}(),define("text!../sprites/agent.json",function(){return'{\r "id": "agent",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/arrow.json",function(){return'{\n "id": "arrow",\n "width": 14,\n "height": 14,\n "animations": {\n "idle_down": {\n "length": 1,\n "row": 0\n }\n }\n}\n'}),define("text!../sprites/axe.json",function(){return'{\r "id": "axe",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/bat.json",function(){return'{\r "id": "bat",\r "width": 32,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 5,\r "row": 1\r },\r "idle_right": {\r "length": 5,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 5,\r "row": 4\r },\r "idle_up": {\r "length": 5,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 5,\r "row": 7\r },\r "idle_down": {\r "length": 5,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -24\r}\r'}),define("text!../sprites/beachnpc.json",function(){return'{\r "id": "beachnpc",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/bluesword.json",function(){return'{\r "id": "bluesword",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/boss.json",function(){return'{\r "id": "boss",\r "width": 64,\r "height": 72,\r "animations": {\r "atk_right": {\r "length": 6,\r "row": 0\r },\r "walk_right": {\r "length": 3,\r "row": 1\r },\r "idle_right": {\r "length": 4,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 4,\r "row": 5\r },\r "atk_down": {\r "length": 6,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 4,\r "row": 8\r },\r "Group 5": {\r "length": 3,\r "row": 9\r }\r },\r "offset_x": -24,\r "offset_y": -36\r}\r'}),define("text!../sprites/chest.json",function(){return'{\r "id": "chest",\r "width": 16,\r "height": 16,\r "animations": {\r "idle_down": {\r "length": 1,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/clotharmor.json",function(){return'{\r "id": "clotharmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/coder.json",function(){return'{\r "id": "coder",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -7\r}\r'}),define("text!../sprites/crab.json",function(){return'{\r "id": "crab",\r "width": 32,\r "height": 32,\r "animations": {\r "death": {\r "length": 8,\r "row": 0\r },\r "atk_right": {\r "length": 7,\r "row": 1\r },\r "walk_right": {\r "length": 6,\r "row": 2\r },\r "idle_right": {\r "length": 4,\r "row": 3\r },\r "atk_up": {\r "length": 8,\r "row": 4\r },\r "idle_up": {\r "length": 4,\r "row": 5\r },\r "walk_up": {\r "length": 6,\r "row": 6\r },\r "atk_down": {\r "length": 8,\r "row": 7\r },\r "walk_down": {\r "length": 6,\r "row": 8\r },\r "idle_down": {\r "length": 7,\r "row": 9\r }\r },\r "offset_x": -8,\r "offset_y": -8\r}\r'}),define("text!../sprites/death.json",function(){return'{\r "id": "death",\r "width": 24,\r "height": 24,\r "animations": {\r "death": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -4\r}\r'}),define("text!../sprites/deathknight.json",function(){return'{\r "id": "deathknight",\r "width": 42,\r "height": 42,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -13,\r "offset_y": -17\r}\r'}),define("text!../sprites/desertnpc.json",function(){return'{\r "id": "desertnpc",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/eye.json",function(){return'{\r "id": "eye",\r "width": 40,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 6,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 14,\r "row": 2\r },\r "atk_up": {\r "length": 4,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 14,\r "row": 5\r },\r "atk_down": {\r "length": 8,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 14,\r "row": 8\r }\r },\r "offset_x": -12,\r "offset_y": -18\r}\r'}),define("text!../sprites/firefox.json",function(){return'{\r "id": "firefox",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 5,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 8,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/forestnpc.json",function(){return'{\r "id": "forestnpc",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/goblin.json",function(){return'{\r "id": "goblin",\r "width": 26,\r "height": 26,\r "animations": {\r "atk_right": {\r "length": 3,\r "row": 0\r },\r "walk_right": {\r "length": 3,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 3,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 3,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -5,\r "offset_y": -9\r}\r'}),define("text!../sprites/goldenarmor.json",function(){return'{\r "id": "goldenarmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/goldensword.json",function(){return'{\r "id": "goldensword",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/guard.json",function(){return'{\r "id": "guard",\r "width": 25,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -5,\r "offset_y": -8\r}\r'}),define("text!../sprites/hand.json",function(){return'{\r "id": "hand",\r "width": 14,\r "height": 14,\r "animations": {\r "idle_down": {\r "length": 1,\r "row": 0\r }\r }\r}\r'}),define("text!../sprites/impact.json",function(){return'{\r "id": "impact",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 1,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-axe.json",function(){return'{\r "id": "item-axe",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-bluesword.json",function(){return'{\r "id": "item-bluesword",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-burger.json",function(){return'{\r "id": "item-burger",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-cake.json",function(){return'{\r "id": "item-cake",\r "width": 24,\r "height": 24,\r "animations": {\r "idle": {\r "length": 3,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -6\r}\r'}),define("text!../sprites/item-firepotion.json",function(){return'{\r "id": "item-firepotion",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-flask.json",function(){return'{\r "id": "item-flask",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-goldenarmor.json",function(){return'{\r "id": "item-goldenarmor",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-goldensword.json",function(){return'{\r "id": "item-goldensword",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-leatherarmor.json",function(){return'{\r "id": "item-leatherarmor",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-mailarmor.json",function(){return'{\r "id": "item-mailarmor",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-morningstar.json",function(){return'{\r "id": "item-morningstar",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-platearmor.json",function(){return'{\r "id": "item-platearmor",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-redarmor.json",function(){return'{\r "id": "item-redarmor",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-redsword.json",function(){return'{\r "id": "item-redsword",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-sword1.json",function(){return'{\r "id": "item-sword1",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/item-sword2.json",function(){return'{\r "id": "item-sword2",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/king.json",function(){return'{\r "id": "king",\r "width": 32,\r "height": 32,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/lavanpc.json",function(){return'{\r "id": "lavanpc",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/leatherarmor.json",function(){return'{\r "id": "leatherarmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/loot.json",function(){return'{\r "id": "loot",\r "width": 14,\r "height": 14,\r "animations": {\r "idle_down": {\r "length": 1,\r "row": 0\r }\r }\r}\r'}),define("text!../sprites/mailarmor.json",function(){return'{\r "id": "mailarmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/morningstar.json",function(){return'{\r "id": "morningstar",\r "width": 38,\r "height": 38,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -11,\r "offset_y": -15\r}\r'}),define("text!../sprites/nyan.json",function(){return'{\r "id": "nyan",\r "width": 49,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": -22,\r "offset_y": -6\r}\r'}),define("text!../sprites/octocat.json",function(){return'{\r "id": "octocat",\r "width": 32,\r "height": 32,\r "animations": {\r "idle_down": {\r "length": 4,\r "row": 0\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/ogre.json",function(){return'{\r "id": "ogre",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 3,\r "row": 0\r },\r "walk_right": {\r "length": 6,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 3,\r "row": 3\r },\r "walk_up": {\r "length": 5,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 3,\r "row": 6\r },\r "walk_down": {\r "length": 6,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -24\r}\r'}),define("text!../sprites/platearmor.json",function(){return'{\r "id": "platearmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/priest.json",function(){return'{\r "id": "priest",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/rat.json",function(){return'{\r "id": "rat",\r "width": 48,\r "height": 48,\r "animations": {\r "death": {\r "length": 4,\r "row": 0\r },\r "atk_right": {\r "length": 6,\r "row": 1\r },\r "walk_right": {\r "length": 3,\r "row": 2\r },\r "idle_right": {\r "length": 2,\r "row": 3\r },\r "atk_up": {\r "length": 4,\r "row": 4\r },\r "walk_up": {\r "length": 4,\r "row": 5\r },\r "idle_up": {\r "length": 4,\r "row": 6\r },\r "atk_down": {\r "length": 4,\r "row": 7\r },\r "walk_down": {\r "length": 4,\r "row": 8\r },\r "idle_down": {\r "length": 4,\r "row": 9\r }\r }\r}\r'}),define("text!../sprites/redarmor.json",function(){return'{\r "id": "redarmor",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/redsword.json",function(){return'{\r "id": "redsword",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/rick.json",function(){return'{\r "id": "rick",\r "width": 32,\r "height": 32,\r "animations": {\r "idle_down": {\r "length": 4,\r "row": 0\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/scientist.json",function(){return'{\r "id": "scientist",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/shadow16.json",function(){return'{\r "id": "shadow16",\r "width": 16,\r "height": 16\r}\r'}),define("text!../sprites/skeleton.json",function(){return'{\r "id": "skeleton",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 3,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 3,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 3,\r "row": 5\r },\r "atk_down": {\r "length": 3,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 3,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/skeleton2.json",function(){return'{\r "id": "skeleton2",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 3,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 3,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 3,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 3,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/snake.json",function(){return'{\r "id": "snake",\r "width": 28,\r "height": 28,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 4,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 4,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 6,\r "row": 8\r }\r },\r "offset_x": -6,\r "offset_y": -10\r}\r'}),define("text!../sprites/sorcerer.json",function(){return'{\r "id": "sorcerer",\r "width": 26,\r "height": 26,\r "animations": {\r "idle_down": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": -5,\r "offset_y": -9\r}\r'}),define("text!../sprites/sparks.json",function(){return'{\r "id": "sparks",\r "width": 16,\r "height": 16,\r "animations": {\r "idle": {\r "length": 6,\r "row": 0\r }\r },\r "offset_x": 0,\r "offset_y": 0\r}\r'}),define("text!../sprites/spectre.json",function(){return'{\r "id": "spectre",\r "width": 34,\r "height": 34,\r "animations": {\r "atk_right": {\r "length": 8,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 6,\r "row": 3\r },\r "walk_up": {\r "length": 8,\r "row": 4\r },\r "idle_up": {\r "length": 8,\r "row": 5\r },\r "atk_down": {\r "length": 6,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -9,\r "offset_y": -13\r}\r'}),define("text!../sprites/sword.json",function(){return'{\r "id": "sword",\r "width": 14,\r "height": 14,\r "animations": {\r "idle_down": {\r "length": 1,\r "row": 0\r }\r }\r}\r'}),define("text!../sprites/sword1.json",function(){return'{\r "id": "sword1",\r "width": 32,\r "height": 32,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -8,\r "offset_y": -12\r}\r'}),define("text!../sprites/sword2.json",function(){return'{\r "id": "sword2",\r "width": 48,\r "height": 48,\r "animations": {\r "atk_right": {\r "length": 5,\r "row": 0\r },\r "walk_right": {\r "length": 4,\r "row": 1\r },\r "idle_right": {\r "length": 2,\r "row": 2\r },\r "atk_up": {\r "length": 5,\r "row": 3\r },\r "walk_up": {\r "length": 4,\r "row": 4\r },\r "idle_up": {\r "length": 2,\r "row": 5\r },\r "atk_down": {\r "length": 5,\r "row": 6\r },\r "walk_down": {\r "length": 4,\r "row": 7\r },\r "idle_down": {\r "length": 2,\r "row": 8\r }\r },\r "offset_x": -16,\r "offset_y": -20\r}\r'}),define("text!../sprites/talk.json",function(){return'{\r "id": "talk",\r "width": 14,\r "height": 14,\r "animations": {\r "idle_down": {\r "length": 1,\r "row": 0\r }\r }\r}\r'}),define("text!../sprites/target.json",function(){return'{\r "id": "target",\r "width": 16,\r "height": 16,\r "animations": {\r "move": {\r "length": 4,\r "row": 0\r },\r "atk": {\r "length": 4,\r "row": 1\r }\r }\r}\r'}),define("text!../sprites/villagegirl.json",function(){return'{\r "id": "villagegirl",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/villager.json",function(){return'{\r "id": "villager",\r "width": 24,\r "height": 24,\r "animations": {\r "idle_down": {\r "length": 2,\r "row": 0\r }\r },\r "offset_x": -4,\r "offset_y": -8\r}\r'}),define("text!../sprites/wizard.json",function(){return'{\r "id": "wizard",\r "width": 26,\r "height": 26,\r "animations": {\r "death": {\r "length": 3,\r "row": 0\r },\r "atk_right": {\r "length": 4,\r "row": 1\r },\r "atk_up": {\r "length": 4,\r "row": 2\r },\r "atk_down": {\r "length": 4,\r "row": 3\r },\r "walk_right": {\r "length": 4,\r "row": 4\r },\r "walk_up": {\r "length": 4,\r "row": 5\r },\r "walk_down": {\r "length": 4,\r "row": 6\r },\r "idle_right": {\r "length": 6,\r "row": 7\r },\r "idle_up": {\r "length": 6,\r "row": 8\r },\r "idle_down": {\r "length": 6,\r "row": 9\r }\r },\r "offset_x": -5,\r "offset_y": -9\r}\r'}),define("sprites",["text!../sprites/agent.json","text!../sprites/arrow.json","text!../sprites/axe.json","text!../sprites/bat.json","text!../sprites/beachnpc.json","text!../sprites/bluesword.json","text!../sprites/boss.json","text!../sprites/chest.json","text!../sprites/clotharmor.json","text!../sprites/coder.json","text!../sprites/crab.json","text!../sprites/death.json","text!../sprites/deathknight.json","text!../sprites/desertnpc.json","text!../sprites/eye.json","text!../sprites/firefox.json","text!../sprites/forestnpc.json","text!../sprites/goblin.json","text!../sprites/goldenarmor.json","text!../sprites/goldensword.json","text!../sprites/guard.json","text!../sprites/hand.json","text!../sprites/impact.json","text!../sprites/item-axe.json","text!../sprites/item-bluesword.json","text!../sprites/item-burger.json","text!../sprites/item-cake.json","text!../sprites/item-firepotion.json","text!../sprites/item-flask.json","text!../sprites/item-goldenarmor.json","text!../sprites/item-goldensword.json","text!../sprites/item-leatherarmor.json","text!../sprites/item-mailarmor.json","text!../sprites/item-morningstar.json","text!../sprites/item-platearmor.json","text!../sprites/item-redarmor.json","text!../sprites/item-redsword.json","text!../sprites/item-sword1.json","text!../sprites/item-sword2.json","text!../sprites/king.json","text!../sprites/lavanpc.json","text!../sprites/leatherarmor.json","text!../sprites/loot.json","text!../sprites/mailarmor.json","text!../sprites/morningstar.json","text!../sprites/nyan.json","text!../sprites/octocat.json","text!../sprites/ogre.json","text!../sprites/platearmor.json","text!../sprites/priest.json","text!../sprites/rat.json","text!../sprites/redarmor.json","text!../sprites/redsword.json","text!../sprites/rick.json","text!../sprites/scientist.json","text!../sprites/shadow16.json","text!../sprites/skeleton.json","text!../sprites/skeleton2.json","text!../sprites/snake.json","text!../sprites/sorcerer.json","text!../sprites/sparks.json","text!../sprites/spectre.json","text!../sprites/sword.json","text!../sprites/sword1.json","text!../sprites/sword2.json","text!../sprites/talk.json","text!../sprites/target.json","text!../sprites/villagegirl.json","text!../sprites/villager.json","text!../sprites/wizard.json"],function(){var e={};return _.each(arguments,function(t){var n=JSON.parse(t);e[n.id]=n}),e}),define("sprite",["jquery","animation","sprites"],function(e,t,n){var r=Class.extend({init:function(e,t){this.name=e,this.scale=t,this.isLoaded=!1,this.offsetX=0,this.offsetY=0,this.loadJSON(n[e])},loadJSON:function(e){this.id=e.id,this.filepath="img/"+this.scale+"/"+this.id+".png",this.animationData=e.animations,this.width=e.width,this.height=e.height,this.offsetX=e.offset_x!==undefined?e.offset_x:-16,this.offsetY=e.offset_y!==undefined?e.offset_y:-16,this.load()},load:function(){var e=this;this.image=new Image,this.image.src=this.filepath,this.image.onload=function(){e.isLoaded=!0,e.onload_func&&e.onload_func()}},createAnimations:function(){var e={};for(var n in this.animationData){var r=this.animationData[n];e[n]=new t(n,r.length,r.row,this.width,this.height)}return e},createHurtSprite:function(){var e=document.createElement("canvas"),t=e.getContext("2d"),n=this.image.width,r=this.image.height,i,s;e.width=n,e.height=r,t.drawImage(this.image,0,0,n,r);try{i=t.getImageData(0,0,n,r),s=i.data;for(var o=0;o1&&!l(u(t.x-1,t.y))?!0:t.y1&&!l(u(t.x,t.y-1))?!0:!1},l=function(e){return e<0||e>=o.length?!0:o[e]===0&&o[e+1]===0&&o[e+2]===0&&o[e+3]===0};for(var c=0;cthis.speed?(this.tick(),this.lastTime=e,!0):!1}});return t}),define("warrior",["player"],function(e){var t=e.extend({init:function(e,t){this._super(e,t,Types.Entities.WARRIOR)}});return t}),define("mob",["character"],function(e){var t=e.extend({init:function(e,t){this._super(e,t),this.aggroRange=1,this.isAggressive=!0}});return t}),define("mobs",["mob","timer"],function(e,t){var n={Rat:e.extend({init:function(e){this._super(e,Types.Entities.RAT),this.moveSpeed=350,this.idleSpeed=700,this.shadowOffsetY=-2,this.isAggressive=!1}}),Skeleton:e.extend({init:function(e){this._super(e,Types.Entities.SKELETON),this.moveSpeed=350,this.atkSpeed=100,this.idleSpeed=800,this.shadowOffsetY=1,this.setAttackRate(1300)}}),Skeleton2:e.extend({init:function(e){this._super(e,Types.Entities.SKELETON2),this.moveSpeed=200,this.atkSpeed=100,this.idleSpeed=800,this.walkSpeed=200,this.shadowOffsetY=1,this.setAttackRate(1300)}}),Spectre:e.extend({init:function(e){this._super(e,Types.Entities.SPECTRE),this.moveSpeed=150,this.atkSpeed=50,this.idleSpeed=200,this.walkSpeed=200,this.shadowOffsetY=1,this.setAttackRate(900)}}),Deathknight:e.extend({init:function(e){this._super(e,Types.Entities.DEATHKNIGHT),this.atkSpeed=50,this.moveSpeed=220,this.walkSpeed=100,this.idleSpeed=450,this.setAttackRate(800),this.aggroRange=3},idle:function(e){this.hasTarget()?this._super(e):this._super(Types.Orientations.DOWN)}}),Goblin:e.extend({init:function(e){this._super(e,Types.Entities.GOBLIN),this.moveSpeed=150,this.atkSpeed=60,this.idleSpeed=600,this.setAttackRate(700)}}),Ogre:e.extend({init:function(e){this._super(e,Types.Entities.OGRE),this.moveSpeed=300,this.atkSpeed=100,this.idleSpeed=600}}),Crab:e.extend({init:function(e){this._super(e,Types.Entities.CRAB),this.moveSpeed=200,this.atkSpeed=40,this.idleSpeed=500}}),Snake:e.extend({init:function(e){this._super(e,Types.Entities.SNAKE),this.moveSpeed=200,this.atkSpeed=40,this.idleSpeed=250,this.walkSpeed=100,this.shadowOffsetY=-4}}),Eye:e.extend({init:function(e){this._super(e,Types.Entities.EYE),this.moveSpeed=200,this.atkSpeed=40,this.idleSpeed=50}}),Bat:e.extend({init:function(e){this._super(e,Types.Entities.BAT),this.moveSpeed=120,this.atkSpeed=90,this.idleSpeed=90,this.walkSpeed=85,this.isAggressive=!1}}),Wizard:e.extend({init:function(e){this._super(e,Types.Entities.WIZARD),this.moveSpeed=200,this.atkSpeed=100,this.idleSpeed=150}}),Boss:e.extend({init:function(e){this._super(e,Types.Entities.BOSS),this.moveSpeed=300,this.atkSpeed=50,this.idleSpeed=400,this.atkRate=2e3,this.attackCooldown=new t(this.atkRate),this.aggroRange=3},idle:function(e){this.hasTarget()?this._super(e):this._super(Types.Orientations.DOWN)}})};return n}),define("items",["item"],function(e){var t={Sword2:e.extend({init:function(e){this._super(e,Types.Entities.SWORD2,"weapon"),this.lootMessage="You pick up a steel sword"}}),Axe:e.extend({init:function(e){this._super(e,Types.Entities.AXE,"weapon"),this.lootMessage="You pick up an axe"}}),RedSword:e.extend({init:function(e){this._super(e,Types.Entities.REDSWORD,"weapon"),this.lootMessage="You pick up a blazing sword"}}),BlueSword:e.extend({init:function(e){this._super(e,Types.Entities.BLUESWORD,"weapon"),this.lootMessage="You pick up a magic sword"}}),GoldenSword:e.extend({init:function(e){this._super(e,Types.Entities.GOLDENSWORD,"weapon"),this.lootMessage="You pick up the ultimate sword"}}),MorningStar:e.extend({init:function(e){this._super(e,Types.Entities.MORNINGSTAR,"weapon"),this.lootMessage="You pick up a morning star"}}),LeatherArmor:e.extend({init:function(e){this._super(e,Types.Entities.LEATHERARMOR,"armor"),this.lootMessage="You equip a leather armor"}}),MailArmor:e.extend({init:function(e){this._super(e,Types.Entities.MAILARMOR,"armor"),this.lootMessage="You equip a mail armor"}}),PlateArmor:e.extend({init:function(e){this._super(e,Types.Entities.PLATEARMOR,"armor"),this.lootMessage="You equip a plate armor"}}),RedArmor:e.extend({init:function(e){this._super(e,Types.Entities.REDARMOR,"armor"),this.lootMessage="You equip a ruby armor"}}),GoldenArmor:e.extend({init:function(e){this._super(e,Types.Entities.GOLDENARMOR,"armor"),this.lootMessage="You equip a golden armor"}}),Flask:e.extend({init:function(e){this._super(e,Types.Entities.FLASK,"object"),this.lootMessage="You drink a health potion"}}),Cake:e.extend({init:function(e){this._super(e,Types.Entities.CAKE,"object"),this.lootMessage="You eat a cake"}}),Burger:e.extend({init:function(e){this._super(e,Types.Entities.BURGER,"object"),this.lootMessage="You can haz rat burger"}}),FirePotion:e.extend({init:function(e){this._super(e,Types.Entities.FIREPOTION,"object"),this.lootMessage="You feel the power of Firefox!"},onLoot:function(e){e.startInvincibility()}})};return t}),define("npc",["character"],function(e){var t={guard:["Hello there","We don't need to see your identification","You are not the player we're looking for","Move along, move along..."],king:["Hi, I'm the King","I run this place","Like a boss","I talk to people","Like a boss","I wear a crown","Like a boss","I do nothing all day","Like a boss","Now leave me alone","Like a boss"],villagegirl:["Hi there, adventurer!","How do you like this game?","It's all happening in a single web page! Isn't it crazy?","It's all made possible thanks to WebSockets.","I don't know much about it, after all I'm just a program.",'Why don't you read this blog post and learn all about it?'],villager:["Howdy stranger. Do you like poetry?","Roses are red, violets are blue...","I like hunting rats, and so do you...","The rats are dead, now what to do?","To be honest, I have no clue.","Maybe the forest, could interest you...","or instead, cook a rat stew."],agent:["Do not try to bend the sword","That's impossible","Instead, only try to realize the truth...","There is no sword."],rick:["We're no strangers to love","You know the rules and so do I","A full commitment's what I'm thinking of","You wouldn't get this from any other guy","I just wanna tell you how I'm feeling","Gotta make you understand","Never gonna give you up","Never gonna let you down","Never gonna run around and desert you","Never gonna make you cry","Never gonna say goodbye","Never gonna tell a lie and hurt you"],scientist:["Greetings.","I am the inventor of these two potions.","The red one will replenish your health points...","The orange one will turn you into a firefox and make you invincible...","But it only lasts for a short while.","So make good use of it!","Now if you'll excuse me, I need to get back to my experiments..."],nyan:["nyan nyan nyan nyan nyan","nyan nyan nyan nyan nyan nyan nyan","nyan nyan nyan nyan nyan nyan","nyan nyan nyan nyan nyan nyan nyan nyan"],beachnpc:["lorem ipsum dolor sit amet","consectetur adipisicing elit, sed do eiusmod tempor"],forestnpc:["lorem ipsum dolor sit amet","consectetur adipisicing elit, sed do eiusmod tempor"],desertnpc:["lorem ipsum dolor sit amet","consectetur adipisicing elit, sed do eiusmod tempor"],lavanpc:["lorem ipsum dolor sit amet","consectetur adipisicing elit, sed do eiusmod tempor"],priest:["Oh, hello, young man.","Wisdom is everything, so I'll share a few guidelines with you.","You are free to go wherever you like in this world","but beware of the many foes that await you.","You can find many weapons and armors by killing enemies.","The tougher the enemy, the higher the potential rewards.","You can also unlock achievements by exploring and hunting.","Click on the small cup icon to see a list of all the achievements.","Please stay a while and enjoy the many surprises of BrowserQuest","Farewell, young friend."],sorcerer:["Ah... I had foreseen you would come to see me.","Well? How do you like my new staff?","Pretty cool, eh?","Where did I get it, you ask?","I understand. It's easy to get envious.","I actually crafted it myself, using my mad wizard skills.","But let me tell you one thing...","There are lots of items in this game.","Some more powerful than others.","In order to find them, exploration is key.","Good luck."],octocat:["Welcome to BrowserQuest!","Want to see the source code?",'Check out the repository on GitHub'],coder:["Hi! Do you know that you can also play BrowserQuest on your tablet or mobile?","That's the beauty of HTML5!","Give it a try..."],beachnpc:["Don't mind me, I'm just here on vacation.","I have to say...","These giant crabs are somewhat annoying.","Could you please get rid of them for me?"],desertnpc:["One does not simply walk into these mountains...","An ancient undead lord is said to dwell here.","Nobody knows exactly what he looks like...","...for none has lived to tell the tale.","It's not too late to turn around and go home, kid."],othernpc:["lorem ipsum","lorem ipsum"]},n=e.extend({init:function(e,n){this._super(e,n,1),this.itemKind=Types.getKindAsString(this.kind),this.talkCount=t[this.itemKind].length,this.talkIndex=0},talk:function(){var e=null;return this.talkIndex>this.talkCount&&(this.talkIndex=0),this.talkIndex=1&&o<=1.5?u|0:u-1|0):(o=u|0,u=u-o>=.5?u+1|0:o),o=0,e<0&&(r=0-r,u=0-u,o=1),r<65536?r===0?i+=n[13+o]+n[u+128]:i+=n[13+o]+n[u]+n[r]:i+=n[15+o]+n[r>>16&65535]+n[r&65535]+n[u]}else{var o=0;e<=0?(e=0-e,o=1):e--,e<116?i+=n[17+e+o*116]:e<65536?i+=n[1+o]+n[e]:i+=n[3+o]+n[e>>16&65535]+n[e&65535]}}else if(typeof e=="string"){var a=e.length;i+=n[7];while(a>=65535)a-=65535,i+=n[65535];i+=n[a]+e}else if(e===!0)i+=n[5];else if(e===!1)i+=n[6];else if(e===null)i+=n[0];else if(e instanceof Array){i+=n[8];for(var f=0,a=e.length;f16)c=t.substring(n,n+u-17),n+=u-17,l=!1;else if(u===8||u===10)h=u===8?new Array:new Object,l=f=u===10,s!==e?o instanceof Array?o.push(h):o[c]=h:s=h,i.push(h),a++;else if(u===11||u===9)i.pop(),l=f=!(i[--a]instanceof Array);else if(u>16)u-=17,u=u>115?0-u+116:u+1,o instanceof Array?o.push(u):o[c]=u,l=!0;else if(u>0&&u<5)((u-1)/2|0)===0?(h=t.charCodeAt(n),n++):(h=(t.charCodeAt(n)<<16)+t.charCodeAt(n+1),n+=2),h=u%2?h+1:0-h,o instanceof Array?o.push(h):o[c]=h,l=!0;else if(u>12&&u<17)((u-13)/2|0)===0?(p=t.charCodeAt(n),p>127?(h=0,p-=128,n++):(h=t.charCodeAt(n+1),n+=2)):(h=(t.charCodeAt(n)<<16)+t.charCodeAt(n+1),p=t.charCodeAt(n+2),n+=3),h=u%2?h+p*.01:0-(h+p*.01),o instanceof Array?o.push(h):o[c]=h,l=!0;else if(u>4&&u<7)o instanceof Array?o.push(u===5):o[c]=u===5,l=!0;else if(u===0)o instanceof Array?o.push(null):o[c]=null,l=!0;else if(u===7){h=0;while(t.charCodeAt(n)===65535)h+=65535,n++;h+=t.charCodeAt(n++),o instanceof Array?o.push(t.substr(n,h)):o[c]=t.substr(n,h),n+=h,l=!0}}return s}var t=String.fromCharCode,n=new Array(65536);for(var r=0;r<65536;r++)n[r]=t(r);var i="";typeof window=="undefined"?(exports.encode=o,exports.decode=u):window.BISON={encode:o,decode:u}}(),define("lib/bison",function(){}),define("gameclient",["player","entityfactory","lib/bison"],function(e,t,n){var r=Class.extend({init:function(e,t){this.connection=null,this.host=e,this.port=t,this.connected_callback=null,this.spawn_callback=null,this.movement_callback=null,this.handlers=[],this.handlers[Types.Messages.WELCOME]=this.receiveWelcome,this.handlers[Types.Messages.MOVE]=this.receiveMove,this.handlers[Types.Messages.LOOTMOVE]=this.receiveLootMove,this.handlers[Types.Messages.ATTACK]=this.receiveAttack,this.handlers[Types.Messages.SPAWN]=this.receiveSpawn,this.handlers[Types.Messages.DESPAWN]=this.receiveDespawn,this.handlers[Types.Messages.SPAWN_BATCH]=this.receiveSpawnBatch,this.handlers[Types.Messages.HEALTH]=this.receiveHealth,this.handlers[Types.Messages.CHAT]=this.receiveChat,this.handlers[Types.Messages.EQUIP]=this.receiveEquipItem,this.handlers[Types.Messages.DROP]=this.receiveDrop,this.handlers[Types.Messages.TELEPORT]=this.receiveTeleport,this.handlers[Types.Messages.DAMAGE]=this.receiveDamage,this.handlers[Types.Messages.POPULATION]=this.receivePopulation,this.handlers[Types.Messages.LIST]=this.receiveList,this.handlers[Types.Messages.DESTROY]=this.receiveDestroy,this.handlers[Types.Messages.KILL]=this.receiveKill,this.handlers[Types.Messages.HP]=this.receiveHitPoints,this.handlers[Types.Messages.BLINK]=this.receiveBlink,this.useBison=!1,this.enable()},enable:function(){this.isListening=!0},disable:function(){this.isListening=!1},connect:function(e){var t="http://"+this.host+":"+this.port+"/",n=this;this.connection=io(t,{"force new connection":!0}),this.connection.on("connection",function(e){log.info("Connected to server "+t)}),e?(this.connection.emit("dispatch",!0),this.connection.on("dispatched",function(e){console.log("Dispatched: "),console.log(e),e.status==="OK"?n.dispatched_callback(e.host,e.port):e.status==="FULL"?console.log("BrowserQuest is currently at maximum player population. Please retry later."):console.log("Unknown error while connecting to BrowserQuest.")})):(this.connection.on("message",function(e){if(e==="go"){n.connected_callback&&n.connected_callback();return}if(e==="timeout"){n.isTimeout=!0;return}n.receiveMessage(e)}),this.connection.on("disconnect",function(){log.debug("Connection closed"),$("#container").addClass("error"),n.disconnected_callback&&(n.isTimeout?n.disconnected_callback("You have been disconnected for being inactive for too long"):n.disconnected_callback("The connection to BrowserQuest has been lost"))}))},sendMessage:function(e){this.connection.connected&&this.connection.emit("message",e)},receiveMessage:function(e){this.isListening&&(log.debug("data: "+e),e instanceof Array&&(e[0]instanceof Array?this.receiveActionBatch(e):this.receiveAction(e)))},receiveAction:function(e){var t=e[0];this.handlers[t]&&_.isFunction(this.handlers[t])?this.handlers[t].call(this,e):log.error("Unknown action : "+t)},receiveActionBatch:function(e){var t=this;_.each(e,function(e){t.receiveAction(e)})},receiveWelcome:function(e){var t=e[1],n=e[2],r=e[3],i=e[4],s=e[5];this.welcome_callback&&this.welcome_callback(t,n,r,i,s)},receiveMove:function(e){var t=e[1],n=e[2],r=e[3];this.move_callback&&this.move_callback(t,n,r)},receiveLootMove:function(e){var t=e[1],n=e[2];this.lootmove_callback&&this.lootmove_callback(t,n)},receiveAttack:function(e){var t=e[1],n=e[2];this.attack_callback&&this.attack_callback(t,n)},receiveSpawn:function(n){var r=n[1],i=n[2],s=n[3],o=n[4];if(Types.isItem(i)){var u=t.createEntity(i,r);this.spawn_item_callback&&this.spawn_item_callback(u,s,o)}else if(Types.isChest(i)){var u=t.createEntity(i,r);this.spawn_chest_callback&&this.spawn_chest_callback(u,s,o)}else{var a,f,l,c,h;Types.isPlayer(i)?(a=n[5],f=n[6],h=n[7],c=n[8],n.length>9&&(l=n[9])):Types.isMob(i)&&(f=n[5],n.length>6&&(l=n[6]));var p=t.createEntity(i,r,a);p instanceof e&&(p.weaponName=Types.getKindAsString(c),p.spriteName=Types.getKindAsString(h)),this.spawn_character_callback&&this.spawn_character_callback(p,s,o,f,l)}},receiveDespawn:function(e){var t=e[1];this.despawn_callback&&this.despawn_callback(t)},receiveHealth:function(e){var t=e[1],n=!1;e[2]&&(n=!0),this.health_callback&&this.health_callback(t,n)},receiveChat:function(e){var t=e[1],n=e[2];this.chat_callback&&this.chat_callback(t,n)},receiveEquipItem:function(e){var t=e[1],n=e[2];this.equip_callback&&this.equip_callback(t,n)},receiveDrop:function(e){var n=e[1],r=e[2],i=e[3],s=t.createEntity(i,r);s.wasDropped=!0,s.playersInvolved=e[4],this.drop_callback&&this.drop_callback(s,n)},receiveTeleport:function(e){var t=e[1],n=e[2],r=e[3];this.teleport_callback&&this.teleport_callback(t,n,r)},receiveDamage:function(e){var t=e[1],n=e[2];this.dmg_callback&&this.dmg_callback(t,n)},receivePopulation:function(e){var t=e[1],n=e[2];this.population_callback&&this.population_callback(t,n)},receiveKill:function(e){var t=e[1];this.kill_callback&&this.kill_callback(t)},receiveList:function(e){e.shift(),this.list_callback&&this.list_callback(e)},receiveDestroy:function(e){var t=e[1];this.destroy_callback&&this.destroy_callback(t)},receiveHitPoints:function(e){var t=e[1];this.hp_callback&&this.hp_callback(t)},receiveBlink:function(e){var t=e[1];this.blink_callback&&this.blink_callback(t)},onDispatched:function(e){this.dispatched_callback=e},onConnected:function(e){this.connected_callback=e},onDisconnected:function(e){this.disconnected_callback=e},onWelcome:function(e){this.welcome_callback=e},onSpawnCharacter:function(e){this.spawn_character_callback=e},onSpawnItem:function(e){this.spawn_item_callback=e},onSpawnChest:function(e){this.spawn_chest_callback=e},onDespawnEntity:function(e){this.despawn_callback=e},onEntityMove:function(e){this.move_callback=e},onEntityAttack:function(e){this.attack_callback=e},onPlayerChangeHealth:function(e){this.health_callback=e},onPlayerEquipItem:function(e){this.equip_callback=e},onPlayerMoveToItem:function(e){this.lootmove_callback=e},onPlayerTeleport:function(e){this.teleport_callback=e},onChatMessage:function(e){this.chat_callback=e},onDropItem:function(e){this.drop_callback=e},onPlayerDamageMob:function(e){this.dmg_callback=e},onPlayerKillMob:function(e){this.kill_callback=e},onPopulationChange:function(e){this.population_callback=e},onEntityList:function(e){this.list_callback=e},onEntityDestroy:function(e){this.destroy_callback=e},onPlayerChangeMaxHitPoints:function(e){this.hp_callback=e},onItemBlink:function(e){this.blink_callback=e},sendHello:function(e){this.sendMessage([Types.Messages.HELLO,e.name,Types.getKindFromString(e.getSpriteName()),Types.getKindFromString(e.getWeaponName())])},sendMove:function(e,t){this.sendMessage([Types.Messages.MOVE,e,t])},sendLootMove:function(e,t,n){this.sendMessage([Types.Messages.LOOTMOVE,t,n,e.id])},sendAggro:function(e){this.sendMessage([Types.Messages.AGGRO,e.id])},sendAttack:function(e){this.sendMessage([Types.Messages.ATTACK,e.id])},sendHit:function(e){this.sendMessage([Types.Messages.HIT,e.id])},sendHurt:function(e){this.sendMessage([Types.Messages.HURT,e.id])},sendChat:function(e){this.sendMessage([Types.Messages.CHAT,e])},sendLoot:function(e){this.sendMessage([Types.Messages.LOOT,e.id])},sendTeleport:function(e,t){this.sendMessage([Types.Messages.TELEPORT,e,t])},sendWho:function(e){e.unshift(Types.Messages.WHO),this.sendMessage(e)},sendZone:function(){this.sendMessage([Types.Messages.ZONE])},sendOpen:function(e){this.sendMessage([Types.Messages.OPEN,e.id])},sendCheck:function(e){this.sendMessage([Types.Messages.CHECK,e])}});return r}),define("audio",["area"],function(e){var t=Class.extend({init:function(e){var t=this;this.enabled=!0,this.extension=Detect.canPlayMP3()?"mp3":"ogg",this.sounds={},this.game=e,this.currentMusic=null,this.areas=[],this.musicNames=["village","beach","forest","cave","desert","lavaland","boss"],this.soundNames=["loot","hit1","hit2","hurt","heal","chat","revive","death","firefox","achievement","kill1","kill2","noloot","teleport","chest","npc","npc-end"];var n=function(){var e=_.size(t.soundNames);log.info("Loading sound files..."),_.each(t.soundNames,function(n){t.loadSound(n,function(){e-=1,e===0&&(Detect.isSafari()||r())})})},r=function(){t.game.renderer.mobile||(log.info("Loading music files..."),t.loadMusic(t.musicNames.shift(),function(){_.each(t.musicNames,function(e){t.loadMusic(e)})}))};!Detect.isSafari()||!Detect.isWindows()?n():this.enabled=!1},toggle:function(){this.enabled?(this.enabled=!1,this.currentMusic&&this.resetMusic(this.currentMusic)):(this.enabled=!0,this.currentMusic&&(this.currentMusic=null),this.updateMusic())},load:function(e,t,n,r){var i=e+t+"."+this.extension,s=document.createElement("audio"),o=this;s.addEventListener("canplaythrough",function(e){this.removeEventListener("canplaythrough",arguments.callee,!1),log.debug(i+" is ready to play."),n&&n()},!1),s.addEventListener("error",function(e){log.error("Error: "+i+" could not be loaded."),o.sounds[t]=null},!1),s.preload="auto",s.autobuffer=!0,s.src=i,s.load(),this.sounds[t]=[s],_.times(r-1,function(){o.sounds[t].push(s.cloneNode(!0))})},loadSound:function(e,t){this.load("audio/sounds/",e,t,4)},loadMusic:function(e,t){this.load("audio/music/",e,t,1);var n=this.sounds[e][0];n.loop=!0,n.addEventListener("ended",function(){n.play()},!1)},getSound:function(e){if(!this.sounds[e])return null;var t=_.detect(this.sounds[e],function(e){return e.ended||e.paused});return t&&t.ended?t.currentTime=0:t=this.sounds[e][0],t},playSound:function(e){var t=this.enabled&&this.getSound(e);t&&t.play()},addArea:function(t,n,r,i,s){var o=new e(t,n,r,i);o.musicName=s,this.areas.push(o)},getSurroundingMusic:function(e){var t=null,n=_.detect(this.areas,function(t){return t.contains(e)});return n&&(t={sound:this.getSound(n.musicName),name:n.musicName}),t},updateMusic:function(){if(this.enabled){var e=this.getSurroundingMusic(this.game.player);e?this.isCurrentMusic(e)||(this.currentMusic&&this.fadeOutCurrentMusic(),this.playMusic(e)):this.fadeOutCurrentMusic()}},isCurrentMusic:function(e){return this.currentMusic&&e.name===this.currentMusic.name},playMusic:function(e){this.enabled&&e&&e.sound&&(e.sound.fadingOut?this.fadeInMusic(e):(e.sound.volume=1,e.sound.play()),this.currentMusic=e)},resetMusic:function(e){e&&e.sound&&e.sound.readyState>0&&(e.sound.pause(),e.sound.currentTime=0)},fadeOutMusic:function(e,t){var n=this;e&&!e.sound.fadingOut&&(this.clearFadeIn(e),e.sound.fadingOut=setInterval(function(){var r=.02;volume=e.sound.volume-r,n.enabled&&volume>=r?e.sound.volume=volume:(e.sound.volume=0,n.clearFadeOut(e),t(e))},50))},fadeInMusic:function(e){var t=this;e&&!e.sound.fadingIn&&(this.clearFadeOut(e),e.sound.fadingIn=setInterval(function(){var n=.01;volume=e.sound.volume+n,t.enabled&&volume<1-n?e.sound.volume=volume:(e.sound.volume=1,t.clearFadeIn(e))},30))},clearFadeOut:function(e){e.sound.fadingOut&&(clearInterval(e.sound.fadingOut),e.sound.fadingOut=null)},clearFadeIn:function(e){e.sound.fadingIn&&(clearInterval(e.sound.fadingIn),e.sound.fadingIn=null)},fadeOutCurrentMusic:function(){var e=this;this.currentMusic&&(this.fadeOutMusic(this.currentMusic,function(t){e.resetMusic(t)}),this.currentMusic=null)}});return t}),define("updater",["character","timer"],function(e,t){var n=Class.extend({init:function(e){this.game=e,this.playerAggroTimer=new t(1e3)},update:function(){this.updateZoning(),this.updateCharacters(),this.updatePlayerAggro(),this.updateTransitions(),this.updateAnimations(),this.updateAnimatedTiles(),this.updateChatBubbles(),this.updateInfos()},updateCharacters:function(){var t=this;this.game.forEachEntity(function(n){var r=n instanceof e;n.isLoaded&&(r&&(t.updateCharacter(n),t.game.onCharacterUpdate(n)),t.updateEntityFading(n))})},updatePlayerAggro:function(){var e=this.game.currentTime,t=this.game.player;t&&!t.isMoving()&&!t.isAttacking()&&this.playerAggroTimer.isOver(e)&&t.checkAggro()},updateEntityFading:function(e){if(e&&e.isFading){var t=1e3,n=this.game.currentTime,r=n-e.startFadingTime;r>t?(this.isFading=!1,e.fadingAlpha=1):e.fadingAlpha=r/t}},updateTransitions:function(){var e=this,t=null,n=this.game.currentZoning;this.game.forEachEntity(function(n){t=n.movement,t&&t.inProgress&&t.step(e.game.currentTime)}),n&&n.inProgress&&n.step(this.game.currentTime)},updateZoning:function(){var e=this.game,t=e.camera,n=e.currentZoning,r=3,i=16,s=500;if(n&&n.inProgress===!1){var o=this.game.zoningOrientation,u=endValue=offset=0,a=null,f=null;if(o===Types.Orientations.LEFT||o===Types.Orientations.RIGHT)offset=(t.gridW-2)*i,u=o===Types.Orientations.LEFT?t.x-i:t.x+i,endValue=o===Types.Orientations.LEFT?t.x-offset:t.x+offset,a=function(n){t.setPosition(n,t.y),e.initAnimatedTiles(),e.renderer.renderStaticCanvases()},f=function(){t.setPosition(n.endValue,t.y),e.endZoning()};else if(o===Types.Orientations.UP||o===Types.Orientations.DOWN)offset=(t.gridH-2)*i,u=o===Types.Orientations.UP?t.y-i:t.y+i,endValue=o===Types.Orientations.UP?t.y-offset:t.y+offset,a=function(n){t.setPosition(t.x,n),e.initAnimatedTiles(),e.renderer.renderStaticCanvases()},f=function(){t.setPosition(t.x,n.endValue),e.endZoning()};n.start(this.game.currentTime,a,f,u,endValue,s)}},updateCharacter:function(e){var t=this,n=Math.round(16/Math.round(e.moveSpeed/(1e3/this.game.renderer.FPS)));e.isMoving()&&e.movement.inProgress===!1&&(e.orientation===Types.Orientations.LEFT?e.movement.start(this.game.currentTime,function(t){e.x=t,e.hasMoved()},function(){e.x=e.movement.endValue,e.hasMoved(),e.nextStep()},e.x-n,e.x-16,e.moveSpeed):e.orientation===Types.Orientations.RIGHT?e.movement.start(this.game.currentTime,function(t){e.x=t,e.hasMoved()},function(){e.x=e.movement.endValue,e.hasMoved(),e.nextStep()},e.x+n,e.x+16,e.moveSpeed):e.orientation===Types.Orientations.UP?e.movement.start(this.game.currentTime,function(t){e.y=t,e.hasMoved()},function(){e.y=e.movement.endValue,e.hasMoved(),e.nextStep()},e.y-n,e.y-16,e.moveSpeed):e.orientation===Types.Orientations.DOWN&&e.movement.start(this.game.currentTime,function(t){e.y=t,e.hasMoved()},function(){e.y=e.movement.endValue,e.hasMoved(),e.nextStep()},e.y+n,e.y+16,e.moveSpeed))},updateAnimations:function(){var e=this.game.currentTime;this.game.forEachEntity(function(t){var n=t.currentAnimation;n&&n.update(e)&&t.setDirty()});var t=this.game.sparksAnimation;t&&t.update(e);var n=this.game.targetAnimation;n&&n.update(e)},updateAnimatedTiles:function(){var e=this,t=this.game.currentTime;this.game.forEachAnimatedTile(function(n){n.animate(t)&&(n.isDirty=!0,n.dirtyRect=e.game.renderer.getTileBoundingRect(n),(e.game.renderer.mobile||e.game.renderer.tablet)&&e.game.checkOtherDirtyRects(n.dirtyRect,n,n.x,n.y))})},updateChatBubbles:function(){var e=this.game.currentTime;this.game.bubbleManager.update(e)},updateInfos:function(){var e=this.game.currentTime;this.game.infoManager.update(e)}});return n}),define("lib/astar",[],function(){var e=function(){function e(e,t,n,r,i,s,o,u,a,f,l,c,h){return e&&(n&&!a[i][o]&&(c[h++]={x:o,y:i}),r&&!a[i][u]&&(c[h++]={x:u,y:i})),t&&(n&&!a[s][o]&&(c[h++]={x:o,y:s}),r&&!a[s][u]&&(c[h++]={x:u,y:s})),c}function t(e,t,n,r,i,s,o,u,a,f,l,c,h){return e=i>-1,t=s-1,n&&(e&&!a[i][o]&&(c[h++]={x:o,y:i}),t&&!a[s][o]&&(c[h++]={x:o,y:s})),r&&(e&&!a[i][u]&&(c[h++]={x:u,y:i}),t&&!a[s][u]&&(c[h++]={x:u,y:s})),c}function n(e,t,n,r,i,s,o,u,a,f,l,c,h){return c}function r(e,t,n,r,i,s){var o=n-1,u=n+1,a=t+1,f=t-1,l=o>-1&&!r[o][t],c=u-1&&!r[n][f],d=[],v=0;return l&&(d[v++]={x:t,y:o}),h&&(d[v++]={x:a,y:n}),c&&(d[v++]={x:t,y:u}),p&&(d[v++]={x:f,y:n}),e(l,c,h,p,o,u,a,f,r,i,s,d,v)}function i(e,t,n,r){return r(n(e.x-t.x),n(e.y-t.y))}function s(e,t,n,r){var i=e.x-t.x,s=e.y-t.y;return r(i*i+s*s)}function o(e,t,n,r){return n(e.x-t.x)+n(e.y-t.y)}function u(u,a,f,l){var c=u[0].length,h=u.length,p=c*h,d=Math.abs,v=Math.max,m={},g=[],y=[{x:a[0],y:a[1],f:0,g:0,v:a[0]+a[1]*c}],b=1,w,E,S,x,T,N,C,k,L;f={x:f[0],y:f[1],v:f[0]+f[1]*c};switch(l){case"Diagonal":S=e;case"DiagonalFree":E=i;break;case"Euclidean":S=e;case"EuclideanFree":v=Math.sqrt,E=s;break;default:E=o,S=n}S||(S=t);do{N=p,C=0;for(x=0;x0;u-=1){i=r[u][0],s=r[u][1];if(this.grid[s][i]===0){o=e(this.grid,t,[i,s]);break}}return o},ignoreEntity:function(e){e&&this.ignored.push(e)},applyIgnoreList_:function(e){var t=this,n,r,i;_.each(this.ignored,function(i){n=i.isMoving()?i.nextGridX:i.gridX,r=i.isMoving()?i.nextGridY:i.gridY,n>=0&&r>=0&&(t.grid[r][n]=e?0:1)})},clearIgnoreList:function(){this.applyIgnoreList_(!1),this.ignored=[]}});return t}),define("text!../config/config_build.json",function(){return'{\n "host": "raspbiyou.ddns.net",\n "port": 8000\n}'}),define("config",["text!../config/config_build.json"],function(e){var t={dev:{host:"localhost",port:8e3,dispatcher:!1},build:JSON.parse(e)};return t}),Types={Messages:{HELLO:0,WELCOME:1,SPAWN:2,DESPAWN:3,MOVE:4,LOOTMOVE:5,AGGRO:6,ATTACK:7,HIT:8,HURT:9,HEALTH:10,CHAT:11,LOOT:12,EQUIP:13,DROP:14,TELEPORT:15,DAMAGE:16,POPULATION:17,KILL:18,LIST:19,WHO:20,ZONE:21,DESTROY:22,HP:23,BLINK:24,OPEN:25,CHECK:26},Entities:{WARRIOR:1,RAT:2,SKELETON:3,GOBLIN:4,OGRE:5,SPECTRE:6,CRAB:7,BAT:8,WIZARD:9,EYE:10,SNAKE:11,SKELETON2:12,BOSS:13,DEATHKNIGHT:14,FIREFOX:20,CLOTHARMOR:21,LEATHERARMOR:22,MAILARMOR:23,PLATEARMOR:24,REDARMOR:25,GOLDENARMOR:26,FLASK:35,BURGER:36,CHEST:37,FIREPOTION:38,CAKE:39,GUARD:40,KING:41,OCTOCAT:42,VILLAGEGIRL:43,VILLAGER:44,PRIEST:45,SCIENTIST:46,AGENT:47,RICK:48,NYAN:49,SORCERER:50,BEACHNPC:51,FORESTNPC:52,DESERTNPC:53,LAVANPC:54,CODER:55,SWORD1:60,SWORD2:61,REDSWORD:62,GOLDENSWORD:63,MORNINGSTAR:64,AXE:65,BLUESWORD:66},Orientations:{UP:1,DOWN:2,LEFT:3,RIGHT:4}};var kinds={warrior:[Types.Entities.WARRIOR,"player"],rat:[Types.Entities.RAT,"mob"],skeleton:[Types.Entities.SKELETON,"mob"],goblin:[Types.Entities.GOBLIN,"mob"],ogre:[Types.Entities.OGRE,"mob"],spectre:[Types.Entities.SPECTRE,"mob"],deathknight:[Types.Entities.DEATHKNIGHT,"mob"],crab:[Types.Entities.CRAB,"mob"],snake:[Types.Entities.SNAKE,"mob"],bat:[Types.Entities.BAT,"mob"],wizard:[Types.Entities.WIZARD,"mob"],eye:[Types.Entities.EYE,"mob"],skeleton2:[Types.Entities.SKELETON2,"mob"],boss:[Types.Entities.BOSS,"mob"],sword1:[Types.Entities.SWORD1,"weapon"],sword2:[Types.Entities.SWORD2,"weapon"],axe:[Types.Entities.AXE,"weapon"],redsword:[Types.Entities.REDSWORD,"weapon"],bluesword:[Types.Entities.BLUESWORD,"weapon"],goldensword:[Types.Entities.GOLDENSWORD,"weapon"],morningstar:[Types.Entities.MORNINGSTAR,"weapon"],firefox:[Types.Entities.FIREFOX,"armor"],clotharmor:[Types.Entities.CLOTHARMOR,"armor"],leatherarmor:[Types.Entities.LEATHERARMOR,"armor"],mailarmor:[Types.Entities.MAILARMOR,"armor"],platearmor:[Types.Entities.PLATEARMOR,"armor"],redarmor:[Types.Entities.REDARMOR,"armor"],goldenarmor:[Types.Entities.GOLDENARMOR,"armor"],flask:[Types.Entities.FLASK,"object"],cake:[Types.Entities.CAKE,"object"],burger:[Types.Entities.BURGER,"object"],chest:[Types.Entities.CHEST,"object"],firepotion:[Types.Entities.FIREPOTION,"object"],guard:[Types.Entities.GUARD,"npc"],villagegirl:[Types.Entities.VILLAGEGIRL,"npc"],villager:[Types.Entities.VILLAGER,"npc"],coder:[Types.Entities.CODER,"npc"],scientist:[Types.Entities.SCIENTIST,"npc"],priest:[Types.Entities.PRIEST,"npc"],king:[Types.Entities.KING,"npc"],rick:[Types.Entities.RICK,"npc"],nyan:[Types.Entities.NYAN,"npc"],sorcerer:[Types.Entities.SORCERER,"npc"],agent:[Types.Entities.AGENT,"npc"],octocat:[Types.Entities.OCTOCAT,"npc"],beachnpc:[Types.Entities.BEACHNPC,"npc"],forestnpc:[Types.Entities.FORESTNPC,"npc"],desertnpc:[Types.Entities.DESERTNPC,"npc"],lavanpc:[Types.Entities.LAVANPC,"npc"],getType:function(e){return kinds[Types.getKindAsString(e)][1]}};Types.rankedWeapons=[Types.Entities.SWORD1,Types.Entities.SWORD2,Types.Entities.AXE,Types.Entities.MORNINGSTAR,Types.Entities.BLUESWORD,Types.Entities.REDSWORD,Types.Entities.GOLDENSWORD],Types.rankedArmors=[Types.Entities.CLOTHARMOR,Types.Entities.LEATHERARMOR,Types.Entities.MAILARMOR,Types.Entities.PLATEARMOR,Types.Entities.REDARMOR,Types.Entities.GOLDENARMOR],Types.getWeaponRank=function(e){return _.indexOf(Types.rankedWeapons,e)},Types.getArmorRank=function(e){return _.indexOf(Types.rankedArmors,e)},Types.isPlayer=function(e){return kinds.getType(e)==="player"},Types.isMob=function(e){return kinds.getType(e)==="mob"},Types.isNpc=function(e){return kinds.getType(e)==="npc"},Types.isCharacter=function(e){return Types.isMob(e)||Types.isNpc(e)||Types.isPlayer(e)},Types.isArmor=function(e){return kinds.getType(e)==="armor"},Types.isWeapon=function(e){return kinds.getType(e)==="weapon"},Types.isObject=function(e){return kinds.getType(e)==="object"},Types.isChest=function(e){return e===Types.Entities.CHEST},Types.isItem=function(e){return Types.isWeapon(e)||Types.isArmor(e)||Types.isObject(e)&&!Types.isChest(e)},Types.isHealingItem=function(e){return e===Types.Entities.FLASK||e===Types.Entities.BURGER},Types.isExpendableItem=function(e){return Types.isHealingItem(e)||e===Types.Entities.FIREPOTION||e===Types.Entities.CAKE},Types.getKindFromString=function(e){if(e in kinds)return kinds[e][0]},Types.getKindAsString=function(e){for(var t in kinds)if(kinds[t][0]===e)return t},Types.forEachKind=function(e){for(var t in kinds)e(kinds[t][0],t)},Types.forEachArmor=function(e){Types.forEachKind(function(t,n){Types.isArmor(t)&&e(t,n)})},Types.forEachMobOrNpcKind=function(e){Types.forEachKind(function(t,n){(Types.isMob(t)||Types.isNpc(t))&&e(t,n)})},Types.forEachArmorKind=function(e){Types.forEachKind(function(t,n){Types.isArmor(t)&&e(t,n)})},Types.getOrientationAsString=function(e){switch(e){case Types.Orientations.LEFT:return"left";case Types.Orientations.RIGHT:return"right";case Types.Orientations.UP:return"up";case Types.Orientations.DOWN:return"down"}},Types.getRandomItemKind=function(e){var t=_.union(this.rankedWeapons,this.rankedArmors),n=[Types.Entities.SWORD1,Types.Entities.CLOTHARMOR],r=_.difference(t,n),i=Math.floor(Math.random()*_.size(r));return r[i]},Types.getMessageTypeAsString=function(e){var t;return _.each(Types.Messages,function(n,r){n===e&&(t=r)}),t||(t="UNKNOWN"),t},typeof exports!="undefined"&&(module.exports=Types),define("../../shared/js/gametypes",function(){}),define("game",["infomanager","bubble","renderer","map","animation","sprite","tile","warrior","gameclient","audio","updater","transition","pathfinder","item","mob","npc","player","character","chest","mobs","exceptions","config","../../shared/js/gametypes"],function(e,t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E){var S=Class.extend({init:function(t){this.app=t,this.app.config=E,this.ready=!1,this.started=!1,this.hasNeverStarted=!0,this.renderer=null,this.updater=null,this.pathfinder=null,this.chatinput=null,this.bubbleManager=null,this.audioManager=null,this.player=new u("player",""),this.entities={},this.deathpositions={},this.entityGrid=null,this.pathingGrid=null,this.renderingGrid=null,this.itemGrid=null,this.currentCursor=null,this.mouse={x:0,y:0},this.zoningQueue=[],this.previousClickPosition={},this.selectedX=0,this.selectedY=0,this.selectedCellVisible=!1,this.targetColor="rgba(255, 255, 255, 0.5)",this.targetCellVisible=!0,this.hoveringTarget=!1,this.hoveringMob=!1,this.hoveringItem=!1,this.hoveringCollidingTile=!1,this.infoManager=new e(this),this.currentZoning=null,this.cursors={},this.sprites={},this.animatedTiles=null,this.debugPathing=!1,this.spriteNames=["hand","sword","loot","target","talk","sparks","shadow16","rat","skeleton","skeleton2","spectre","boss","deathknight","ogre","crab","snake","eye","bat","goblin","wizard","guard","king","villagegirl","villager","coder","agent","rick","scientist","nyan","priest","sorcerer","octocat","beachnpc","forestnpc","desertnpc","lavanpc","clotharmor","leatherarmor","mailarmor","platearmor","redarmor","goldenarmor","firefox","death","sword1","axe","chest","sword2","redsword","bluesword","goldensword","item-sword2","item-axe","item-redsword","item-bluesword","item-goldensword","item-leatherarmor","item-mailarmor","item-platearmor","item-redarmor","item-goldenarmor","item-flask","item-cake","item-burger","morningstar","item-morningstar","item-firepotion"]},setup:function(e,r,i,s,o){this.setBubbleManager(new t(e)),this.setRenderer(new n(this,r,i,s)),this.setChatInput(o)},setStorage:function(e){this.storage=e},setRenderer:function(e){this.renderer=e},setUpdater:function(e){this.updater=e},setPathfinder:function(e){this.pathfinder=e},setChatInput:function(e){this.chatinput=e},setBubbleManager:function(e){this.bubbleManager=e},loadMap:function(){var e=this;this.map=new r(!this.renderer.upscaledRendering,this),this.map.ready(function(){log.info("Map loaded.");var t=e.renderer.upscaledRendering?0:e.renderer.scale-1;e.renderer.setTileset(e.map.tilesets[t])})},initPlayer:function(){this.storage.hasAlreadyPlayed()&&(this.player.setSpriteName(this.storage.data.player.armor),this.player.setWeaponName(this.storage.data.player.weapon)),this.player.setSprite(this.sprites[this.player.getSpriteName()]),this.player.idle(),log.debug("Finished initPlayer")},initShadows:function(){this.shadows={},this.shadows.small=this.sprites.shadow16},initCursors:function(){this.cursors.hand=this.sprites.hand,this.cursors.sword=this.sprites.sword,this.cursors.loot=this.sprites.loot,this.cursors.target=this.sprites.target,this.cursors.arrow=this.sprites.arrow,this.cursors.talk=this.sprites.talk},initAnimations:function(){this.targetAnimation=new i("idle_down",4,0,16,16),this.targetAnimation.setSpeed(50),this.sparksAnimation=new i("idle_down",6,0,16,16),this.sparksAnimation.setSpeed(120)},initHurtSprites:function(){var e=this;Types.forEachArmorKind(function(t,n){e.sprites[n].createHurtSprite()})},initSilhouettes:function(){var e=this;Types.forEachMobOrNpcKind(function(t,n){e.sprites[n].createSilhouette()}),e.sprites.chest.createSilhouette(),e.sprites["item-cake"].createSilhouette()},initAchievements:function(){var e=this;this.achievements={A_TRUE_WARRIOR:{id:1,name:"A True Warrior",desc:"Find a new weapon"},INTO_THE_WILD:{id:2,name:"Into the Wild",desc:"Venture outside the village"},ANGRY_RATS:{id:3,name:"Angry Rats",desc:"Kill 10 rats",isCompleted:function(){return e.storage.getRatCount()>=10}},SMALL_TALK:{id:4,name:"Small Talk",desc:"Talk to a non-player character"},FAT_LOOT:{id:5,name:"Fat Loot",desc:"Get a new armor set"},UNDERGROUND:{id:6,name:"Underground",desc:"Explore at least one cave"},AT_WORLDS_END:{id:7,name:"At World's End",desc:"Reach the south shore"},COWARD:{id:8,name:"Coward",desc:"Successfully escape an enemy"},TOMB_RAIDER:{id:9,name:"Tomb Raider",desc:"Find the graveyard"},SKULL_COLLECTOR:{id:10,name:"Skull Collector",desc:"Kill 10 skeletons",isCompleted:function(){return e.storage.getSkeletonCount()>=10}},NINJA_LOOT:{id:11,name:"Ninja Loot",desc:"Get hold of an item you didn't fight for"},NO_MANS_LAND:{id:12,name:"No Man's Land",desc:"Travel through the desert"},HUNTER:{id:13,name:"Hunter",desc:"Kill 50 enemies",isCompleted:function(){return e.storage.getTotalKills()>=50}},STILL_ALIVE:{id:14,name:"Still Alive",desc:"Revive your character five times",isCompleted:function(){return e.storage.getTotalRevives()>=5}},MEATSHIELD:{id:15,name:"Meatshield",desc:"Take 5,000 points of damage",isCompleted:function(){return e.storage.getTotalDamageTaken()>=5e3}},HOT_SPOT:{id:16,name:"Hot Spot",desc:"Enter the volcanic mountains"},HERO:{id:17,name:"Hero",desc:"Defeat the final boss"},FOXY:{id:18,name:"Foxy",desc:"Find the Firefox costume",hidden:!0},FOR_SCIENCE:{id:19,name:"For Science",desc:"Enter into a portal",hidden:!0},RICKROLLD:{id:20,name:"Rickroll'd",desc:"Take some singing lessons",hidden:!0}},_.each(this.achievements,function(e){e.isCompleted||(e.isCompleted=function(){return!0}),e.hidden||(e.hidden=!1)}),this.app.initAchievementList(this.achievements),this.storage.hasAlreadyPlayed()&&this.app.initUnlockedAchievements(this.storage.data.achievements.unlocked)},getAchievementById:function(e){var t=null;return _.each(this.achievements,function(n,r){n.id===parseInt(e)&&(t=n)}),t},loadSprite:function(e){this.renderer.upscaledRendering?this.spritesets[0][e]=new s(e,1):(this.spritesets[1][e]=new s(e,2),!this.renderer.mobile&&!this.renderer.tablet&&(this.spritesets[2][e]=new s(e,3)))},setSpriteScale:function(e){var t=this;this.renderer.upscaledRendering?this.sprites=this.spritesets[0]:(this.sprites=this.spritesets[e-1],_.each(this.entities,function(e){e.sprite=null,e.setSprite(t.sprites[e.getSpriteName()])}),this.initHurtSprites(),this.initShadows(),this.initCursors())},loadSprites:function(){log.info("Loading sprites..."),this.spritesets=[],this.spritesets[0]={},this.spritesets[1]={},this.spritesets[2]={},_.map(this.spriteNames,this.loadSprite,this)},spritesLoaded:function(){return _.any(this.sprites,function(e){return!e.isLoaded})?!1:!0},setCursor:function(e,t){e in this.cursors?(this.currentCursor=this.cursors[e],this.currentCursorOrientation=t):log.error("Unknown cursor name :"+e)},updateCursorLogic:function(){this.hoveringCollidingTile&&this.started?this.targetColor="rgba(255, 50, 50, 0.5)":this.targetColor="rgba(255, 255, 255, 0.5)",this.hoveringMob&&this.started?(this.setCursor("sword"),this.hoveringTarget=!1,this.targetCellVisible=!1):this.hoveringNpc&&this.started?(this.setCursor("talk"),this.hoveringTarget=!1,this.targetCellVisible=!1):(this.hoveringItem||this.hoveringChest)&&this.started?(this.setCursor("loot"),this.hoveringTarget=!1,this.targetCellVisible=!0):(this.setCursor("hand"),this.hoveringTarget=!1,this.targetCellVisible=!0)},focusPlayer:function(){this.renderer.camera.lookAt(this.player)},addEntity:function(e){var t=this;this.entities[e.id]===undefined?(this.entities[e.id]=e,this.registerEntityPosition(e),!(e instanceof p&&e.wasDropped)&&!this.renderer.mobile&&!this.renderer.tablet&&e.fadeIn(this.currentTime),(this.renderer.mobile||this.renderer.tablet)&&e.onDirty(function(e){t.camera.isVisible(e)&&(e.dirtyRect=t.renderer.getEntityBoundingRect(e),t.checkOtherDirtyRects(e.dirtyRect,e,e.gridX,e.gridY))})):log.error("This entity already exists : "+e.id+" ("+e.kind+")")},removeEntity:function(e){e.id in this.entities?(this.unregisterEntityPosition(e),delete this.entities[e.id]):log.error("Cannot remove entity. Unknown ID : "+e.id)},addItem:function(e,t,n){e.setSprite(this.sprites[e.getSpriteName()]),e.setGridPosition(t,n),e.setAnimation("idle",150),this.addEntity(e)},removeItem:function(e){e?(this.removeFromItemGrid(e,e.gridX,e.gridY),this.removeFromRenderingGrid(e,e.gridX,e.gridY),delete this.entities[e.id]):log.error("Cannot remove item. Unknown ID : "+e.id)},initPathingGrid:function(){this.pathingGrid=[];for(var e=0;e=0&&e.nextGridY>=0&&(this.entityGrid[e.nextGridY][e.nextGridX][e.id]=e,e instanceof m||(this.pathingGrid[e.nextGridY][e.nextGridX]=1)))},unregisterEntityPosition:function(e){e&&(this.removeFromEntityGrid(e,e.gridX,e.gridY),this.removeFromPathingGrid(e.gridX,e.gridY),this.removeFromRenderingGrid(e,e.gridX,e.gridY),e.nextGridX>=0&&e.nextGridY>=0&&(this.removeFromEntityGrid(e,e.nextGridX,e.nextGridY),this.removeFromPathingGrid(e.nextGridX,e.nextGridY)))},registerEntityPosition:function(e){var t=e.gridX,n=e.gridY;if(e){if(e instanceof g||e instanceof y)this.entityGrid[n][t][e.id]=e,e instanceof m||(this.pathingGrid[n][t]=1);e instanceof p&&(this.itemGrid[n][t][e.id]=e),this.addToRenderingGrid(e,t,n)}},setServerOptions:function(e,t,n){this.host=e,this.port=t,this.username=n},loadAudio:function(){this.audioManager=new f(this)},initMusicAreas:function(){var e=this;_.each(this.map.musicAreas,function(t){e.audioManager.addArea(t.x,t.y,t.w,t.h,t.id)})},run:function(e){var t=this;this.loadSprites(),this.setUpdater(new l(this)),this.camera=this.renderer.camera,this.setSpriteScale(this.renderer.scale);var n=setInterval(function(){t.map.isLoaded&&t.spritesLoaded()&&(t.ready=!0,log.debug("All sprites loaded."),t.loadAudio(),t.initMusicAreas(),t.initAchievements(),t.initCursors(),t.initAnimations(),t.initShadows(),t.initHurtSprites(),!t.renderer.mobile&&!t.renderer.tablet&&t.renderer.upscaledRendering&&t.initSilhouettes(),t.initEntityGrid(),t.initItemGrid(),t.initPathingGrid(),t.initRenderingGrid(),t.setPathfinder(new h(t.map.width,t.map.height)),t.initPlayer(),t.setCursor("hand"),t.connect(e),clearInterval(n))},100)},tick:function(){this.currentTime=(new Date).getTime(),this.started&&(this.updateCursorLogic(),this.updater.update(),this.renderer.renderFrame()),this.isStopped||requestAnimFrame(this.tick.bind(this))},start:function(){this.tick(),this.hasNeverStarted=!1,log.info("Game loop started.")},stop:function(){log.info("Game stopped."),this.isStopped=!0},entityIdExists:function(e){return e in this.entities},getEntityById:function(e){if(e in this.entities)return this.entities[e];log.error("Unknown entity id : "+e,!0)},connect:function(e){var t=this,n=!1;this.client=new a(this.host,this.port),n||this.client.connect(!0),this.client.onDispatched(function(e,n){log.debug("Dispatched to game server "+e+":"+n),t.client.host=e,t.client.port=n,t.client.connect()}),this.client.onConnected(function(){log.info("Starting client/server handshake"),t.player.name=t.username,t.started=!0,t.sendHello(t.player)}),this.client.onEntityList(function(e){var n=_.pluck(t.entities,"id"),r=_.intersection(n,e),i=_.difference(e,r);t.obsoleteEntities=_.reject(t.entities,function(e){return _.include(r,e.id)||e.id===t.player.id}),t.removeObsoleteEntities(),_.size(i)>0&&t.client.sendWho(i)}),this.client.onWelcome(function(n,r,i,s,o){log.info("Received player ID from server : "+n),t.player.id=n,t.playerId=n,t.player.name=r,t.player.setGridPosition(i,s),t.player.setMaxHitPoints(o),t.updateBars(),t.resetCamera(),t.updatePlateauMode(),t.audioManager.updateMusic(),t.addEntity(t.player),t.player.dirtyRect=t.renderer.getEntityBoundingRect(t.player),setTimeout(function(){t.tryUnlockingAchievement("STILL_ALIVE")},1500),t.storage.hasAlreadyPlayed()?(t.showNotification("Welcome back to BrowserQuest!"),t.storage.setPlayerName(r)):(t.storage.initPlayer(t.player.name),t.storage.savePlayer(t.renderer.getPlayerImage(),t.player.getSpriteName(),t.player.getWeaponName()),t.showNotification("Welcome to BrowserQuest!")),t.player.onStartPathing(function(e){var n=e.length-1,r=e[n][0],i=e[n][1];t.player.isMovingToLoot()?t.player.isLootMoving=!1:t.player.isAttacking()||t.client.sendMove(r,i),t.selectedX=r,t.selectedY=i,t.selectedCellVisible=!0;if(t.renderer.mobile||t.renderer.tablet)t.drawTarget=!0,t.clearTarget=!0,t.renderer.targetRect=t.renderer.getTargetBoundingRect(),t.checkOtherDirtyRects(t.renderer.targetRect,null,t.selectedX,t.selectedY)}),t.player.onCheckAggro(function(){t.forEachMob(function(e){e.isAggressive&&!e.isAttacking()&&t.player.isNear(e,e.aggroRange)&&t.player.aggro(e)})}),t.player.onAggro(function(e){!e.isWaitingToAttack(t.player)&&!t.player.isAttackedBy(e)&&(t.player.log_info("Aggroed by "+e.id+" at ("+t.player.gridX+", "+t.player.gridY+")"),t.client.sendAggro(e),e.waitToAttack(t.player))}),t.player.onBeforeStep(function(){var e=t.getEntityAt(t.player.nextGridX,t.player.nextGridY);e&&e.id!==t.playerId&&log.debug("Blocked by "+e.id),t.unregisterEntityPosition(t.player)}),t.player.onStep(function(){t.player.hasNextStep()&&t.registerEntityDualPosition(t.player),t.isZoningTile(t.player.gridX,t.player.gridY)&&t.enqueueZoningFrom(t.player.gridX,t.player.gridY),t.player.forEachAttacker(function(e){e.isAdjacent(e.target)?e.lookAtTarget():e.follow(t.player)}),(t.player.gridX<=85&&t.player.gridY<=179&&t.player.gridY>178||t.player.gridX<=85&&t.player.gridY<=266&&t.player.gridY>265)&&t.tryUnlockingAchievement("INTO_THE_WILD"),t.player.gridX<=85&&t.player.gridY<=293&&t.player.gridY>292&&t.tryUnlockingAchievement("AT_WORLDS_END"),t.player.gridX<=85&&t.player.gridY<=100&&t.player.gridY>99&&t.tryUnlockingAchievement("NO_MANS_LAND"),t.player.gridX<=85&&t.player.gridY<=51&&t.player.gridY>50&&t.tryUnlockingAchievement("HOT_SPOT"),t.player.gridX<=27&&t.player.gridY<=123&&t.player.gridY>112&&t.tryUnlockingAchievement("TOMB_RAIDER"),t.updatePlayerCheckpoint(),t.player.isDead||t.audioManager.updateMusic()}),t.player.onStopPathing(function(e,n){t.player.hasTarget()&&t.player.lookAtTarget(),t.selectedCellVisible=!1;if(t.isItemAt(e,n)){var r=t.getItemAt(e,n);try{t.player.loot(r),t.client.sendLoot(r),t.removeItem(r),t.showNotification(r.getLootMessage()),r.type==="armor"&&t.tryUnlockingAchievement("FAT_LOOT"),r.type==="weapon"&&t.tryUnlockingAchievement("A_TRUE_WARRIOR"),r.kind===Types.Entities.CAKE&&t.tryUnlockingAchievement("FOR_SCIENCE"),r.kind===Types.Entities.FIREPOTION&&(t.tryUnlockingAchievement("FOXY"),t.audioManager.playSound("firefox")),Types.isHealingItem(r.kind)?t.audioManager.playSound("heal"):t.audioManager.playSound("loot"),r.wasDropped&&!_(r.playersInvolved).include(t.playerId)&&t.tryUnlockingAchievement("NINJA_LOOT")}catch(i){if(!(i instanceof w.LootException))throw i;t.showNotification(i.message),t.audioManager.playSound("noloot")}}if(!t.player.hasTarget()&&t.map.isDoor(e,n)){var s=t.map.getDoorDestination(e,n);t.player.setGridPosition(s.x,s.y),t.player.nextGridX=s.x,t.player.nextGridY=s.y,t.player.turnTo(s.orientation),t.client.sendTeleport(s.x,s.y),t.renderer.mobile&&s.cameraX&&s.cameraY?(t.camera.setGridPosition(s.cameraX,s.cameraY),t.resetZone()):s.portal?t.assignBubbleTo(t.player):(t.camera.focusEntity(t.player),t.resetZone()),_.size(t.player.attackers)>0&&setTimeout(function(){t.tryUnlockingAchievement("COWARD")},500),t.player.forEachAttacker(function(e){e.disengage(),e.idle()}),t.updatePlateauMode(),t.checkUndergroundAchievement(),(t.renderer.mobile||t.renderer.tablet)&&t.renderer.clearScreen(t.renderer.context),s.portal&&t.audioManager.playSound("teleport"),t.player.isDead||t.audioManager.updateMusic()}t.player.target instanceof v?t.makeNpcTalk(t.player.target):t.player.target instanceof y&&(t.client.sendOpen(t.player.target),t.audioManager.playSound("chest")),t.player.forEachAttacker(function(e){e.isAdjacentNonDiagonal(t.player)||e.follow(t.player)}),t.unregisterEntityPosition(t.player),t.registerEntityPosition(t.player)}),t.player.onRequestPath(function(e,n){var r=[t.player];return t.player.hasTarget()&&r.push(t.player.target),t.findPath(t.player,e,n,r)}),t.player.onDeath(function(){log.info(t.playerId+" is dead"),t.player.stopBlinking(),t.player.setSprite(t.sprites.death),t.player.animate("death",120,1,function(){log.info(t.playerId+" was removed"),t.removeEntity(t.player),t.removeFromRenderingGrid(t.player,t.player.gridX,t.player.gridY),t.player=null,t.client.disable(),setTimeout(function(){t.playerdeath_callback()},1e3)}),t.player.forEachAttacker(function(e){e.disengage(),e.idle()}),t.audioManager.fadeOutCurrentMusic(),t.audioManager.playSound("death")}),t.player.onHasMoved(function(e){t.assignBubbleTo(e)}),t.player.onArmorLoot(function(e){t.player.switchArmor(t.sprites[e])}),t.player.onSwitchItem(function(){t.storage.savePlayer(t.renderer.getPlayerImage(),t.player.getArmorName(),t.player.getWeaponName()),t.equipment_callback&&t.equipment_callback()}),t.player.onInvincible(function(){t.invincible_callback(),t.player.switchArmor(t.sprites.firefox)}),t.client.onSpawnItem(function(e,n,r){log.info("Spawned "+Types.getKindAsString(e.kind)+" ("+e.id+") at "+n+", "+r),t.addItem(e,n,r)}),t.client.onSpawnChest(function(e,n,r){log.info("Spawned chest ("+e.id+") at "+n+", "+r),e.setSprite(t.sprites[e.getSpriteName()]),e.setGridPosition(n,r),e.setAnimation("idle_down",150),t.addEntity(e,n,r),e.onOpen(function(){e.stopBlinking(),e.setSprite(t.sprites.death),e.setAnimation("death",120,1,function(){log.info(e.id+" was removed"),t.removeEntity(e),t.removeFromRenderingGrid(e,e.gridX,e.gridY),t.previousClickPosition={}})})}),t.client.onSpawnCharacter(function(e,n,r,i,s){if(!t.entityIdExists(e.id))try{if(e.id!==t.playerId){e.setSprite(t.sprites[e.getSpriteName()]),e.setGridPosition(n,r),e.setOrientation(i),e.idle(),t.addEntity(e),log.debug("Spawned "+Types.getKindAsString(e.kind)+" ("+e.id+") at "+e.gridX+", "+e.gridY);if(e instanceof g){e.onBeforeStep(function(){t.unregisterEntityPosition(e)}),e.onStep(function(){e.isDying||(t.registerEntityDualPosition(e),e.forEachAttacker(function(t){t.isAdjacent(t.target)?t.lookAtTarget():t.follow(e)}))}),e.onStopPathing(function(n,r){if(!e.isDying){e.hasTarget()&&e.isAdjacent(e.target)&&e.lookAtTarget();if(e instanceof m){var i=e.destination.gridX,s=e.destination.gridY;if(t.map.isDoor(i,s)){var o=t.map.getDoorDestination(i,s);e.setGridPosition(o.x,o.y)}}e.forEachAttacker(function(n){!n.isAdjacentNonDiagonal(e)&&n.id!==t.playerId&&n.follow(e)}),t.unregisterEntityPosition(e),t.registerEntityPosition(e)}}),e.onRequestPath(function(n,r){var i=[e],s=function(e){i.push(e),e.forEachAttacker(function(e){i.push(e)})};return e.hasTarget()?s(e.target):e.previousTarget&&s(e.previousTarget),t.findPath(e,n,r,i)}),e.onDeath(function(){log.info(e.id+" is dead"),e instanceof d&&(t.deathpositions[e.id]={x:e.gridX,y:e.gridY}),e.isDying=!0,e.setSprite(t.sprites[e instanceof b.Rat?"rat":"death"]),e.animate("death",120,1,function(){log.info(e.id+" was removed"),t.removeEntity(e),t.removeFromRenderingGrid(e,e.gridX,e.gridY)}),e.forEachAttacker(function(e){e.disengage()}),t.player.target&&t.player.target.id===e.id&&t.player.disengage(),t.removeFromEntityGrid(e,e.gridX,e.gridY),t.removeFromPathingGrid(e.gridX,e.gridY),t.camera.isVisible(e)&&t.audioManager.playSound("kill"+Math.floor(Math.random()*2+1)),t.updateCursor()}),e.onHasMoved(function(e){t.assignBubbleTo(e)});if(e instanceof d&&s){var o=t.getEntityById(s);o&&t.createAttackLink(e,o)}}}}catch(u){log.error(u)}else log.debug("Character "+e.id+" already exists. Don't respawn.")}),t.client.onDespawnEntity(function(e){var n=t.getEntityById(e);n&&(log.info("Despawning "+Types.getKindAsString(n.kind)+" ("+n.id+")"),n.gridX===t.previousClickPosition.x&&n.gridY===t.previousClickPosition.y&&(t.previousClickPosition={}),n instanceof p?t.removeItem(n):n instanceof g?(n.forEachAttacker(function(e){e.canReachTarget()&&e.hit()}),n.die()):n instanceof y&&n.open(),n.clean())}),t.client.onItemBlink(function(e){var n=t.getEntityById(e);n&&n.blink(150)}),t.client.onEntityMove(function(e,n,r){var i=null;e!==t.playerId&&(i=t.getEntityById(e),i&&(t.player.isAttackedBy(i)&&t.tryUnlockingAchievement("COWARD"),i.disengage(),i.idle(),t.makeCharacterGoTo(i,n,r)))}),t.client.onEntityDestroy(function(e){var n=t.getEntityById(e);n&&(n instanceof p?t.removeItem(n):t.removeEntity(n),log.debug("Entity was destroyed: "+n.id))}),t.client.onPlayerMoveToItem(function(e,n){var r,i;e!==t.playerId&&(r=t.getEntityById(e),i=t.getEntityById(n),r&&i&&t.makeCharacterGoTo(r,i.gridX,i.gridY))}),t.client.onEntityAttack(function(e,n){var r=t.getEntityById(e),i=t.getEntityById(n);r&&i&&r.id!==t.playerId&&(log.debug(r.id+" attacks "+i.id),r&&i instanceof m&&i.id!==t.playerId&&i.target&&i.target.id===r.id&&r.getDistanceToEntity(i)<3?setTimeout(function(){t.createAttackLink(r,i)},200):t.createAttackLink(r,i))}),t.client.onPlayerDamageMob(function(e,n){var r=t.getEntityById(e);r&&n&&t.infoManager.addDamageInfo(n,r.x,r.y-15,"inflicted")}),t.client.onPlayerKillMob(function(e){var n=Types.getKindAsString(e);n==="skeleton2"&&(n="greater skeleton"),n==="eye"&&(n="evil eye"),n==="deathknight"&&(n="death knight"),n==="boss"?t.showNotification("You killed the skeleton king"):_.include(["a","e","i","o","u"],n[0])?t.showNotification("You killed an "+n):t.showNotification("You killed a "+n),t.storage.incrementTotalKills(),t.tryUnlockingAchievement("HUNTER"),e===Types.Entities.RAT&&(t.storage.incrementRatCount(),t.tryUnlockingAchievement("ANGRY_RATS"));if(e===Types.Entities.SKELETON||e===Types.Entities.SKELETON2)t.storage.incrementSkeletonCount(),t.tryUnlockingAchievement("SKULL_COLLECTOR");e===Types.Entities.BOSS&&t.tryUnlockingAchievement("HERO")}),t.client.onPlayerChangeHealth(function(e,n){var r=t.player,i,s;r&&!r.isDead&&!r.invincible&&(s=e<=r.hitPoints,i=e-r.hitPoints,r.hitPoints=e,r.hitPoints<=0&&r.die(),s?(r.hurt(),t.infoManager.addDamageInfo(i,r.x,r.y-15,"received"),t.audioManager.playSound("hurt"),t.storage.addDamage(-i),t.tryUnlockingAchievement("MEATSHIELD"),t.playerhurt_callback&&t.playerhurt_callback()):n||t.infoManager.addDamageInfo("+"+i,r.x,r.y-15,"healed"),t.updateBars())}),t.client.onPlayerChangeMaxHitPoints(function(e){t.player.maxHitPoints=e,t.player.hitPoints=e,t.updateBars()}),t.client.onPlayerEquipItem(function(e,n){var r=t.getEntityById(e),i=Types.getKindAsString(n);r&&(Types.isArmor(n)?r.setSprite(t.sprites[i]):Types.isWeapon(n)&&r.setWeaponName(i))}),t.client.onPlayerTeleport(function(e,n,r){var i=null,s;e!==t.playerId&&(i=t.getEntityById(e),i&&(s=i.orientation,t.makeCharacterTeleportTo(i,n,r),i.setOrientation(s),i.forEachAttacker(function(e){e.disengage(),e.idle(),e.stop()})))}),t.client.onDropItem(function(e,n){var r=t.getDeadMobPosition(n);r&&(t.addItem(e,r.x,r.y),t.updateCursor())}),t.client.onChatMessage(function(e,n){var r=t.getEntityById(e);t.createBubble(e,n),t.assignBubbleTo(r),t.audioManager.playSound("chat")}),t.client.onPopulationChange(function(e,n){t.nbplayers_callback&&t.nbplayers_callback(e,n)}),t.client.onDisconnected(function(e){t.player&&t.player.die(),t.disconnect_callback&&t.disconnect_callback(e)}),t.gamestart_callback(),t.hasNeverStarted&&(t.start(),e())})},createAttackLink:function(e,t){e.hasTarget()&&e.removeTarget(),e.engage(t),e.id!==this.playerId&&t.addAttacker(e)},sendHello:function(){this.client.sendHello(this.player)},getMouseGridPosition:function(){var e=this.mouse.x,t=this.mouse.y,n=this.renderer.camera,r=this.renderer.scale,i=this.renderer.tilesize,s=e%(i*r),o=t%(i*r),u=(e-s)/(i*r)+n.gridX,a=(t-o)/(i*r)+n.gridY;return{x:u,y:a}},makeCharacterGoTo:function(e,t,n){this.map.isOutOfBounds(t,n)||e.go(t,n)},makeCharacterTeleportTo:function(e,t,n){this.map.isOutOfBounds(t,n)?log.debug("Teleport out of bounds: "+t+", "+n):(this.unregisterEntityPosition(e),e.setGridPosition(t,n),this.registerEntityPosition(e),this.assignBubbleTo(e))},makePlayerGoTo:function(e,t){this.makeCharacterGoTo(this.player,e,t)},makePlayerGoToItem:function(e){e&&(this.player.isLootMoving=!0,this.makePlayerGoTo(e.gridX,e.gridY),this.client.sendLootMove(e,e.gridX,e.gridY))},makePlayerTalkTo:function(e){e&&(this.player.setTarget(e),this.player.follow(e))},makePlayerOpenChest:function(e){e&&(this.player.setTarget(e),this.player.follow(e))},makePlayerAttack:function(e){this.createAttackLink(this.player,e),this.client.sendAttack(e)},makeNpcTalk:function(e){var t;e&&(t=e.talk(),this.previousClickPosition={},t?(this.createBubble(e.id,t),this.assignBubbleTo(e),this.audioManager.playSound("npc")):(this.destroyBubble(e.id),this.audioManager.playSound("npc-end")),this.tryUnlockingAchievement("SMALL_TALK"),e.kind===Types.Entities.RICK&&this.tryUnlockingAchievement("RICKROLLD"))},forEachEntity:function(e){_.each(this.entities,function(t){e(t)})},forEachMob:function(e){_.each(this.entities,function(t){t instanceof d&&e(t)})},forEachVisibleEntityByDepth:function(e){var t=this,n=this.map;this.camera.forEachVisiblePosition(function(r,i){n.isOutOfBounds(r,i)||t.renderingGrid[i][r]&&_.each(t.renderingGrid[i][r],function(t){e(t)})},this.renderer.mobile?0:2)},forEachVisibleTileIndex:function(e,t){var n=this.map;this.camera.forEachVisiblePosition(function(t,r){n.isOutOfBounds(t,r)||e(n.GridPositionToTileIndex(t,r)-1)},t)},forEachVisibleTile:function(e,t){var n=this,r=this.map;r.isLoaded&&this.forEachVisibleTileIndex(function(t){_.isArray(r.data[t])?_.each(r.data[t],function(n){e(n-1,t)}):_.isNaN(r.data[t]-1)||e(r.data[t]-1,t)},t)},forEachAnimatedTile:function(e){this.animatedTiles&&_.each(this.animatedTiles,function(t){e(t)})},getEntityAt:function(e,t){if(this.map.isOutOfBounds(e,t)||!this.entityGrid)return null;var n=this.entityGrid[t][e],r=null;return _.size(n)>0?r=n[_.keys(n)[0]]:r=this.getItemAt(e,t),r},getMobAt:function(e,t){var n=this.getEntityAt(e,t);return n&&n instanceof d?n:null},getNpcAt:function(e,t){var n=this.getEntityAt(e,t);return n&&n instanceof v?n:null},getChestAt:function(e,t){var n=this.getEntityAt(e,t);return n&&n instanceof y?n:null},getItemAt:function(e,t){if(this.map.isOutOfBounds(e,t)||!this.itemGrid)return null;var n=this.itemGrid[t][e],r=null;return _.size(n)>0&&(_.each(n,function(e){Types.isExpendableItem(e.kind)&&(r=e)}),r||(r=n[_.keys(n)[0]])),r},isEntityAt:function(e,t){return!_.isNull(this.getEntityAt(e,t))},isMobAt:function(e,t){return!_.isNull(this.getMobAt(e,t))},isItemAt:function(e,t){return!_.isNull(this.getItemAt(e,t))},isNpcAt:function(e,t){return!_.isNull(this.getNpcAt(e,t))},isChestAt:function(e,t){return!_.isNull(this.getChestAt(e,t))},findPath:function(e,t,n,r){var i=this,s=this.pathingGrid;return path=[],isPlayer=e===this.player,this.map.isColliding(t,n)?path:(this.pathfinder&&e?(r&&_.each(r,function(e){i.pathfinder.ignoreEntity(e)}),path=this.pathfinder.findPath(s,e,t,n,!1),r&&this.pathfinder.clearIgnoreList()):log.error("Error while finding the path to "+t+", "+n+" for "+e.id),path)},togglePathingGrid:function(){this.debugPathing?this.debugPathing=!1:this.debugPathing=!0},toggleDebugInfo:function(){this.renderer&&this.renderer.isDebugInfoVisible?this.renderer.isDebugInfoVisible=!1:this.renderer.isDebugInfoVisible=!0},movecursor:function(){var e=this.getMouseGridPosition(),t=e.x,n=e.y;if(this.player&&!this.renderer.mobile&&!this.renderer.tablet){this.hoveringCollidingTile=this.map.isColliding(t,n),this.hoveringPlateauTile=this.player.isOnPlateau?!this.map.isPlateau(t,n):this.map.isPlateau(t,n),this.hoveringMob=this.isMobAt(t,n),this.hoveringItem=this.isItemAt(t,n),this.hoveringNpc=this.isNpcAt(t,n),this.hoveringChest=this.isChestAt(t,n);if(this.hoveringMob||this.hoveringNpc||this.hoveringChest){var r=this.getEntityAt(t,n);!r.isHighlighted&&this.renderer.supportsSilhouettes&&(this.lastHovered&&this.lastHovered.setHighlight(!1),this.lastHovered=r,r.setHighlight(!0))}else this.lastHovered&&(this.lastHovered.setHighlight(!1),this.lastHovered=null)}},click:function(){var e=this.getMouseGridPosition(),t;if(e.x===this.previousClickPosition.x&&e.y===this.previousClickPosition.y)return;this.previousClickPosition=e,this.started&&this.player&&!this.isZoning()&&!this.isZoningTile(this.player.nextGridX,this.player.nextGridY)&&!this.player.isDead&&!this.hoveringCollidingTile&&!this.hoveringPlateauTile&&(t=this.getEntityAt(e.x,e.y),t instanceof d?this.makePlayerAttack(t):t instanceof p?this.makePlayerGoToItem(t):t instanceof v?this.player.isAdjacentNonDiagonal(t)===!1?this.makePlayerTalkTo(t):this.makeNpcTalk(t):t instanceof y?this.makePlayerOpenChest(t):this.makePlayerGoTo(e.x,e.y))},isMobOnSameTile:function(e,t,n){var r=t||e.gridX,i=n||e.gridY,s=this.entityGrid[i][r],o=!1;return _.each(s,function(t){t instanceof d&&t.id!==e.id&&(o=!0)}),o},getFreeAdjacentNonDiagonalPosition:function(e){var t=this,n=null;return e.forEachAdjacentNonDiagonalPosition(function(e,r,i){!n&&!t.map.isColliding(e,r)&&!t.isMobAt(e,r)&&(n={x:e,y:r,o:i})}),n},tryMovingToADifferentTile:function(e){var t=e,n=e.target;if(t&&n&&n instanceof m){if(!n.isMoving()&&t.getDistanceToEntity(n)===0){var r;switch(n.orientation){case Types.Orientations.UP:r={x:n.gridX,y:n.gridY-1,o:n.orientation};break;case Types.Orientations.DOWN:r={x:n.gridX,y:n.gridY+1,o:n.orientation};break;case Types.Orientations.LEFT:r={x:n.gridX-1,y:n.gridY,o:n.orientation};break;case Types.Orientations.RIGHT:r={x:n.gridX+1,y:n.gridY,o:n.orientation}}if(r)return t.previousTarget=n,t.disengage(),t.idle(),this.makeCharacterGoTo(t,r.x,r.y),n.adjacentTiles[r.o]=!0,!0}if(!n.isMoving()&&t.isAdjacentNonDiagonal(n)&&this.isMobOnSameTile(t)){var r=this.getFreeAdjacentNonDiagonalPosition(n);if(r&&!n.adjacentTiles[r.o])return this.player.target&&t.id===this.player.target.id?!1:(t.previousTarget=n,t.disengage(),t.idle(),this.makeCharacterGoTo(t,r.x,r.y),n.adjacentTiles[r.o]=!0,!0)}}return!1},onCharacterUpdate:function(e){var t=this.currentTime,n=this;if(e.previousTarget&&!e.isMoving()&&e instanceof d){var r=e.previousTarget;if(this.getEntityById(r.id)){e.previousTarget=null,this.createAttackLink(e,r);return}}if(e.isAttacking()&&!e.previousTarget){var i=this.tryMovingToADifferentTile(e);e.canAttack(t)?i||(e.hasTarget()&&e.getOrientationTo(e.target)!==e.orientation&&e.lookAtTarget(),e.hit(),e.id===this.playerId&&this.client.sendHit(e.target),e instanceof m&&this.camera.isVisible(e)&&this.audioManager.playSound("hit"+Math.floor(Math.random()*2+1)),e.hasTarget()&&e.target.id===this.playerId&&this.player&&!this.player.invincible&&this.client.sendHurt(e)):e.hasTarget()&&e.isDiagonallyAdjacent(e.target)&&e.target instanceof m&&!e.target.isMoving()&&e.follow(e.target)}},isZoningTile:function(e,t){var n=this.camera;return e-=n.gridX,t-=n.gridY,e===0||t===0||e===n.gridW-1||t===n.gridH-1?!0:!1},getZoningOrientation:function(e,t){var n="",r=this.camera;return e-=r.gridX,t-=r.gridY,e===0?n=Types.Orientations.LEFT:t===0?n=Types.Orientations.UP:e===r.gridW-1?n=Types.Orientations.RIGHT:t===r.gridH-1&&(n=Types.Orientations.DOWN),n},startZoningFrom:function(e,t){this.zoningOrientation=this.getZoningOrientation(e,t);if(this.renderer.mobile||this.renderer.tablet){var n=this.zoningOrientation,r=this.camera,i=this.renderer.tilesize,e=r.x,t=r.y,s=(r.gridW-2)*i,o=(r.gridH-2)*i;if(n===Types.Orientations.LEFT||n===Types.Orientations.RIGHT)e=n===Types.Orientations.LEFT?r.x-s:r.x+s;else if(n===Types.Orientations.UP||n===Types.Orientations.DOWN)t=n===Types.Orientations.UP?r.y-o:r.y+o;r.setPosition(e,t),this.renderer.clearScreen(this.renderer.context),this.endZoning(),this.forEachVisibleEntityByDepth(function(e){e.setDirty()})}else this.currentZoning=new c;this.bubbleManager.clean(),this.client.sendZone()},enqueueZoningFrom:function(e,t){this.zoningQueue.push({x:e,y:t}),this.zoningQueue.length===1&&this.startZoningFrom(e,t)},endZoning:function(){this.currentZoning=null,this.resetZone(),this.zoningQueue.shift();if(this.zoningQueue.length>0){var e=this.zoningQueue[0];this.startZoningFrom(e.x,e.y)}},isZoning:function(){return!_.isNull(this.currentZoning)},resetZone:function(){this.bubbleManager.clean(),this.initAnimatedTiles(),this.renderer.renderStaticCanvases()},resetCamera:function(){this.camera.focusEntity(this.player),this.resetZone()},say:function(e){this.client.sendChat(e)},createBubble:function(e,t){this.bubbleManager.create(e,t,this.currentTime)},destroyBubble:function(e){this.bubbleManager.destroyBubble(e)},assignBubbleTo:function(e){var t=this.bubbleManager.getBubbleById(e.id);if(t){var n=this.renderer.scale,r=16*n,i=(e.x-this.camera.x)*n,s=parseInt(t.element.css("width"))+24,o=s/2-r/2,u,a;e instanceof v?u=0:n===2?this.renderer.mobile?u=0:u=15:u=12,a=(e.y-this.camera.y)*n-r*2-u,t.element.css("left",i-o+"px"),t.element.css("top",a+"px")}},restart:function(){log.debug("Beginning restart"),this.entities={},this.initEntityGrid(),this.initPathingGrid(),this.initRenderingGrid(),this.player=new u("player",this.username),this.initPlayer(),this.started=!0,this.client.enable(),this.sendHello(this.player),this.storage.incrementRevives(),(this.renderer.mobile||this.renderer.tablet)&&this.renderer.clearScreen(this.renderer.context),log.debug("Finished restart")},onGameStart:function(e){this.gamestart_callback=e},onDisconnect:function(e){this.disconnect_callback=e},onPlayerDeath:function(e){this.playerdeath_callback=e},onPlayerHealthChange:function(e){this.playerhp_callback=e},onPlayerHurt:function(e){this.playerhurt_callback=e},onPlayerEquipmentChange:function(e){this.equipment_callback=e},onNbPlayersChange:function(e){this.nbplayers_callback=e},onNotification:function(e){this.notification_callback=e},onPlayerInvincible:function(e){this.invincible_callback=e},resize:function(){var e=this.camera.x,t=this.camera.y,n=this.renderer.scale,r=this.renderer.getScaleFactor();this.renderer.rescale(r),this.camera=this.renderer.camera,this.camera.setPosition(e,t),this.renderer.renderStaticCanvases()},updateBars:function(){this.player&&this.playerhp_callback&&this.playerhp_callback(this.player.hitPoints,this.player.maxHitPoints)},getDeadMobPosition:function(e){var t;return e in this.deathpositions&&(t=this.deathpositions[e],delete this.deathpositions[e]),t},onAchievementUnlock:function(e){this.unlock_callback=e},tryUnlockingAchievement:function(e){var t=null;e in this.achievements&&(t=this.achievements[e],t.isCompleted()&&this.storage.unlockAchievement(t.id)&&this.unlock_callback&&(this.unlock_callback(t.id,t.name,t.desc),this.audioManager.playSound("achievement")))},showNotification:function(e){this.notification_callback&&this.notification_callback(e)},removeObsoleteEntities:function(){var e=_.size(this.obsoleteEntities),t=this;e>0&&(_.each(this.obsoleteEntities,function(e){e.id!=t.player.id&&t.removeEntity(e)}),log.debug("Removed "+e+" entities: "+_.pluck(_.reject(this.obsoleteEntities,function(e){return e===t.player.id}),"id")),this.obsoleteEntities=null)},updateCursor:function(){this.movecursor(),this.updateCursorLogic()},updatePlateauMode:function(){this.map.isPlateau(this.player.gridX,this.player.gridY)?this.player.isOnPlateau=!0:this.player.isOnPlateau=!1},updatePlayerCheckpoint:function(){var e=this.map.getCurrentCheckpoint(this.player);if(e){var t=this.player.lastCheckpoint;if(!t||t&&t.id!==e.id)this.player.lastCheckpoint=e,this.client.sendCheck(e.id)}},checkUndergroundAchievement:function(){var e=this.audioManager.getSurroundingMusic(this.player);e&&e.name==="cave"&&this.tryUnlockingAchievement("UNDERGROUND")},forEachEntityAround:function(e,t,n,r){for(var i=e-n,s=e+n;i<=s;i+=1)for(var o=t-n,u=t+n;o<=u;o+=1)this.map.isOutOfBounds(i,o)||_.each(this.renderingGrid[o][i],function(e){r(e)})},checkOtherDirtyRects:function(e,t,n,r){var i=this.renderer;this.forEachEntityAround(n,r,2,function(n){if(t&&t.id&&n.id===t.id)return;if(!n.isDirty){var r=i.getEntityBoundingRect(n);i.isIntersecting(e,r)&&n.setDirty()}}),t&&!t.hasOwnProperty("index")&&this.forEachAnimatedTile(function(t){if(!t.isDirty){var n=i.getTileBoundingRect(t);i.isIntersecting(e,n)&&(t.isDirty=!0)}});if(!this.drawTarget&&this.selectedCellVisible){var s=i.getTargetBoundingRect();i.isIntersecting(e,s)&&(this.drawTarget=!0,this.renderer.targetRect=s)}}});return S}); \ No newline at end of file diff --git a/public_html/browserquest/js/gameclient.js b/public_html/browserquest/js/gameclient.js new file mode 100644 index 0000000..8084f79 --- /dev/null +++ b/public_html/browserquest/js/gameclient.js @@ -0,0 +1 @@ +define(["player","entityfactory","lib/bison"],function(e,t,n){var r=Class.extend({init:function(e,t){this.connection=null,this.host=e,this.port=t,this.connected_callback=null,this.spawn_callback=null,this.movement_callback=null,this.handlers=[],this.handlers[Types.Messages.WELCOME]=this.receiveWelcome,this.handlers[Types.Messages.MOVE]=this.receiveMove,this.handlers[Types.Messages.LOOTMOVE]=this.receiveLootMove,this.handlers[Types.Messages.ATTACK]=this.receiveAttack,this.handlers[Types.Messages.SPAWN]=this.receiveSpawn,this.handlers[Types.Messages.DESPAWN]=this.receiveDespawn,this.handlers[Types.Messages.SPAWN_BATCH]=this.receiveSpawnBatch,this.handlers[Types.Messages.HEALTH]=this.receiveHealth,this.handlers[Types.Messages.CHAT]=this.receiveChat,this.handlers[Types.Messages.EQUIP]=this.receiveEquipItem,this.handlers[Types.Messages.DROP]=this.receiveDrop,this.handlers[Types.Messages.TELEPORT]=this.receiveTeleport,this.handlers[Types.Messages.DAMAGE]=this.receiveDamage,this.handlers[Types.Messages.POPULATION]=this.receivePopulation,this.handlers[Types.Messages.LIST]=this.receiveList,this.handlers[Types.Messages.DESTROY]=this.receiveDestroy,this.handlers[Types.Messages.KILL]=this.receiveKill,this.handlers[Types.Messages.HP]=this.receiveHitPoints,this.handlers[Types.Messages.BLINK]=this.receiveBlink,this.useBison=!1,this.enable()},enable:function(){this.isListening=!0},disable:function(){this.isListening=!1},connect:function(e){var t="http://"+this.host+":"+this.port+"/",n=this;this.connection=io(t,{"force new connection":!0}),this.connection.on("connection",function(e){log.info("Connected to server "+t)}),e?(this.connection.emit("dispatch",!0),this.connection.on("dispatched",function(e){console.log("Dispatched: "),console.log(e),e.status==="OK"?n.dispatched_callback(e.host,e.port):e.status==="FULL"?console.log("BrowserQuest is currently at maximum player population. Please retry later."):console.log("Unknown error while connecting to BrowserQuest.")})):(this.connection.on("message",function(e){if(e==="go"){n.connected_callback&&n.connected_callback();return}if(e==="timeout"){n.isTimeout=!0;return}n.receiveMessage(e)}),this.connection.on("disconnect",function(){log.debug("Connection closed"),$("#container").addClass("error"),n.disconnected_callback&&(n.isTimeout?n.disconnected_callback("You have been disconnected for being inactive for too long"):n.disconnected_callback("The connection to BrowserQuest has been lost"))}))},sendMessage:function(e){this.connection.connected&&this.connection.emit("message",e)},receiveMessage:function(e){this.isListening&&(log.debug("data: "+e),e instanceof Array&&(e[0]instanceof Array?this.receiveActionBatch(e):this.receiveAction(e)))},receiveAction:function(e){var t=e[0];this.handlers[t]&&_.isFunction(this.handlers[t])?this.handlers[t].call(this,e):log.error("Unknown action : "+t)},receiveActionBatch:function(e){var t=this;_.each(e,function(e){t.receiveAction(e)})},receiveWelcome:function(e){var t=e[1],n=e[2],r=e[3],i=e[4],s=e[5];this.welcome_callback&&this.welcome_callback(t,n,r,i,s)},receiveMove:function(e){var t=e[1],n=e[2],r=e[3];this.move_callback&&this.move_callback(t,n,r)},receiveLootMove:function(e){var t=e[1],n=e[2];this.lootmove_callback&&this.lootmove_callback(t,n)},receiveAttack:function(e){var t=e[1],n=e[2];this.attack_callback&&this.attack_callback(t,n)},receiveSpawn:function(n){var r=n[1],i=n[2],s=n[3],o=n[4];if(Types.isItem(i)){var u=t.createEntity(i,r);this.spawn_item_callback&&this.spawn_item_callback(u,s,o)}else if(Types.isChest(i)){var u=t.createEntity(i,r);this.spawn_chest_callback&&this.spawn_chest_callback(u,s,o)}else{var a,f,l,c,h;Types.isPlayer(i)?(a=n[5],f=n[6],h=n[7],c=n[8],n.length>9&&(l=n[9])):Types.isMob(i)&&(f=n[5],n.length>6&&(l=n[6]));var p=t.createEntity(i,r,a);p instanceof e&&(p.weaponName=Types.getKindAsString(c),p.spriteName=Types.getKindAsString(h)),this.spawn_character_callback&&this.spawn_character_callback(p,s,o,f,l)}},receiveDespawn:function(e){var t=e[1];this.despawn_callback&&this.despawn_callback(t)},receiveHealth:function(e){var t=e[1],n=!1;e[2]&&(n=!0),this.health_callback&&this.health_callback(t,n)},receiveChat:function(e){var t=e[1],n=e[2];this.chat_callback&&this.chat_callback(t,n)},receiveEquipItem:function(e){var t=e[1],n=e[2];this.equip_callback&&this.equip_callback(t,n)},receiveDrop:function(e){var n=e[1],r=e[2],i=e[3],s=t.createEntity(i,r);s.wasDropped=!0,s.playersInvolved=e[4],this.drop_callback&&this.drop_callback(s,n)},receiveTeleport:function(e){var t=e[1],n=e[2],r=e[3];this.teleport_callback&&this.teleport_callback(t,n,r)},receiveDamage:function(e){var t=e[1],n=e[2];this.dmg_callback&&this.dmg_callback(t,n)},receivePopulation:function(e){var t=e[1],n=e[2];this.population_callback&&this.population_callback(t,n)},receiveKill:function(e){var t=e[1];this.kill_callback&&this.kill_callback(t)},receiveList:function(e){e.shift(),this.list_callback&&this.list_callback(e)},receiveDestroy:function(e){var t=e[1];this.destroy_callback&&this.destroy_callback(t)},receiveHitPoints:function(e){var t=e[1];this.hp_callback&&this.hp_callback(t)},receiveBlink:function(e){var t=e[1];this.blink_callback&&this.blink_callback(t)},onDispatched:function(e){this.dispatched_callback=e},onConnected:function(e){this.connected_callback=e},onDisconnected:function(e){this.disconnected_callback=e},onWelcome:function(e){this.welcome_callback=e},onSpawnCharacter:function(e){this.spawn_character_callback=e},onSpawnItem:function(e){this.spawn_item_callback=e},onSpawnChest:function(e){this.spawn_chest_callback=e},onDespawnEntity:function(e){this.despawn_callback=e},onEntityMove:function(e){this.move_callback=e},onEntityAttack:function(e){this.attack_callback=e},onPlayerChangeHealth:function(e){this.health_callback=e},onPlayerEquipItem:function(e){this.equip_callback=e},onPlayerMoveToItem:function(e){this.lootmove_callback=e},onPlayerTeleport:function(e){this.teleport_callback=e},onChatMessage:function(e){this.chat_callback=e},onDropItem:function(e){this.drop_callback=e},onPlayerDamageMob:function(e){this.dmg_callback=e},onPlayerKillMob:function(e){this.kill_callback=e},onPopulationChange:function(e){this.population_callback=e},onEntityList:function(e){this.list_callback=e},onEntityDestroy:function(e){this.destroy_callback=e},onPlayerChangeMaxHitPoints:function(e){this.hp_callback=e},onItemBlink:function(e){this.blink_callback=e},sendHello:function(e){this.sendMessage([Types.Messages.HELLO,e.name,Types.getKindFromString(e.getSpriteName()),Types.getKindFromString(e.getWeaponName())])},sendMove:function(e,t){this.sendMessage([Types.Messages.MOVE,e,t])},sendLootMove:function(e,t,n){this.sendMessage([Types.Messages.LOOTMOVE,t,n,e.id])},sendAggro:function(e){this.sendMessage([Types.Messages.AGGRO,e.id])},sendAttack:function(e){this.sendMessage([Types.Messages.ATTACK,e.id])},sendHit:function(e){this.sendMessage([Types.Messages.HIT,e.id])},sendHurt:function(e){this.sendMessage([Types.Messages.HURT,e.id])},sendChat:function(e){this.sendMessage([Types.Messages.CHAT,e])},sendLoot:function(e){this.sendMessage([Types.Messages.LOOT,e.id])},sendTeleport:function(e,t){this.sendMessage([Types.Messages.TELEPORT,e,t])},sendWho:function(e){e.unshift(Types.Messages.WHO),this.sendMessage(e)},sendZone:function(){this.sendMessage([Types.Messages.ZONE])},sendOpen:function(e){this.sendMessage([Types.Messages.OPEN,e.id])},sendCheck:function(e){this.sendMessage([Types.Messages.CHECK,e])}});return r}); \ No newline at end of file diff --git a/public_html/browserquest/js/home.js b/public_html/browserquest/js/home.js new file mode 100644 index 0000000..62d0a45 --- /dev/null +++ b/public_html/browserquest/js/home.js @@ -0,0 +1,51 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Domain Public by Eric Wendelin http://eriwen.com/ (2008) +// Luke Smith http://lucassmith.name/ (2008) +// Loic Dachary (2008) +// Johan Euphrosine (2008) +// Øyvind Sean Kinsey http://kinsey.no/blog (2010) +// +// Information and discussions +// http://jspoker.pokersource.info/skin/test-printstacktrace.html +// http://eriwen.com/javascript/js-stack-trace/ +// http://eriwen.com/javascript/stacktrace-update/ +// http://pastie.org/253058 +// +// guessFunctionNameFromLines comes from firebug +// +// Software License Agreement (BSD License) +// +// Copyright (c) 2007, Parakey Inc. +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the +// following disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the +// following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// * Neither the name of Parakey Inc. nor the names of its +// contributors may be used to endorse or promote products +// derived from this software without specific prior +// written permission of Parakey Inc. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +function printStackTrace(e){var t=e&&e.e?e.e:null,n=e?!!e.guess:!0,r=new printStackTrace.implementation,i=r.run(t);return n?r.guessFunctions(i):i}var initializing=!1,fnTest=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;Class=function(){},Class.extend=function(e){var t=this.prototype;initializing=!0;var n=new this;initializing=!1;for(var r in e)n[r]=typeof e[r]=="function"&&typeof t[r]=="function"&&fnTest.test(e[r])?function(e,n){return function(){var r=this._super;this._super=t[e];var i=n.apply(this,arguments);return this._super=r,i}}(r,e[r]):e[r];return Class=function(){!initializing&&this.init&&this.init.apply(this,arguments)},Class.prototype=n,Class.constructor=Class,Class.extend=arguments.callee,Class},typeof exports!="undefined"&&(exports.Class=Class),define("lib/class",function(){}),function(){function e(e){function t(t,n,r,i,s,o){for(;s>=0&&o>s;s+=e){var u=i?i[s]:s;r=n(r,t[u],u,t)}return r}return function(n,r,i,s){r=b(r,s,4);var o=!C(n)&&y.keys(n),u=(o||n).length,a=e>0?0:u-1;return arguments.length<3&&(i=n[o?o[a]:a],a+=e),t(n,r,i,o,a,u)}}function t(e){return function(t,n,r){n=w(n,r);for(var i=N(t),s=e>0?0:i-1;s>=0&&i>s;s+=e)if(n(t[s],s,t))return s;return-1}}function n(e,t,n){return function(r,i,s){var o=0,u=N(r);if("number"==typeof s)e>0?o=s>=0?s:Math.max(s+u,o):u=s>=0?Math.min(s+1,u):s+u+1;else if(n&&s&&u)return s=n(r,i),r[s]===i?s:-1;if(i!==i)return s=t(l.call(r,o,u),y.isNaN),s>=0?s+o:-1;for(s=e>0?o:u-1;s>=0&&u>s;s+=e)if(r[s]===i)return s;return-1}}function r(e,t){var n=M.length,r=e.constructor,i=y.isFunction(r)&&r.prototype||u,s="constructor";for(y.has(e,s)&&!y.contains(t,s)&&t.push(s);n--;)s=M[n],s in e&&e[s]!==i[s]&&!y.contains(t,s)&&t.push(s)}var i=this,s=i._,o=Array.prototype,u=Object.prototype,a=Function.prototype,f=o.push,l=o.slice,c=u.toString,h=u.hasOwnProperty,p=Array.isArray,d=Object.keys,v=a.bind,m=Object.create,g=function(){},y=function(e){return e instanceof y?e:this instanceof y?void (this._wrapped=e):new y(e)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=y),exports._=y):i._=y,y.VERSION="1.8.3";var b=function(e,t,n){if(t===void 0)return e;switch(null==n?3:n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)};case 4:return function(n,r,i,s){return e.call(t,n,r,i,s)}}return function(){return e.apply(t,arguments)}},w=function(e,t,n){return null==e?y.identity:y.isFunction(e)?b(e,t,n):y.isObject(e)?y.matcher(e):y.property(e)};y.iteratee=function(e,t){return w(e,t,1/0)};var E=function(e,t){return function(n){var r=arguments.length;if(2>r||null==n)return n;for(var i=1;r>i;i++)for(var s=arguments[i],o=e(s),u=o.length,a=0;u>a;a++){var f=o[a];t&&n[f]!==void 0||(n[f]=s[f])}return n}},S=function(e){if(!y.isObject(e))return{};if(m)return m(e);g.prototype=e;var t=new g;return g.prototype=null,t},x=function(e){return function(t){return null==t?void 0:t[e]}},T=Math.pow(2,53)-1,N=x("length"),C=function(e){var t=N(e);return"number"==typeof t&&t>=0&&T>=t};y.each=y.forEach=function(e,t,n){t=b(t,n);var r,i;if(C(e))for(r=0,i=e.length;i>r;r++)t(e[r],r,e);else{var s=y.keys(e);for(r=0,i=s.length;i>r;r++)t(e[s[r]],s[r],e)}return e},y.map=y.collect=function(e,t,n){t=w(t,n);for(var r=!C(e)&&y.keys(e),i=(r||e).length,s=Array(i),o=0;i>o;o++){var u=r?r[o]:o;s[o]=t(e[u],u,e)}return s},y.reduce=y.foldl=y.inject=e(1),y.reduceRight=y.foldr=e(-1),y.find=y.detect=function(e,t,n){var r;return r=C(e)?y.findIndex(e,t,n):y.findKey(e,t,n),r!==void 0&&r!==-1?e[r]:void 0},y.filter=y.select=function(e,t,n){var r=[];return t=w(t,n),y.each(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r},y.reject=function(e,t,n){return y.filter(e,y.negate(w(t)),n)},y.every=y.all=function(e,t,n){t=w(t,n);for(var r=!C(e)&&y.keys(e),i=(r||e).length,s=0;i>s;s++){var o=r?r[s]:s;if(!t(e[o],o,e))return!1}return!0},y.some=y.any=function(e,t,n){t=w(t,n);for(var r=!C(e)&&y.keys(e),i=(r||e).length,s=0;i>s;s++){var o=r?r[s]:s;if(t(e[o],o,e))return!0}return!1},y.contains=y.includes=y.include=function(e,t,n,r){return C(e)||(e=y.values(e)),("number"!=typeof n||r)&&(n=0),y.indexOf(e,t,n)>=0},y.invoke=function(e,t){var n=l.call(arguments,2),r=y.isFunction(t);return y.map(e,function(e){var i=r?t:e[t];return null==i?i:i.apply(e,n)})},y.pluck=function(e,t){return y.map(e,y.property(t))},y.where=function(e,t){return y.filter(e,y.matcher(t))},y.findWhere=function(e,t){return y.find(e,y.matcher(t))},y.max=function(e,t,n){var r,i,s=-1/0,o=-1/0;if(null==t&&null!=e){e=C(e)?e:y.values(e);for(var u=0,a=e.length;a>u;u++)r=e[u],r>s&&(s=r)}else t=w(t,n),y.each(e,function(e,n,r){i=t(e,n,r),(i>o||i===-1/0&&s===-1/0)&&(s=e,o=i)});return s},y.min=function(e,t,n){var r,i,s=1/0,o=1/0;if(null==t&&null!=e){e=C(e)?e:y.values(e);for(var u=0,a=e.length;a>u;u++)r=e[u],s>r&&(s=r)}else t=w(t,n),y.each(e,function(e,n,r){i=t(e,n,r),(o>i||1/0===i&&1/0===s)&&(s=e,o=i)});return s},y.shuffle=function(e){for(var t,n=C(e)?e:y.values(e),r=n.length,i=Array(r),s=0;r>s;s++)t=y.random(0,s),t!==s&&(i[s]=i[t]),i[t]=n[s];return i},y.sample=function(e,t,n){return null==t||n?(C(e)||(e=y.values(e)),e[y.random(e.length-1)]):y.shuffle(e).slice(0,Math.max(0,t))},y.sortBy=function(e,t,n){return t=w(t,n),y.pluck(y.map(e,function(e,n,r){return{value:e,index:n,criteria:t(e,n,r)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(r>n||r===void 0)return-1}return e.index-t.index}),"value")};var k=function(e){return function(t,n,r){var i={};return n=w(n,r),y.each(t,function(r,s){var o=n(r,s,t);e(i,r,o)}),i}};y.groupBy=k(function(e,t,n){y.has(e,n)?e[n].push(t):e[n]=[t]}),y.indexBy=k(function(e,t,n){e[n]=t}),y.countBy=k(function(e,t,n){y.has(e,n)?e[n]++:e[n]=1}),y.toArray=function(e){return e?y.isArray(e)?l.call(e):C(e)?y.map(e,y.identity):y.values(e):[]},y.size=function(e){return null==e?0:C(e)?e.length:y.keys(e).length},y.partition=function(e,t,n){t=w(t,n);var r=[],i=[];return y.each(e,function(e,n,s){(t(e,n,s)?r:i).push(e)}),[r,i]},y.first=y.head=y.take=function(e,t,n){return null==e?void 0:null==t||n?e[0]:y.initial(e,e.length-t)},y.initial=function(e,t,n){return l.call(e,0,Math.max(0,e.length-(null==t||n?1:t)))},y.last=function(e,t,n){return null==e?void 0:null==t||n?e[e.length-1]:y.rest(e,Math.max(0,e.length-t))},y.rest=y.tail=y.drop=function(e,t,n){return l.call(e,null==t||n?1:t)},y.compact=function(e){return y.filter(e,y.identity)};var L=function(e,t,n,r){for(var i=[],s=0,o=r||0,u=N(e);u>o;o++){var a=e[o];if(C(a)&&(y.isArray(a)||y.isArguments(a))){t||(a=L(a,t,n));var f=0,l=a.length;for(i.length+=l;l>f;)i[s++]=a[f++]}else n||(i[s++]=a)}return i};y.flatten=function(e,t){return L(e,t,!1)},y.without=function(e){return y.difference(e,l.call(arguments,1))},y.uniq=y.unique=function(e,t,n,r){y.isBoolean(t)||(r=n,n=t,t=!1),null!=n&&(n=w(n,r));for(var i=[],s=[],o=0,u=N(e);u>o;o++){var a=e[o],f=n?n(a,o,e):a;t?(o&&s===f||i.push(a),s=f):n?y.contains(s,f)||(s.push(f),i.push(a)):y.contains(i,a)||i.push(a)}return i},y.union=function(){return y.uniq(L(arguments,!0,!0))},y.intersection=function(e){for(var t=[],n=arguments.length,r=0,i=N(e);i>r;r++){var s=e[r];if(!y.contains(t,s)){for(var o=1;n>o&&y.contains(arguments[o],s);o++);o===n&&t.push(s)}}return t},y.difference=function(e){var t=L(arguments,!0,!0,1);return y.filter(e,function(e){return!y.contains(t,e)})},y.zip=function(){return y.unzip(arguments)},y.unzip=function(e){for(var t=e&&y.max(e,N).length||0,n=Array(t),r=0;t>r;r++)n[r]=y.pluck(e,r);return n},y.object=function(e,t){for(var n={},r=0,i=N(e);i>r;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},y.findIndex=t(1),y.findLastIndex=t(-1),y.sortedIndex=function(e,t,n,r){n=w(n,r,1);for(var i=n(t),s=0,o=N(e);o>s;){var u=Math.floor((s+o)/2);n(e[u])s;s++,e+=n)i[s]=e;return i};var A=function(e,t,n,r,i){if(r instanceof t){var s=S(e.prototype),o=e.apply(s,i);return y.isObject(o)?o:s}return e.apply(n,i)};y.bind=function(e,t){if(v&&e.bind===v)return v.apply(e,l.call(arguments,1));if(!y.isFunction(e))throw new TypeError("Bind must be called on a function");var n=l.call(arguments,2),r=function(){return A(e,r,t,this,n.concat(l.call(arguments)))};return r},y.partial=function(e){var t=l.call(arguments,1),n=function(){for(var r=0,i=t.length,s=Array(i),o=0;i>o;o++)s[o]=t[o]===y?arguments[r++]:t[o];for(;r=r)throw new Error("bindAll must be passed function names");for(t=1;r>t;t++)n=arguments[t],e[n]=y.bind(e[n],e);return e},y.memoize=function(e,t){var n=function(r){var i=n.cache,s=""+(t?t.apply(this,arguments):r);return y.has(i,s)||(i[s]=e.apply(this,arguments)),i[s]};return n.cache={},n},y.delay=function(e,t){var n=l.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},y.defer=y.partial(y.delay,y,1),y.throttle=function(e,t,n){var r,i,s,o=null,u=0;n||(n={});var a=function(){u=n.leading===!1?0:y.now(),o=null,s=e.apply(r,i),o||(r=i=null)};return function(){var f=y.now();u||n.leading!==!1||(u=f);var l=t-(f-u);return r=this,i=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),u=f,s=e.apply(r,i),o||(r=i=null)):o||n.trailing===!1||(o=setTimeout(a,l)),s}},y.debounce=function(e,t,n){var r,i,s,o,u,a=function(){var f=y.now()-o;t>f&&f>=0?r=setTimeout(a,t-f):(r=null,n||(u=e.apply(s,i),r||(s=i=null)))};return function(){s=this,i=arguments,o=y.now();var f=n&&!r;return r||(r=setTimeout(a,t)),f&&(u=e.apply(s,i),s=i=null),u}},y.wrap=function(e,t){return y.partial(t,e)},y.negate=function(e){return function(){return!e.apply(this,arguments)}},y.compose=function(){var e=arguments,t=e.length-1;return function(){for(var n=t,r=e[t].apply(this,arguments);n--;)r=e[n].call(this,r);return r}},y.after=function(e,t){return function(){return--e<1?t.apply(this,arguments):void 0}},y.before=function(e,t){var n;return function(){return--e>0&&(n=t.apply(this,arguments)),1>=e&&(t=null),n}},y.once=y.partial(y.before,2);var O=!{toString:null}.propertyIsEnumerable("toString"),M=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];y.keys=function(e){if(!y.isObject(e))return[];if(d)return d(e);var t=[];for(var n in e)y.has(e,n)&&t.push(n);return O&&r(e,t),t},y.allKeys=function(e){if(!y.isObject(e))return[];var t=[];for(var n in e)t.push(n);return O&&r(e,t),t},y.values=function(e){for(var t=y.keys(e),n=t.length,r=Array(n),i=0;n>i;i++)r[i]=e[t[i]];return r},y.mapObject=function(e,t,n){t=w(t,n);for(var r,i=y.keys(e),s=i.length,o={},u=0;s>u;u++)r=i[u],o[r]=t(e[r],r,e);return o},y.pairs=function(e){for(var t=y.keys(e),n=t.length,r=Array(n),i=0;n>i;i++)r[i]=[t[i],e[t[i]]];return r},y.invert=function(e){for(var t={},n=y.keys(e),r=0,i=n.length;i>r;r++)t[e[n[r]]]=n[r];return t},y.functions=y.methods=function(e){var t=[];for(var n in e)y.isFunction(e[n])&&t.push(n);return t.sort()},y.extend=E(y.allKeys),y.extendOwn=y.assign=E(y.keys),y.findKey=function(e,t,n){t=w(t,n);for(var r,i=y.keys(e),s=0,o=i.length;o>s;s++)if(r=i[s],t(e[r],r,e))return r},y.pick=function(e,t,n){var r,i,s={},o=e;if(null==o)return s;y.isFunction(t)?(i=y.allKeys(o),r=b(t,n)):(i=L(arguments,!1,!1,1),r=function(e,t,n){return t in n},o=Object(o));for(var u=0,a=i.length;a>u;u++){var f=i[u],l=o[f];r(l,f,o)&&(s[f]=l)}return s},y.omit=function(e,t,n){if(y.isFunction(t))t=y.negate(t);else{var r=y.map(L(arguments,!1,!1,1),String);t=function(e,t){return!y.contains(r,t)}}return y.pick(e,t,n)},y.defaults=E(y.allKeys,!0),y.create=function(e,t){var n=S(e);return t&&y.extendOwn(n,t),n},y.clone=function(e){return y.isObject(e)?y.isArray(e)?e.slice():y.extend({},e):e},y.tap=function(e,t){return t(e),e},y.isMatch=function(e,t){var n=y.keys(t),r=n.length;if(null==e)return!r;for(var i=Object(e),s=0;r>s;s++){var o=n[s];if(t[o]!==i[o]||!(o in i))return!1}return!0};var _=function(e,t,n,r){if(e===t)return 0!==e||1/e===1/t;if(null==e||null==t)return e===t;e instanceof y&&(e=e._wrapped),t instanceof y&&(t=t._wrapped);var i=c.call(e);if(i!==c.call(t))return!1;switch(i){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!==+e?+t!==+t:0===+e?1/+e===1/t:+e===+t;case"[object Date]":case"[object Boolean]":return+e===+t}var s="[object Array]"===i;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var o=e.constructor,u=t.constructor;if(o!==u&&!(y.isFunction(o)&&o instanceof o&&y.isFunction(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1}n=n||[],r=r||[];for(var a=n.length;a--;)if(n[a]===e)return r[a]===t;if(n.push(e),r.push(t),s){if(a=e.length,a!==t.length)return!1;for(;a--;)if(!_(e[a],t[a],n,r))return!1}else{var f,l=y.keys(e);if(a=l.length,y.keys(t).length!==a)return!1;for(;a--;)if(f=l[a],!y.has(t,f)||!_(e[f],t[f],n,r))return!1}return n.pop(),r.pop(),!0};y.isEqual=function(e,t){return _(e,t)},y.isEmpty=function(e){return null==e?!0:C(e)&&(y.isArray(e)||y.isString(e)||y.isArguments(e))?0===e.length:0===y.keys(e).length},y.isElement=function(e){return!!e&&1===e.nodeType},y.isArray=p||function(e){return"[object Array]"===c.call(e)},y.isObject=function(e){var t=typeof e;return"function"===t||"object"===t&&!!e},y.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(e){y["is"+e]=function(t){return c.call(t)==="[object "+e+"]"}}),y.isArguments(arguments)||(y.isArguments=function(e){return y.has(e,"callee")}),"function"!=typeof /./&&"object"!=typeof Int8Array&&(y.isFunction=function(e){return"function"==typeof e||!1}),y.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},y.isNaN=function(e){return y.isNumber(e)&&e!==+e},y.isBoolean=function(e){return e===!0||e===!1||"[object Boolean]"===c.call(e)},y.isNull=function(e){return null===e},y.isUndefined=function(e){return e===void 0},y.has=function(e,t){return null!=e&&h.call(e,t)},y.noConflict=function(){return i._=s,this},y.identity=function(e){return e},y.constant=function(e){return function(){return e}},y.noop=function(){},y.property=x,y.propertyOf=function(e){return null==e?function(){}:function(t){return e[t]}},y.matcher=y.matches=function(e){return e=y.extendOwn({},e),function(t){return y.isMatch(t,e)}},y.times=function(e,t,n){var r=Array(Math.max(0,e));t=b(t,n,1);for(var i=0;e>i;i++)r[i]=t(i);return r},y.random=function(e,t){return null==t&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))},y.now=Date.now||function(){return(new Date).getTime()};var D={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},P=y.invert(D),H=function(e){var t=function(t){return e[t]},n="(?:"+y.keys(e).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(e){return e=null==e?"":""+e,r.test(e)?e.replace(i,t):e}};y.escape=H(D),y.unescape=H(P),y.result=function(e,t,n){var r=null==e?void 0:e[t];return r===void 0&&(r=n),y.isFunction(r)?r.call(e):r};var B=0;y.uniqueId=function(e){var t=++B+"";return e?e+t:t},y.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var j=/(.)^/,F={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},I=/\\|'|\r|\n|\u2028|\u2029/g,q=function(e){return"\\"+F[e]};y.template=function(e,t,n){!t&&n&&(t=n),t=y.defaults({},t,y.templateSettings);var r=RegExp([(t.escape||j).source,(t.interpolate||j).source,(t.evaluate||j).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){return s+=e.slice(i,u).replace(I,q),i=u+t.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),t}),s+="';\n",t.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(t.variable||"obj","_",s)}catch(u){throw u.source=s,u}var a=function(e){return o.call(this,e,y)},f=t.variable||"obj";return a.source="function("+f+"){\n"+s+"}",a},y.chain=function(e){var t=y(e);return t._chain=!0,t};var R=function(e,t){return e._chain?y(t).chain():t};y.mixin=function(e){y.each(y.functions(e),function(t){var n=y[t]=e[t];y.prototype[t]=function(){var e=[this._wrapped];return f.apply(e,arguments),R(this,n.apply(y,e))}})},y.mixin(y),y.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=o[e];y.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==e&&"splice"!==e||0!==n.length||delete n[0],R(this,n)}}),y.each(["concat","join","slice"],function(e){var t=o[e];y.prototype[e]=function(){return R(this,t.apply(this._wrapped,arguments))}}),y.prototype.value=function(){return this._wrapped},y.prototype.valueOf=y.prototype.toJSON=y.prototype.value,y.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return y})}.call(this),define("lib/underscore.min",function(){}),printStackTrace.implementation=function(){},printStackTrace.implementation.prototype={run:function(e){var t=this._mode||this.mode();return t==="other"?this.other(arguments.callee):(e=e||function(){try{var e=__undef__<<1}catch(t){return t}}(),this[t](e))},mode:function(){try{var e=__undef__<<1}catch(t){if(t.arguments)return this._mode="chrome";if(window.opera&&t.stacktrace)return this._mode="opera10";if(t.stack)return this._mode="firefox";if(window.opera&&!("stacktrace"in t))return this._mode="opera"}return this._mode="other"},instrumentFunction:function(e,t,n){e=e||window,e["_old"+t]=e[t],e[t]=function(){return n.call(this,printStackTrace()),e["_old"+t].apply(this,arguments)},e[t]._instrumented=!0},deinstrumentFunction:function(e,t){e[t].constructor===Function&&e[t]._instrumented&&e["_old"+t].constructor===Function&&(e[t]=e["_old"+t])},chrome:function(e){return e.stack.replace(/^[^\n]*\n/,"").replace(/^[^\n]*\n/,"").replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.\s*\(/gm,"{anonymous}()@").split("\n")},firefox:function(e){return e.stack.replace(/^[^\n]*\n/,"").replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n")},opera10:function(e){var t=e.stacktrace,n=t.split("\n"),r="{anonymous}",i=/.*line (\d+), column (\d+) in ((/g,r),n[o++]=f+"@"+a}return n.splice(o,n.length-o),n},opera:function(e){var t=e.message.split("\n"),n="{anonymous}",r=/Line\s+(\d+).*script\s+(http\S+)(?:.*in\s+function\s+(\S+))?/i,i,s,o;for(i=4,s=0,o=t.length;ithis.speed},update:function(e){this.isTimeToAnimate(e)&&(this.lastTime=e,this.tick())},tick:function(){this.y-=1,this.opacity-=.07,this.opacity<0&&this.destroy()},onDestroy:function(e){this.destroy_callback=e},destroy:function(){this.destroy_callback&&this.destroy_callback(this.id)}});return e}); \ No newline at end of file diff --git a/public_html/browserquest/js/item.js b/public_html/browserquest/js/item.js new file mode 100644 index 0000000..6d750ec --- /dev/null +++ b/public_html/browserquest/js/item.js @@ -0,0 +1 @@ +define(["entity"],function(e){var t=e.extend({init:function(e,t,n){this._super(e,t),this.itemKind=Types.getKindAsString(t),this.type=n,this.wasDropped=!1},hasShadow:function(){return!0},onLoot:function(e){this.type==="weapon"?e.switchWeapon(this.itemKind):this.type==="armor"&&e.armorloot_callback(this.itemKind)},getSpriteName:function(){return"item-"+this.itemKind},getLootMessage:function(){return this.lootMessage}});return t}); \ No newline at end of file diff --git a/public_html/browserquest/js/items.js b/public_html/browserquest/js/items.js new file mode 100644 index 0000000..a50e162 --- /dev/null +++ b/public_html/browserquest/js/items.js @@ -0,0 +1 @@ +define(["item"],function(e){var t={Sword2:e.extend({init:function(e){this._super(e,Types.Entities.SWORD2,"weapon"),this.lootMessage="You pick up a steel sword"}}),Axe:e.extend({init:function(e){this._super(e,Types.Entities.AXE,"weapon"),this.lootMessage="You pick up an axe"}}),RedSword:e.extend({init:function(e){this._super(e,Types.Entities.REDSWORD,"weapon"),this.lootMessage="You pick up a blazing sword"}}),BlueSword:e.extend({init:function(e){this._super(e,Types.Entities.BLUESWORD,"weapon"),this.lootMessage="You pick up a magic sword"}}),GoldenSword:e.extend({init:function(e){this._super(e,Types.Entities.GOLDENSWORD,"weapon"),this.lootMessage="You pick up the ultimate sword"}}),MorningStar:e.extend({init:function(e){this._super(e,Types.Entities.MORNINGSTAR,"weapon"),this.lootMessage="You pick up a morning star"}}),LeatherArmor:e.extend({init:function(e){this._super(e,Types.Entities.LEATHERARMOR,"armor"),this.lootMessage="You equip a leather armor"}}),MailArmor:e.extend({init:function(e){this._super(e,Types.Entities.MAILARMOR,"armor"),this.lootMessage="You equip a mail armor"}}),PlateArmor:e.extend({init:function(e){this._super(e,Types.Entities.PLATEARMOR,"armor"),this.lootMessage="You equip a plate armor"}}),RedArmor:e.extend({init:function(e){this._super(e,Types.Entities.REDARMOR,"armor"),this.lootMessage="You equip a ruby armor"}}),GoldenArmor:e.extend({init:function(e){this._super(e,Types.Entities.GOLDENARMOR,"armor"),this.lootMessage="You equip a golden armor"}}),Flask:e.extend({init:function(e){this._super(e,Types.Entities.FLASK,"object"),this.lootMessage="You drink a health potion"}}),Cake:e.extend({init:function(e){this._super(e,Types.Entities.CAKE,"object"),this.lootMessage="You eat a cake"}}),Burger:e.extend({init:function(e){this._super(e,Types.Entities.BURGER,"object"),this.lootMessage="You can haz rat burger"}}),FirePotion:e.extend({init:function(e){this._super(e,Types.Entities.FIREPOTION,"object"),this.lootMessage="You feel the power of Firefox!"},onLoot:function(e){e.startInvincibility()}})};return t}); \ No newline at end of file diff --git a/public_html/browserquest/js/lib/astar.js b/public_html/browserquest/js/lib/astar.js new file mode 100644 index 0000000..406c853 --- /dev/null +++ b/public_html/browserquest/js/lib/astar.js @@ -0,0 +1,7 @@ +/** + * A* (A-Star) algorithm for a path finder + * @author Andrea Giammarchi + * @license Mit Style License + */ + +define([],function(){var e=function(){function e(e,t,n,r,i,s,o,u,a,f,l,c,h){return e&&(n&&!a[i][o]&&(c[h++]={x:o,y:i}),r&&!a[i][u]&&(c[h++]={x:u,y:i})),t&&(n&&!a[s][o]&&(c[h++]={x:o,y:s}),r&&!a[s][u]&&(c[h++]={x:u,y:s})),c}function t(e,t,n,r,i,s,o,u,a,f,l,c,h){return e=i>-1,t=s-1,n&&(e&&!a[i][o]&&(c[h++]={x:o,y:i}),t&&!a[s][o]&&(c[h++]={x:o,y:s})),r&&(e&&!a[i][u]&&(c[h++]={x:u,y:i}),t&&!a[s][u]&&(c[h++]={x:u,y:s})),c}function n(e,t,n,r,i,s,o,u,a,f,l,c,h){return c}function r(e,t,n,r,i,s){var o=n-1,u=n+1,a=t+1,f=t-1,l=o>-1&&!r[o][t],c=u-1&&!r[n][f],d=[],v=0;return l&&(d[v++]={x:t,y:o}),h&&(d[v++]={x:a,y:n}),c&&(d[v++]={x:t,y:u}),p&&(d[v++]={x:f,y:n}),e(l,c,h,p,o,u,a,f,r,i,s,d,v)}function i(e,t,n,r){return r(n(e.x-t.x),n(e.y-t.y))}function s(e,t,n,r){var i=e.x-t.x,s=e.y-t.y;return r(i*i+s*s)}function o(e,t,n,r){return n(e.x-t.x)+n(e.y-t.y)}function u(u,a,f,l){var c=u[0].length,h=u.length,p=c*h,d=Math.abs,v=Math.max,m={},g=[],y=[{x:a[0],y:a[1],f:0,g:0,v:a[0]+a[1]*c}],b=1,w,E,S,x,T,N,C,k,L;f={x:f[0],y:f[1],v:f[0]+f[1]*c};switch(l){case"Diagonal":S=e;case"DiagonalFree":E=i;break;case"Euclidean":S=e;case"EuclideanFree":v=Math.sqrt,E=s;break;default:E=o,S=n}S||(S=t);do{N=p,C=0;for(x=0;x=1&&o<=1.5?u|0:u-1|0):(o=u|0,u=u-o>=.5?u+1|0:o),o=0,e<0&&(r=0-r,u=0-u,o=1),r<65536?r===0?i+=n[13+o]+n[u+128]:i+=n[13+o]+n[u]+n[r]:i+=n[15+o]+n[r>>16&65535]+n[r&65535]+n[u]}else{var o=0;e<=0?(e=0-e,o=1):e--,e<116?i+=n[17+e+o*116]:e<65536?i+=n[1+o]+n[e]:i+=n[3+o]+n[e>>16&65535]+n[e&65535]}}else if(typeof e=="string"){var a=e.length;i+=n[7];while(a>=65535)a-=65535,i+=n[65535];i+=n[a]+e}else if(e===!0)i+=n[5];else if(e===!1)i+=n[6];else if(e===null)i+=n[0];else if(e instanceof Array){i+=n[8];for(var f=0,a=e.length;f16)c=t.substring(n,n+u-17),n+=u-17,l=!1;else if(u===8||u===10)h=u===8?new Array:new Object,l=f=u===10,s!==e?o instanceof Array?o.push(h):o[c]=h:s=h,i.push(h),a++;else if(u===11||u===9)i.pop(),l=f=!(i[--a]instanceof Array);else if(u>16)u-=17,u=u>115?0-u+116:u+1,o instanceof Array?o.push(u):o[c]=u,l=!0;else if(u>0&&u<5)((u-1)/2|0)===0?(h=t.charCodeAt(n),n++):(h=(t.charCodeAt(n)<<16)+t.charCodeAt(n+1),n+=2),h=u%2?h+1:0-h,o instanceof Array?o.push(h):o[c]=h,l=!0;else if(u>12&&u<17)((u-13)/2|0)===0?(p=t.charCodeAt(n),p>127?(h=0,p-=128,n++):(h=t.charCodeAt(n+1),n+=2)):(h=(t.charCodeAt(n)<<16)+t.charCodeAt(n+1),p=t.charCodeAt(n+2),n+=3),h=u%2?h+p*.01:0-(h+p*.01),o instanceof Array?o.push(h):o[c]=h,l=!0;else if(u>4&&u<7)o instanceof Array?o.push(u===5):o[c]=u===5,l=!0;else if(u===0)o instanceof Array?o.push(null):o[c]=null,l=!0;else if(u===7){h=0;while(t.charCodeAt(n)===65535)h+=65535,n++;h+=t.charCodeAt(n++),o instanceof Array?o.push(t.substr(n,h)):o[c]=t.substr(n,h),n+=h,l=!0}}return s}var t=String.fromCharCode,n=new Array(65536);for(var r=0;r<65536;r++)n[r]=t(r);var i="";typeof window=="undefined"?(exports.encode=o,exports.decode=u):window.BISON={encode:o,decode:u}})(); \ No newline at end of file diff --git a/public_html/browserquest/js/lib/class.js b/public_html/browserquest/js/lib/class.js new file mode 100644 index 0000000..4c04b0c --- /dev/null +++ b/public_html/browserquest/js/lib/class.js @@ -0,0 +1 @@ +var initializing=!1,fnTest=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;Class=function(){},Class.extend=function(e){var t=this.prototype;initializing=!0;var n=new this;initializing=!1;for(var r in e)n[r]=typeof e[r]=="function"&&typeof t[r]=="function"&&fnTest.test(e[r])?function(e,n){return function(){var r=this._super;this._super=t[e];var i=n.apply(this,arguments);return this._super=r,i}}(r,e[r]):e[r];return Class=function(){!initializing&&this.init&&this.init.apply(this,arguments)},Class.prototype=n,Class.constructor=Class,Class.extend=arguments.callee,Class},typeof exports!="undefined"&&(exports.Class=Class); \ No newline at end of file diff --git a/public_html/browserquest/js/lib/css3-mediaqueries.js b/public_html/browserquest/js/lib/css3-mediaqueries.js new file mode 100644 index 0000000..9a0d615 --- /dev/null +++ b/public_html/browserquest/js/lib/css3-mediaqueries.js @@ -0,0 +1 @@ +typeof Object.create!="function"&&(Object.create=function(e){function t(){}return t.prototype=e,new t});var ua={toString:function(){return navigator.userAgent},test:function(e){return this.toString().toLowerCase().indexOf(e.toLowerCase())>-1}};ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],ua.webkit=ua.test("webkit"),ua.gecko=ua.test("gecko")&&!ua.webkit,ua.opera=ua.test("opera"),ua.ie=ua.test("msie")&&!ua.opera,ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight=="undefined",ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!="undefined"&&typeof XDomainRequest=="undefined",ua.ie8=ua.ie&&typeof XDomainRequest!="undefined";var domReady=function(){var e=[],t=function(){if(!arguments.callee.done){arguments.callee.done=!0;for(var t=0;t=200&&r.status<300||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status=="undefined"?t(r.responseText):n(),document.documentElement.style.cursor="",r=null)},r.send("")},f=function(t){return t=t.replace(e.REDUNDANT_COMPONENTS,""),t=t.replace(e.REDUNDANT_WHITESPACE,"$1"),t=t.replace(e.MORE_WHITESPACE," "),t=t.replace(e.FINAL_SEMICOLONS,"}"),t},l={mediaQueryList:function(t){var n={},r=t.indexOf("{"),i=t.substring(0,r);t=t.substring(r+1,t.length-1);var s=[],o=[],u=i.toLowerCase().substring(7).split(",");for(var a=0;a-1&&l.href&&l.href.length!==0&&!l.disabled&&(r[r.length]=l)}if(r.length>0){var p=0,d=function(){p++,p===r.length&&i()},v=function(t){var n=t.href;a(n,function(r){r=f(r).replace(e.RELATIVE_URLS,"url("+n.substring(0,n.lastIndexOf("/"))+"/$1)"),t.cssHelperText=r,d()},d)};for(u=0;u=a||s&&l0;if("device-height"===e.substring(r-13,r))return c=screen.height,t!==null?u==="length"?i&&c>=a||s&&c0;if("width"===e.substring(r-5,r))return l=document.documentElement.clientWidth||document.body.clientWidth,t!==null?u==="length"?i&&l>=a||s&&l0;if("height"===e.substring(r-6,r))return c=document.documentElement.clientHeight||document.body.clientHeight,t!==null?u==="length"?i&&c>=a||s&&c0;if("device-aspect-ratio"===e.substring(r-19,r))return u==="aspect-ratio"&&screen.width*a[1]===screen.height*a[0];if("color-index"===e.substring(r-11,r)){var h=Math.pow(2,screen.colorDepth);return t!==null?u==="absolute"?i&&h>=a||s&&h0}if("color"===e.substring(r-5,r)){var p=screen.colorDepth;return t!==null?u==="absolute"?i&&p>=a||s&&p0}if("resolution"===e.substring(r-10,r)){var d;return f==="dpcm"?d=o("1cm"):d=o("1in"),t!==null?u==="resolution"?i&&d>=a||s&&d0}return!1},a=function(e){var t=e.getValid(),n=e.getExpressions(),r=n.length;if(r>0){for(var i=0;i0&&(s[o++]=","),s[o++]=u);s.length>0&&(r[r.length]=cssHelper.addStyle("@media "+s.join("")+"{"+e.getCssText()+"}",!1))},l=function(e){for(var t=0;th||Math.abs(s-t)>h)e=n,t=s,clearTimeout(r),r=setTimeout(function(){i()?cssHelper.broadcast("cssMediaQueriesTested"):c()},500)};window.onresize=function(){var e=window.onresize||function(){};return function(){e(),s()}}()},d=document.documentElement;return d.style.marginLeft="-32767px",setTimeout(function(){d.style.marginTop=""},2e4),function(){i()?d.style.marginLeft="":(cssHelper.addListener("newStyleParsed",function(e){l(e.cssHelperParsed.mediaQueryLists)}),cssHelper.addListener("cssMediaQueriesTested",function(){ua.ie&&(d.style.width="1px"),setTimeout(function(){d.style.width="",d.style.marginLeft=""},0),cssHelper.removeListener("cssMediaQueriesTested",arguments.callee)}),s(),c()),p()}}());try{document.execCommand("BackgroundImageCache",!1,!0)}catch(e){}; \ No newline at end of file diff --git a/public_html/browserquest/js/lib/log.js b/public_html/browserquest/js/lib/log.js new file mode 100644 index 0000000..ad06f56 --- /dev/null +++ b/public_html/browserquest/js/lib/log.js @@ -0,0 +1 @@ +var Logger=function(e){this.level=e};Logger.prototype.info=function(){},Logger.prototype.debug=function(){},Logger.prototype.error=function(){},log=new Logger("debug"); \ No newline at end of file diff --git a/public_html/browserquest/js/lib/modernizr.js b/public_html/browserquest/js/lib/modernizr.js new file mode 100644 index 0000000..8b0327e --- /dev/null +++ b/public_html/browserquest/js/lib/modernizr.js @@ -0,0 +1 @@ +window.Modernizr=function(e,t,n){function r(e){p.cssText=e}function i(e,t){return r(m.join(e+";")+(t||""))}function s(e,t){return typeof e===t}function o(e,t){return!!~(""+e).indexOf(t)}function u(e,t,r){for(var i in e){var o=t[e[i]];if(o!==n)return r===!1?e[i]:s(o,"function")?o.bind(r||t):o}return!1}var a="2.5.3",f={},l=t.documentElement,c="modernizr",h=t.createElement(c),p=h.style,d,v={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),g={},y={},b={},w=[],E=w.slice,S,x={}.hasOwnProperty,T;!s(x,"undefined")&&!s(x.call,"undefined")?T=function(e,t){return x.call(e,t)}:T=function(e,t){return t in e&&s(e.constructor.prototype[t],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError;var n=E.call(arguments,1),r=function(){if(this instanceof r){var i=function(){};i.prototype=t.prototype;var s=new i,o=t.apply(s,n.concat(E.call(arguments)));return Object(o)===o?o:s}return t.apply(e,n.concat(E.call(arguments)))};return r}),g.opacity=function(){return i("opacity:.55"),/^0.55$/.test(p.opacity)},g.audio=function(){var e=t.createElement("audio"),n=!1;try{if(n=!!e.canPlayType)n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(r){}return n},g.localstorage=function(){try{return localStorage.setItem(c,c),localStorage.removeItem(c),!0}catch(e){return!1}};for(var N in g)T(g,N)&&(S=N.toLowerCase(),f[S]=g[N](),w.push((f[S]?"":"no-")+S));return r(""),h=d=null,f._version=a,f._prefixes=m,f}(this,this.document); \ No newline at end of file diff --git a/public_html/browserquest/js/lib/require-jquery.js b/public_html/browserquest/js/lib/require-jquery.js new file mode 100644 index 0000000..1f9f3b7 --- /dev/null +++ b/public_html/browserquest/js/lib/require-jquery.js @@ -0,0 +1,32 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.5 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ + +/*! + * jQuery JavaScript Library v2.0.0 + * 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-04-18 + */ + +/*! + * Sizzle CSS Selector Engine v1.9.2-pre + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-04-16 + */ + +var requirejs,require,define;(function(global){function isFunction(e){return ostring.call(e)==="[object Function]"}function isArray(e){return ostring.call(e)==="[object Array]"}function each(e,t){if(e){var n;for(n=0;n-1;n-=1)if(e[n]&&t(e[n],n,e))break}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var n;for(n in e)if(hasProp(e,n)&&t(e[n],n))break}function mixin(e,t,n,r){return t&&eachProp(t,function(t,i){if(n||!hasProp(e,i))r&&typeof t!="string"?(e[i]||(e[i]={}),mixin(e[i],t,n,r)):e[i]=t}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,n,r){var i=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return i.requireType=e,i.requireModules=r,n&&(i.originalError=n),i}function newContext(e){function v(e){var t,n;for(t=0;e[t];t+=1){n=e[t];if(n===".")e.splice(t,1),t-=1;else if(n===".."){if(t===1&&(e[2]===".."||e[0]===".."))break;t>0&&(e.splice(t-1,2),t-=2)}}}function m(e,t,n){var r,i,s,u,a,f,l,c,h,p,d,m=t&&t.split("/"),g=m,y=o.map,b=y&&y["*"];e&&e.charAt(0)==="."&&(t?(getOwn(o.pkgs,t)?g=m=[t]:g=m.slice(0,m.length-1),e=g.concat(e.split("/")),v(e),i=getOwn(o.pkgs,r=e[0]),e=e.join("/"),i&&e===r+"/"+i.main&&(e=r)):e.indexOf("./")===0&&(e=e.substring(2)));if(n&&y&&(m||b)){u=e.split("/");for(a=u.length;a>0;a-=1){l=u.slice(0,a).join("/");if(m)for(f=m.length;f>0;f-=1){s=getOwn(y,m.slice(0,f).join("/"));if(s){s=getOwn(s,l);if(s){c=s,h=a;break}}}if(c)break;!p&&b&&getOwn(b,l)&&(p=getOwn(b,l),d=a)}!c&&p&&(c=p,h=d),c&&(u.splice(0,h,c),e=u.join("/"))}return e}function g(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===r.contextName)return t.parentNode.removeChild(t),!0})}function y(e){var t=getOwn(o.paths,e);if(t&&isArray(t)&&t.length>1)return g(e),t.shift(),r.require.undef(e),r.require([e]),!0}function b(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function w(e,t,n,i){var s,o,u,a,f=null,l=t?t.name:null,h=e,v=!0,g="";return e||(v=!1,e="_@r"+(p+=1)),a=b(e),f=a[0],e=a[1],f&&(f=m(f,l,i),o=getOwn(c,f)),e&&(f?o&&o.normalize?g=o.normalize(e,function(e){return m(e,l,i)}):g=m(e,l,i):(g=m(e,l,i),a=b(g),f=a[0],g=a[1],n=!0,s=r.nameToUrl(g))),u=f&&!o&&!n?"_unnormalized"+(d+=1):"",{prefix:f,name:g,parentMap:t,unnormalized:!!u,url:s,originalName:h,isDefine:v,id:(f?f+"!"+g:g)+u}}function E(e){var t=e.id,n=getOwn(u,t);return n||(n=u[t]=new r.Module(e)),n}function S(e,t,n){var r=e.id,i=getOwn(u,r);hasProp(c,r)&&(!i||i.defineEmitComplete)?t==="defined"&&n(c[r]):E(e).on(t,n)}function x(e,t){var n=e.requireModules,r=!1;t?t(e):(each(n,function(t){var n=getOwn(u,t);n&&(n.error=e,n.events.error&&(r=!0,n.emit("error",e)))}),r||req.onError(e))}function T(){globalDefQueue.length&&(apsp.apply(l,[l.length-1,0].concat(globalDefQueue)),globalDefQueue=[])}function N(e){delete u[e],delete a[e]}function C(e,t,n){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,i){var s=r.id,o=getOwn(u,s);o&&!e.depMatched[i]&&!n[s]&&(getOwn(t,s)?(e.defineDep(i,c[s]),e.check()):C(o,t,n))}),n[r]=!0)}function k(){var e,n,i,u,f=o.waitSeconds*1e3,l=f&&r.startTime+f<(new Date).getTime(),c=[],h=[],p=!1,d=!0;if(t)return;t=!0,eachProp(a,function(t){e=t.map,n=e.id;if(!t.enabled)return;e.isDefine||h.push(t);if(!t.error)if(!t.inited&&l)y(n)?(u=!0,p=!0):(c.push(n),g(n));else if(!t.inited&&t.fetched&&e.isDefine){p=!0;if(!e.prefix)return d=!1}});if(l&&c.length)return i=makeError("timeout","Load timeout for modules: "+c,null,c),i.contextName=r.contextName,x(i);d&&each(h,function(e){C(e,{},{})}),(!l||u)&&p&&(isBrowser||isWebWorker)&&!s&&(s=setTimeout(function(){s=0,k()},50)),t=!1}function L(e){hasProp(c,e[0])||E(w(e[0],null,!0)).init(e[1],e[2])}function A(e,t,n,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(n,t,!1)}function O(e){var t=e.currentTarget||e.srcElement;return A(t,r.onScriptLoad,"load","onreadystatechange"),A(t,r.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function M(){var e;T();while(l.length){e=l.shift();if(e[0]===null)return x(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));L(e)}}var t,n,r,i,s,o={waitSeconds:7,baseUrl:"./",paths:{},pkgs:{},shim:{},config:{}},u={},a={},f={},l=[],c={},h={},p=1,d=1;return i={require:function(e){return e.require?e.require:e.require=r.makeRequire(e.map)},exports:function(e){e.usingExports=!0;if(e.map.isDefine)return e.exports?e.exports:e.exports=c[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return o.config&&getOwn(o.config,e.map.id)||{}},exports:c[e.map.id]}}},n=function(e){this.events=getOwn(f,e.id)||{},this.map=e,this.shim=getOwn(o.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},n.prototype={init:function(e,t,n,r){r=r||{};if(this.inited)return;this.factory=t,n?this.on("error",n):this.events.error&&(n=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=n,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check()},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(this.fetched)return;this.fetched=!0,r.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();r.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))},load:function(){var e=this.map.url;h[e]||(h[e]=!0,r.load(this.map.id,e))},check:function(){if(!this.enabled||this.enabling)return;var e,t,n=this.map.id,i=this.depExports,s=this.exports,o=this.factory;if(!this.inited)this.fetch();else if(this.error)this.emit("error",this.error);else if(!this.defining){this.defining=!0;if(this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error)try{s=r.execCb(n,o,i,s)}catch(u){e=u}else s=r.execCb(n,o,i,s);this.map.isDefine&&(t=this.module,t&&t.exports!==undefined&&t.exports!==this.exports?s=t.exports:s===undefined&&this.usingExports&&(s=this.exports));if(e)return e.requireMap=this.map,e.requireModules=[this.map.id],e.requireType="define",x(this.error=e)}else s=o;this.exports=s,this.map.isDefine&&!this.ignore&&(c[n]=s,req.onResourceLoad&&req.onResourceLoad(r,this.map,this.depMaps)),N(n),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}},callPlugin:function(){var e=this.map,t=e.id,n=w(e.prefix);this.depMaps.push(n),S(n,"defined",bind(this,function(n){var i,s,a,f=this.map.name,l=this.map.parentMap?this.map.parentMap.name:null,c=r.makeRequire(e.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){n.normalize&&(f=n.normalize(f,function(e){return m(e,l,!0)})||""),s=w(e.prefix+"!"+f,this.map.parentMap),S(s,"defined",bind(this,function(e){this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),a=getOwn(u,s.id),a&&(this.depMaps.push(s),this.events.error&&a.on("error",bind(this,function(e){this.emit("error",e)})),a.enable());return}i=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),i.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(u,function(e){e.map.id.indexOf(t+"_unnormalized")===0&&N(e.map.id)}),x(e)}),i.fromText=bind(this,function(n,s){var u=e.name,a=w(u),f=useInteractive;s&&(n=s),f&&(useInteractive=!1),E(a),hasProp(o.config,t)&&(o.config[u]=o.config[t]);try{req.exec(n)}catch(l){return x(makeError("fromtexteval","fromText eval for "+t+" failed: "+l,l,[t]))}f&&(useInteractive=!0),this.depMaps.push(a),r.completeLoad(u),c([u],i)}),n.load(e.name,c,i,o)})),r.enable(n,this),this.pluginMaps[n.id]=n},enable:function(){a[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var n,s,o;if(typeof e=="string"){e=w(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,o=getOwn(i,e.id);if(o){this.depExports[t]=o(this);return}this.depCount+=1,S(e,"defined",bind(this,function(e){this.defineDep(t,e),this.check()})),this.errback&&S(e,"error",this.errback)}n=e.id,s=u[n],!hasProp(i,n)&&s&&!s.enabled&&r.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(u,e.id);t&&!t.enabled&&r.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var n=this.events[e];n||(n=this.events[e]=[]),n.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),e==="error"&&delete this.events[e]}},r={config:o,contextName:e,registry:u,defined:c,urlFetched:h,defQueue:l,Module:n,makeModuleMap:w,nextTick:req.nextTick,onError:x,configure:function(e){e.baseUrl&&e.baseUrl.charAt(e.baseUrl.length-1)!=="/"&&(e.baseUrl+="/");var t=o.pkgs,n=o.shim,i={paths:!0,config:!0,map:!0};eachProp(e,function(e,t){i[t]?t==="map"?(o.map||(o.map={}),mixin(o[t],e,!0,!0)):mixin(o[t],e,!0):o[t]=e}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),(e.exports||e.init)&&!e.exportsFn&&(e.exportsFn=r.makeShimExports(e)),n[t]=e}),o.shim=n),e.packages&&(each(e.packages,function(e){var n;e=typeof e=="string"?{name:e}:e,n=e.location,t[e.name]={name:e.name,location:n||e.name,main:(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}}),o.pkgs=t),eachProp(u,function(e,t){!e.inited&&!e.map.unnormalized&&(e.map=w(t))}),(e.deps||e.callback)&&r.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function s(o,a,f){var l,h,p;return n.enableBuildCallback&&a&&isFunction(a)&&(a.__requireJsBuild=!0),typeof o=="string"?isFunction(a)?x(makeError("requireargs","Invalid require call"),f):t&&hasProp(i,o)?i[o](u[t.id]):req.get?req.get(r,o,t,s):(h=w(o,t,!1,!0),l=h.id,hasProp(c,l)?c[l]:x(makeError("notloaded",'Module name "'+l+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(M(),r.nextTick(function(){M(),p=E(w(null,t)),p.skipMap=n.skipMap,p.init(o,a,f,{enabled:!0}),k()}),s)}return n=n||{},mixin(s,{isBrowser:isBrowser,toUrl:function(e){var n,i=e.lastIndexOf("."),s=e.split("/")[0],o=s==="."||s==="..";return i!==-1&&(!o||i>1)&&(n=e.substring(i,e.length),e=e.substring(0,i)),r.nameToUrl(m(e,t&&t.id,!0),n,!0)},defined:function(e){return hasProp(c,w(e,t,!1,!0).id)},specified:function(e){return e=w(e,t,!1,!0).id,hasProp(c,e)||hasProp(u,e)}}),t||(s.undef=function(e){T();var n=w(e,t,!0),r=getOwn(u,e);delete c[e],delete h[n.url],delete f[e],r&&(r.events.defined&&(f[e]=r.events),N(e))}),s},enable:function(e){var t=getOwn(u,e.id);t&&E(e).enable()},completeLoad:function(e){var t,n,r,i=getOwn(o.shim,e)||{},s=i.exports;T();while(l.length){n=l.shift();if(n[0]===null){n[0]=e;if(t)break;t=!0}else n[0]===e&&(t=!0);L(n)}r=getOwn(u,e);if(!t&&!hasProp(c,e)&&r&&!r.inited){if(o.enforceDefine&&(!s||!getGlobal(s))){if(y(e))return;return x(makeError("nodefine","No define call for "+e,null,[e]))}L([e,i.deps||[],i.exportsFn])}k()},nameToUrl:function(e,t,n){var r,i,s,u,a,f,l,c,h;if(req.jsExtRegExp.test(e))c=e+(t||"");else{r=o.paths,i=o.pkgs,a=e.split("/");for(f=a.length;f>0;f-=1){l=a.slice(0,f).join("/"),s=getOwn(i,l),h=getOwn(r,l);if(h){isArray(h)&&(h=h[0]),a.splice(0,f,h);break}if(s){e===s.name?u=s.location+"/"+s.main:u=s.location,a.splice(0,f,u);break}}c=a.join("/"),c+=t||(/\?/.test(c)||n?"":".js"),c=(c.charAt(0)==="/"||c.match(/^[\w\+\.\-]+:/)?"":o.baseUrl)+c}return o.urlArgs?c+((c.indexOf("?")===-1?"?":"&")+o.urlArgs):c},load:function(e,t){req.load(r,e,t)},execCb:function(e,t,n,r){return t.apply(r,n)},onScriptLoad:function(e){if(e.type==="load"||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=O(e);r.completeLoad(t.id)}},onScriptError:function(e){var t=O(e);if(!y(t.id))return x(makeError("scripterror","Script error",e,[t.id]))}},r.require=r.makeRequire(),r}function getInteractiveScript(){return interactiveScript&&interactiveScript.readyState==="interactive"?interactiveScript:(eachReverse(scripts(),function(e){if(e.readyState==="interactive")return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.1.5",commentRegExp=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,ap=Array.prototype,apsp=ap.splice,isBrowser=typeof window!="undefined"&&!!navigator&&!!document,isWebWorker=!isBrowser&&typeof importScripts!="undefined",readyRegExp=isBrowser&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera=typeof opera!="undefined"&&opera.toString()==="[object Opera]",contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(typeof define!="undefined")return;if(typeof requirejs!="undefined"){if(isFunction(requirejs))return;cfg=requirejs,requirejs=undefined}typeof require!="undefined"&&!isFunction(require)&&(cfg=require,require=undefined),req=requirejs=function(e,t,n,r){var i,s,o=defContextName;return!isArray(e)&&typeof e!="string"&&(s=e,isArray(t)?(e=t,t=n,n=r):e=[]),s&&s.context&&(o=s.context),i=getOwn(contexts,o),i||(i=contexts[o]=req.s.newContext(o)),s&&i.configure(s),i.require(e,t,n)},req.config=function(e){return req(e)},req.nextTick=typeof setTimeout!="undefined"?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=function(e){throw e},req.load=function(e,t,n){var r=e&&e.config||{},i;if(isBrowser)return i=r.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),i.type=r.scriptType||"text/javascript",i.charset="utf-8",i.async=!0,i.setAttribute("data-requirecontext",e.contextName),i.setAttribute("data-requiremodule",t),i.attachEvent&&!(i.attachEvent.toString&&i.attachEvent.toString().indexOf("[native code")<0)&&!isOpera?(useInteractive=!0,i.attachEvent("onreadystatechange",e.onScriptLoad)):(i.addEventListener("load",e.onScriptLoad,!1),i.addEventListener("error",e.onScriptError,!1)),i.src=n,currentlyAddingScript=i,baseElement?head.insertBefore(i,baseElement):head.appendChild(i),currentlyAddingScript=null,i;if(isWebWorker)try{importScripts(n),e.completeLoad(t)}catch(s){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+n,s,[t]))}},isBrowser&&eachReverse(scripts(),function(e){head||(head=e.parentNode),dataMain=e.getAttribute("data-main");if(dataMain)return cfg.baseUrl||(src=dataMain.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath,dataMain=mainScript),dataMain=dataMain.replace(jsSuffixRegExp,""),cfg.deps=cfg.deps?cfg.deps.concat(dataMain):[dataMain],!0}),define=function(e,t,n){var r,i;typeof e!="string"&&(n=t,t=e,e=null),isArray(t)||(n=t,t=[]),!t.length&&isFunction(n)&&n.length&&(n.toString().replace(commentRegExp,"").replace(cjsRequireRegExp,function(e,n){t.push(n)}),t=(n.length===1?["require"]:["require","exports","module"]).concat(t)),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),i=contexts[r.getAttribute("data-requirecontext")])),(i?i.defQueue:globalDefQueue).push([e,t,n])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)})(this),function(window,undefined){function isArraylike(e){var t=e.length,n=jQuery.type(e);return jQuery.isWindow(e)?!1:e.nodeType===1&&t?!0:n==="array"||n!=="function"&&(t===0||typeof t=="number"&&t>0&&t-1 in e)}function createOptions(e){var t=optionsCache[e]={};return jQuery.each(e.match(core_rnotwhite)||[],function(e,n){t[n]=!0}),t}function Data(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=jQuery.expando+Math.random()}function dataAttr(e,t,n){var r;if(n===undefined&&e.nodeType===1){r="data-"+t.replace(rmultiDash,"-$1").toLowerCase(),n=e.getAttribute(r);if(typeof n=="string"){try{n=n==="true"?!0:n==="false"?!1:n==="null"?null:+n+""===n?+n:rbrace.test(n)?JSON.parse(n):n}catch(i){}data_user.set(e,t,n)}else n=undefined}return n}function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(e){}}function sibling(e,t){while((e=e[t])&&e.nodeType!==1);return e}function winnow(e,t,n){if(jQuery.isFunction(t))return jQuery.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return jQuery.grep(e,function(e){return e===t!==n});if(typeof t=="string"){if(isSimple.test(t))return jQuery.filter(t,e,n);t=jQuery.filter(t,e)}return jQuery.grep(e,function(e){return core_indexOf.call(t,e)>=0!==n})}function manipulationTarget(e,t){return jQuery.nodeName(e,"table")&&jQuery.nodeName(t.nodeType===1?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function disableScript(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function restoreScript(e){var t=rscriptTypeMasked.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function setGlobalEval(e,t){var n=e.length,r=0;for(;r").css("cssText","display:block !important")).appendTo(t.documentElement),t=(iframe[0].contentWindow||iframe[0].contentDocument).document,t.write(""),t.close(),n=actualDisplay(e,t),iframe.detach();elemdisplay[e]=n}return n}function actualDisplay(e,t){var n=jQuery(t.createElement(e)).appendTo(t.body),r=jQuery.css(n[0],"display");return n.remove(),r}function buildParams(e,t,n,r){var i;if(jQuery.isArray(t))jQuery.each(t,function(t,i){n||rbracket.test(e)?r(e,i):buildParams(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&jQuery.type(t)==="object")for(i in t)buildParams(e+"["+i+"]",t[i],n,r);else r(e,t)}function addToPrefiltersOrTransports(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i=0,s=t.toLowerCase().match(core_rnotwhite)||[];if(jQuery.isFunction(n))while(r=s[i++])r[0]==="+"?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function inspectPrefiltersOrTransports(e,t,n,r){function o(u){var a;return i[u]=!0,jQuery.each(e[u]||[],function(e,u){var f=u(t,n,r);if(typeof f=="string"&&!s&&!i[f])return t.dataTypes.unshift(f),o(f),!1;if(s)return!(a=f)}),a}var i={},s=e===transports;return o(t.dataTypes[0])||!i["*"]&&o("*")}function ajaxExtend(e,t){var n,r,i=jQuery.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&jQuery.extend(!0,e,r),e}function ajaxHandleResponses(e,t,n){var r,i,s,o,u=e.contents,a=e.dataTypes;while(a[0]==="*")a.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in u)if(u[i]&&u[i].test(r)){a.unshift(i);break}if(a[0]in n)s=a[0];else{for(i in n){if(!a[0]||e.converters[i+" "+a[0]]){s=i;break}o||(o=i)}s=s||o}if(s)return s!==a[0]&&a.unshift(s),n[s]}function ajaxConvert(e,t,n,r){var i,s,o,u,a,f={},l=e.dataTypes.slice();if(l[1])for(o in e.converters)f[o.toLowerCase()]=e.converters[o];s=l.shift();while(s){e.responseFields[s]&&(n[e.responseFields[s]]=t),!a&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=s,s=l.shift();if(s)if(s==="*")s=a;else if(a!=="*"&&a!==s){o=f[a+" "+s]||f["* "+s];if(!o)for(i in f){u=i.split(" ");if(u[1]===s){o=f[a+" "+u[0]]||f["* "+u[0]];if(o){o===!0?o=f[i]:f[i]!==!0&&(s=u[0],l.unshift(u[1]));break}}}if(o!==!0)if(o&&e["throws"])t=o(t);else try{t=o(t)}catch(c){return{state:"parsererror",error:o?c:"No conversion from "+a+" to "+s}}}}return{state:"success",data:t}}function createFxNow(){return setTimeout(function(){fxNow=undefined}),fxNow=jQuery.now()}function createTweens(e,t){jQuery.each(t,function(t,n){var r=(tweeners[t]||[]).concat(tweeners["*"]),i=0,s=r.length;for(;i)[^>]*|#([\w-]*))$/,rsingleTag=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,rmsPrefix=/^-ms-/,rdashAlpha=/-([\da-z])/gi,fcamelCase=function(e,t){return t.toUpperCase()},completed=function(){document.removeEventListener("DOMContentLoaded",completed,!1),window.removeEventListener("load",completed,!1),jQuery.ready()};jQuery.fn=jQuery.prototype={jquery:core_version,constructor:jQuery,init:function(e,t,n){var r,i;if(!e)return this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?r=[null,e,null]:r=rquickExpr.exec(e);if(r&&(r[1]||!t)){if(r[1]){t=t instanceof jQuery?t[0]:t,jQuery.merge(this,jQuery.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:document,!0));if(rsingleTag.test(r[1])&&jQuery.isPlainObject(t))for(r in t)jQuery.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=document.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=document,this.selector=e,this}return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e)}return e.nodeType?(this.context=this[0]=e,this.length=1,this):jQuery.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),jQuery.makeArray(e,this))},selector:"",length:0,toArray:function(){return core_slice.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e){var t=jQuery.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return jQuery.each(this,e,t)},ready:function(e){return jQuery.ready.promise().done(e),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(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0)return;readyList.resolveWith(document,[jQuery]),jQuery.fn.trigger&&jQuery(document).trigger("ready").off("ready")},isFunction:function(e){return jQuery.type(e)==="function"},isArray:Array.isArray,isWindow:function(e){return e!=null&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):typeof e=="object"||typeof e=="function"?class2type[core_toString.call(e)]||"object":typeof e},isPlainObject:function(e){if(jQuery.type(e)!=="object"||e.nodeType||jQuery.isWindow(e))return!1;try{if(e.constructor&&!core_hasOwn.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){if(!e||typeof e!="string")return null;typeof t=="boolean"&&(n=t,t=!1),t=t||document;var r=rsingleTag.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=jQuery.buildFragment([e],t,i),i&&jQuery(i).remove(),jQuery.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||typeof e!="string")return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&jQuery.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(code){var script,indirect=eval;code=jQuery.trim(code),code&&(code.indexOf("use strict")===1?(script=document.createElement("script"),script.text=code,document.head.appendChild(script).parentNode.removeChild(script)):indirect(code))},camelCase:function(e){return e.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,s=e.length,o=isArraylike(e);if(n)if(o)for(;ii.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[y]=!0,e}function ut(e){var t=c.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function at(e,t,n,r){var i,s,o,u,a,f,h,v,m,E;(t?t.ownerDocument||t:b)!==c&&l(t),t=t||c,n=n||[];if(!e||typeof e!="string")return n;if((u=t.nodeType)!==1&&u!==9)return[];if(p&&!r){if(i=G.exec(e))if(o=i[1]){if(u===9){s=t.getElementById(o);if(!s||!s.parentNode)return n;if(s.id===o)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(o))&&g(t,s)&&s.id===o)return n.push(s),n}else{if(i[2])return D.apply(n,t.getElementsByTagName(e)),n;if((o=i[3])&&w.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(o)),n}if(w.qsa&&(!d||!d.test(e))){v=h=y,m=t,E=u===9&&e;if(u===1&&t.nodeName.toLowerCase()!=="object"){f=vt(e),(h=t.getAttribute("id"))?v=h.replace(et,"\\$&"):t.setAttribute("id",v),v="[id='"+v+"'] ",a=f.length;while(a--)f[a]=v+mt(f[a]);m=X.test(e)&&t.parentNode||t,E=f.join(",")}if(E)try{return D.apply(n,m.querySelectorAll(E)),n}catch(S){}finally{h||t.removeAttribute("id")}}}return Tt(e.replace(U,"$1"),t,n,r)}function ft(e,t){var n=t&&e,r=n&&(~t.sourceIndex||A)-(~e.sourceIndex||A);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}function ct(e,n,r){var i;return r?t:i=e.getAttribute(n,n.toLowerCase()==="type"?1:2)}function ht(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function dt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function vt(e,t){var n,r,s,o,u,a,f,l=T[e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=z.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=W.exec(u))n=r.shift(),s.push({value:n,type:r[0].replace(U," ")}),u=u.slice(n.length);for(o in i.filter)(r=K[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(n=r.shift(),s.push({value:n,type:o,matches:r}),u=u.slice(n.length));if(!n)break}return t?u.length:u?at.error(e):T(e,a).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;t1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function bt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=bt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):D.apply(o,g)})}function Et(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],f=o?1:0,l=gt(function(e){return e===t},u,!0),c=gt(function(e){return H.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==a)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];for(;f1&&yt(h),f>1&&mt(e.slice(0,f-1)).replace(U,"$1"),n,f0,o=e.length>0,u=function(u,f,l,h,p){var d,v,m,g=[],y=0,b="0",w=u&&[],S=p!=null,x=a,T=u||o&&i.find.TAG("*",p&&f.parentNode||f),N=E+=x==null?1:Math.random()||.1;S&&(a=f!==c&&f,r=n);for(;(d=T[b])!=null;b++){if(o&&d){v=0;while(m=e[v++])if(m(d,f,l)){h.push(d);break}S&&(E=N,r=++n)}s&&((d=!m&&d)&&y--,u&&w.push(d))}y+=b;if(s&&b!==y){v=0;while(m=t[v++])m(w,g,f,l);if(u){if(y>0)while(b--)!w[b]&&!g[b]&&(g[b]=M.call(h));g=bt(g)}D.apply(h,g),S&&!u&&g.length>0&&y+t.length>1&&at.uniqueSort(h)}return S&&(E=N,a=x),w};return s?ot(u):u}function xt(e,t,n){var r=0,i=t.length;for(;r2&&(a=o[0]).type==="ID"&&t.nodeType===9&&p&&i.relative[o[1].type]){t=(i.find.ID(a.matches[0].replace(tt,nt),t)||[])[0];if(!t)return n;e=e.slice(o.shift().value.length)}s=K.needsContext.test(e)?0:o.length;while(s--){a=o[s];if(i.relative[f=a.type])break;if(l=i.find[f])if(r=l(a.matches[0].replace(tt,nt),X.test(o[0].type)&&t.parentNode||t)){o.splice(s,1),e=r.length&&mt(o);if(!e)return D.apply(n,r),n;break}}}return u(e,c)(r,t,!p,n,X.test(e)),n}function Nt(){}var n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y="sizzle"+ -(new Date),b=e.document,w={},E=0,S=0,x=st(),T=st(),N=st(),C=!1,k=function(){return 0},L=typeof t,A=1<<31,O=[],M=O.pop,_=O.push,D=O.push,P=O.slice,H=O.indexOf||function(e){var t=0,n=this.length;for(;t+~]|"+j+")"+j+"*"),X=new RegExp(j+"*[+~]"),V=new RegExp("="+j+"*([^\\]'\"]*)"+j+"*\\]","g"),$=new RegExp(R),J=new RegExp("^"+I+"$"),K={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+q),PSEUDO:new RegExp("^"+R),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+j+"*(even|odd|(([+-]|)(\\d*)n|)"+j+"*(?:([+-]|)"+j+"*(\\d+)|))"+j+"*\\)|)","i"),"boolean":new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+j+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+j+"*((?:-\\d)?\\d*)"+j+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,et=/'|\\/g,tt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,nt=function(e,t){var n="0x"+t-65536;return n!==n?t:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,n&1023|56320)};try{D.apply(O=P.call(b.childNodes),b.childNodes),O[b.childNodes.length].nodeType}catch(rt){D={apply:O.length?function(e,t){_.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}o=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},l=at.setDocument=function(e){var n=e?e.ownerDocument||e:b;if(n===c||n.nodeType!==9||!n.documentElement)return c;c=n,h=n.documentElement,p=!o(n),w.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",e.getElementsByClassName("i").length===2}),w.sortDetached=ut(function(e){return e.compareDocumentPosition(c.createElement("div"))&1}),w.getById=ut(function(e){return h.appendChild(e).id=y,!n.getElementsByName||!n.getElementsByName(y).length}),w.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==L&&p){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==L&&p){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==L&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){var n=typeof e.getAttributeNode!==L&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=w.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==L)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],i=0,s=t.getElementsByTagName(e);if(e==="*"){while(n=s[i++])n.nodeType===1&&r.push(n);return r}return s},i.find.CLASS=w.getElementsByClassName&&function(e,t){if(typeof t.getElementsByClassName!==L&&p)return t.getElementsByClassName(e)},v=[],d=[];if(w.qsa=it(n.querySelectorAll))ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+j+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var t=c.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+j+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")});return(w.matchesSelector=it(m=h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ut(function(e){w.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),v.push("!=",R)}),d=d.length&&new RegExp(d.join("|")),v=v.length&&new RegExp(v.join("|")),g=it(h.contains)||h.compareDocumentPosition?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!r&&r.nodeType===1&&!!(n.contains?n.contains(r):e.compareDocumentPosition&&e.compareDocumentPosition(r)&16)}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},k=h.compareDocumentPosition?function(e,t){if(e===t)return C=!0,0;var r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);if(r)return r&1||!w.sortDetached&&t.compareDocumentPosition(e)===r?e===n||g(b,e)?-1:t===n||g(b,t)?1:f?H.call(f,e)-H.call(f,t):0:r&4?-1:1;return e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,s=e.parentNode,o=t.parentNode,u=[e],a=[t];if(e===t)return C=!0,0;if(!s||!o)return e===n?-1:t===n?1:s?-1:o?1:f?H.call(f,e)-H.call(f,t):0;if(s===o)return ft(e,t);r=e;while(r=r.parentNode)u.unshift(r);r=t;while(r=r.parentNode)a.unshift(r);while(u[i]===a[i])i++;return i?ft(u[i],a[i]):u[i]===b?-1:a[i]===b?1:0},c},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){(e.ownerDocument||e)!==c&&l(e),t=t.replace(V,"='$1']");if(w.matchesSelector&&p&&(!v||!v.test(t))&&(!d||!d.test(t)))try{var n=m.call(e,t);if(n||w.disconnectedMatch||e.document&&e.document.nodeType!==11)return n}catch(r){}return at(t,c,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==c&&l(e),g(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==c&&l(e);var r=i.attrHandle[n.toLowerCase()],s=r&&r(e,n,!p);return s===t?w.attributes||!p?e.getAttribute(n):(s=e.getAttributeNode(n))&&s.specified?s.value:null:s},at.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],r=0,i=0;C=!w.detectDuplicates,f=!w.sortStable&&e.slice(0),e.sort(k);if(C){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return e},s=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(!i)for(;t=e[r];r++)n+=s(t);else if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue;return n},i=at.selectors={cacheLength:50,createPseudo:ot,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(tt,nt),e[3]=(e[4]||e[5]||"").replace(tt,nt),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1].slice(0,3)==="nth"?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd")),e[5]=+(e[7]+e[8]||e[3]==="odd")):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return K.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&$.test(n)&&(t=vt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(tt,nt).toLowerCase();return e==="*"?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=x[e+" "];return t||(t=new RegExp("(^|"+j+")"+e+"("+j+"|$)"))&&x(e,function(e){return t.test(typeof e.className=="string"&&e.className||typeof e.getAttribute!==L&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return i==null?t==="!=":t?(i+="",t==="="?i===n:t==="!="?i!==n:t==="^="?n&&i.indexOf(n)===0:t==="*="?n&&i.indexOf(n)>-1:t==="$="?n&&i.slice(-n.length)===n:t==="~="?(" "+i+" ").indexOf(n)>-1:t==="|="?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var s=e.slice(0,3)!=="nth",o=e.slice(-4)!=="last",u=t==="of-type";return r===1&&i===0?function(e){return!!e.parentNode}:function(t,n,a){var f,l,c,h,p,d,v=s!==o?"nextSibling":"previousSibling",m=t.parentNode,g=u&&t.nodeName.toLowerCase(),b=!a&&!u;if(m){if(s){while(v){c=t;while(c=c[v])if(u?c.nodeName.toLowerCase()===g:c.nodeType===1)return!1;d=v=e==="only"&&!d&&"nextSibling"}return!0}d=[o?m.firstChild:m.lastChild];if(o&&b){l=m[y]||(m[y]={}),f=l[e]||[],p=f[0]===E&&f[1],h=f[0]===E&&f[2],c=p&&m.childNodes[p];while(c=++p&&c&&c[v]||(h=p=0)||d.pop())if(c.nodeType===1&&++h&&c===t){l[e]=[E,p,h];break}}else if(b&&(f=(t[y]||(t[y]={}))[e])&&f[0]===E)h=f[1];else while(c=++p&&c&&c[v]||(h=p=0)||d.pop())if((u?c.nodeName.toLowerCase()===g:c.nodeType===1)&&++h){b&&((c[y]||(c[y]={}))[e]=[E,h]);if(c===t)break}return h-=i,h===r||h%r===0&&h/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[y]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=H.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=u(e.replace(U,"$1"));return r[y]?ot(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:ot(function(e){return function(t){return at(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),lang:ot(function(e){return J.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(tt,nt).toLowerCase(),function(t){var n;do if(n=p?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||n.indexOf(e+"-")===0;while((t=t.parentNode)&&t.nodeType===1);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===c.activeElement&&(!c.hasFocus||c.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||e.nodeType===3||e.nodeType===4)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Z.test(e.nodeName)},input:function(e){return Y.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},text:function(e){var t;return e.nodeName.toLowerCase()==="input"&&e.type==="text"&&((t=e.getAttribute("type"))==null||t.toLowerCase()===e.type)},first:dt(function(){return[0]}),last:dt(function(e,t){return[t-1]}),eq:dt(function(e,t,n){return[n<0?n+t:n]}),even:dt(function(e,t){var n=0;for(;n=0;)e.push(r);return e}),gt:dt(function(e,t,n){var r=n<0?n+t:n;for(;++r";if(e.firstChild.getAttribute("href")!=="#"){var t="type|href|height|width".split("|"),n=t.length;while(n--)i.attrHandle[t[n]]=ct}}),ut(function(e){if(e.getAttribute("disabled")!=null){var t=B.split("|"),n=t.length;while(n--)i.attrHandle[t[n]]=lt}}),jQuery.find=at,jQuery.expr=at.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.unique=at.uniqueSort,jQuery.text=at.getText,jQuery.isXMLDoc=at.isXML,jQuery.contains=at.contains}(window);var optionsCache={};jQuery.Callbacks=function(e){e=typeof e=="string"?optionsCache[e]||createOptions(e):jQuery.extend({},e);var t,n,r,i,s,o,u=[],a=!e.once&&[],f=function(c){t=e.memory&&c,n=!0,o=i||0,i=0,s=u.length,r=!0;for(;u&&o-1)u.splice(n,1),r&&(n<=s&&s--,n<=o&&o--)}),this},has:function(e){return e?jQuery.inArray(e,u)>-1:!!u&&!!u.length},empty:function(){return u=[],s=0,this},disable:function(){return u=a=t=undefined,this},disabled:function(){return!u},lock:function(){return a=undefined,t||l.disable(),this},locked:function(){return!a},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],u&&(!n||a)&&(r?a.push(t):f(t)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!n}};return l},jQuery.extend({Deferred:function(e){var t=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return jQuery.Deferred(function(n){jQuery.each(t,function(t,s){var o=s[0],u=jQuery.isFunction(e[t])&&e[t];i[s[1]](function(){var e=u&&u.apply(this,arguments);e&&jQuery.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o+"With"](this===r?n.promise():this,u?[e]:arguments)})}),e=null}).promise()},promise:function(e){return e!=null?jQuery.extend(e,r):r}},i={};return r.pipe=r.then,jQuery.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=function(){return i[s[0]+"With"](this===i?r:this,arguments),this},i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=core_slice.call(arguments),r=n.length,i=r!==1||e&&jQuery.isFunction(e.promise)?r:0,s=i===1?e:jQuery.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?core_slice.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t1,null,!0)},removeData:function(e){return this.each(function(){data_user.remove(this,e)})}}),jQuery.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=data_priv.get(e,t),n&&(!r||jQuery.isArray(n)?r=data_priv.access(e,t,jQuery.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=jQuery.queue(e,t),r=n.length,i=n.shift(),s=jQuery._queueHooks(e,t),o=function(){jQuery.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),s.cur=i,i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return data_priv.get(e,n)||data_priv.access(e,n,{empty:jQuery.Callbacks("once memory").add(function(){data_priv.remove(e,[t+"queue",n])})})}}),jQuery.fn.extend({queue:function(e,t){var n=2;return typeof e!="string"&&(t=e,e="fx",n--),arguments.length1)},removeAttr:function(e){return this.each(function(){jQuery.removeAttr(this,e)})},prop:function(e,t){return jQuery.access(this,jQuery.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[jQuery.propFix[e]||e]})},addClass:function(e){var t,n,r,i,s,o=0,u=this.length,a=typeof e=="string"&&e;if(jQuery.isFunction(e))return this.each(function(t){jQuery(this).addClass(e.call(this,t,this.className))});if(a){t=(e||"").match(core_rnotwhite)||[];for(;o=0)r=r.replace(" "+i+" "," ");n.className=e?jQuery.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return jQuery.isFunction(e)?this.each(function(n){jQuery(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=jQuery(this),u=t,a=e.match(core_rnotwhite)||[];while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n===core_strundefined||n==="boolean")this.className&&data_priv.set(this,"__className__",this.className),this.className=this.className||e===!1?"":data_priv.get(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];if(!arguments.length){if(i)return t=jQuery.valHooks[i.type]||jQuery.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,typeof n=="string"?n.replace(rreturn,""):n==null?"":n);return}return r=jQuery.isFunction(e),this.each(function(n){var i,s=jQuery(this);if(this.nodeType!==1)return;r?i=e.call(this,n,s.val()):i=e,i==null?i="":typeof i=="number"?i+="":jQuery.isArray(i)&&(i=jQuery.map(i,function(e){return e==null?"":e+""})),t=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!t||!("set"in t)||t.set(this,i,"value")===undefined)this.value=i})}}),jQuery.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0)n=!0}return n||(e.selectedIndex=-1),s}}},attr:function(e,t,n){var r,i,s=e.nodeType;if(!e||s===3||s===8||s===2)return;if(typeof e.getAttribute===core_strundefined)return jQuery.prop(e,t,n);if(s!==1||!jQuery.isXMLDoc(e))t=t.toLowerCase(),r=jQuery.attrHooks[t]||(jQuery.expr.match.boolean.test(t)?boolHook:nodeHook);if(n===undefined)return r&&"get"in r&&(i=r.get(e,t))!==null?i:(i=jQuery.find.attr(e,t),i==null?undefined:i);if(n!==null)return r&&"set"in r&&(i=r.set(e,n,t))!==undefined?i:(e.setAttribute(t,n+""),n);jQuery.removeAttr(e,t)},removeAttr:function(e,t){var n,r,i=0,s=t&&t.match(core_rnotwhite);if(s&&e.nodeType===1)while(n=s[i++])r=jQuery.propFix[n]||n,jQuery.expr.match.boolean.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!jQuery.support.radioValue&&t==="radio"&&jQuery.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,s,o=e.nodeType;if(!e||o===3||o===8||o===2)return;return s=o!==1||!jQuery.isXMLDoc(e),s&&(t=jQuery.propFix[t]||t,i=jQuery.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&(r=i.get(e,t))!==null?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||rfocusable.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),boolHook={set:function(e,t,n){return t===!1?jQuery.removeAttr(e,n):e.setAttribute(n,n),n}},jQuery.each(jQuery.expr.match.boolean.source.match(/\w+/g),function(e,t){var n=jQuery.expr.attrHandle[t]||jQuery.find.attr;jQuery.expr.attrHandle[t]=function(e,t,r){var i=jQuery.expr.attrHandle[t],s=r?undefined:(jQuery.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return jQuery.expr.attrHandle[t]=i,s}}),jQuery.support.optSelected||(jQuery.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(e,t){if(jQuery.isArray(t))return e.checked=jQuery.inArray(jQuery(e).val(),t)>=0}},jQuery.support.checkOn||(jQuery.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})});var rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|contextmenu)|click/,rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,rtypenamespace=/^([^.]*)(?:\.(.+)|)$/;jQuery.event={global:{},add:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,v,m=data_priv.get(e);if(!m)return;n.handler&&(s=n,n=s.handler,i=s.selector),n.guid||(n.guid=jQuery.guid++),(a=m.events)||(a=m.events={}),(o=m.handle)||(o=m.handle=function(e){return typeof jQuery===core_strundefined||!!e&&jQuery.event.triggered===e.type?undefined:jQuery.event.dispatch.apply(o.elem,arguments)},o.elem=e),t=(t||"").match(core_rnotwhite)||[""],f=t.length;while(f--){u=rtypenamespace.exec(t[f])||[],p=v=u[1],d=(u[2]||"").split(".").sort();if(!p)continue;c=jQuery.event.special[p]||{},p=(i?c.delegateType:c.bindType)||p,c=jQuery.event.special[p]||{},l=jQuery.extend({type:p,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&jQuery.expr.match.needsContext.test(i),namespace:d.join(".")},s),(h=a[p])||(h=a[p]=[],h.delegateCount=0,(!c.setup||c.setup.call(e,r,d,o)===!1)&&e.addEventListener&&e.addEventListener(p,o,!1)),c.add&&(c.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,l):h.push(l),jQuery.event.global[p]=!0}e=null},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,v,m=data_priv.hasData(e)&&data_priv.get(e);if(!m||!(a=m.events))return;t=(t||"").match(core_rnotwhite)||[""],f=t.length;while(f--){u=rtypenamespace.exec(t[f])||[],p=v=u[1],d=(u[2]||"").split(".").sort();if(!p){for(p in a)jQuery.event.remove(e,p+t[f],n,r,!0);continue}c=jQuery.event.special[p]||{},p=(r?c.delegateType:c.bindType)||p,h=a[p]||[],u=u[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=s=h.length;while(s--)l=h[s],(i||v===l.origType)&&(!n||n.guid===l.guid)&&(!u||u.test(l.namespace))&&(!r||r===l.selector||r==="**"&&l.selector)&&(h.splice(s,1),l.selector&&h.delegateCount--,c.remove&&c.remove.call(e,l));o&&!h.length&&((!c.teardown||c.teardown.call(e,d,m.handle)===!1)&&jQuery.removeEvent(e,p,m.handle),delete a[p])}jQuery.isEmptyObject(a)&&(delete m.handle,data_priv.remove(e,"events"))},trigger:function(e,t,n,r){var i,s,o,u,a,f,l,c=[n||document],h=core_hasOwn.call(e,"type")?e.type:e,p=core_hasOwn.call(e,"namespace")?e.namespace.split("."):[];s=o=n=n||document;if(n.nodeType===3||n.nodeType===8)return;if(rfocusMorph.test(h+jQuery.event.triggered))return;h.indexOf(".")>=0&&(p=h.split("."),h=p.shift(),p.sort()),a=h.indexOf(":")<0&&"on"+h,e=e[jQuery.expando]?e:new jQuery.Event(h,typeof e=="object"&&e),e.isTrigger=r?2:3,e.namespace=p.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=undefined,e.target||(e.target=n),t=t==null?[e]:jQuery.makeArray(t,[e]),l=jQuery.event.special[h]||{};if(!r&&l.trigger&&l.trigger.apply(n,t)===!1)return;if(!r&&!l.noBubble&&!jQuery.isWindow(n)){u=l.delegateType||h,rfocusMorph.test(u+h)||(s=s.parentNode);for(;s;s=s.parentNode)c.push(s),o=s;o===(n.ownerDocument||document)&&c.push(o.defaultView||o.parentWindow||window)}i=0;while((s=c[i++])&&!e.isPropagationStopped())e.type=i>1?u:l.bindType||h,f=(data_priv.get(s,"events")||{})[e.type]&&data_priv.get(s,"handle"),f&&f.apply(s,t),f=a&&s[a],f&&jQuery.acceptData(s)&&f.apply&&f.apply(s,t)===!1&&e.preventDefault();return e.type=h,!r&&!e.isDefaultPrevented()&&(!l._default||l._default.apply(c.pop(),t)===!1)&&jQuery.acceptData(n)&&a&&jQuery.isFunction(n[h])&&!jQuery.isWindow(n)&&(o=n[a],o&&(n[a]=null),jQuery.event.triggered=h,n[h](),jQuery.event.triggered=undefined,o&&(n[a]=o)),e.result},dispatch:function(e){e=jQuery.event.fix(e);var t,n,r,i,s,o=[],u=core_slice.call(arguments),a=(data_priv.get(this,"events")||{})[e.type]||[],f=jQuery.event.special[e.type]||{};u[0]=e,e.delegateTarget=this;if(f.preDispatch&&f.preDispatch.call(this,e)===!1)return;o=jQuery.event.handlers.call(this,e,a),t=0;while((i=o[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((s=i.handlers[n++])&&!e.isImmediatePropagationStopped())if(!e.namespace_re||e.namespace_re.test(s.namespace))e.handleObj=s,e.data=s.data,r=((jQuery.event.special[s.origType]||{}).handle||s.handler).apply(i.elem,u),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation())}return f.postDispatch&&f.postDispatch.call(this,e),e.result},handlers:function(e,t){var n,r,i,s,o=[],u=t.delegateCount,a=e.target;if(u&&a.nodeType&&(!e.button||e.type!=="click"))for(;a!==this;a=a.parentNode||this)if(a.disabled!==!0||e.type!=="click"){r=[];for(n=0;n=0:jQuery.find(i,this,null,[a]).length),r[i]&&r.push(s);r.length&&o.push({elem:a,handlers:r})}return u1?jQuery.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t=jQuery(e,this),n=t.length;return this.filter(function(){var e=0;for(;e=0:jQuery.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=rneedsContext.test(e)||typeof e!="string"?jQuery(e,t||this.context):0;for(;r-1:n.nodeType===1&&jQuery.find.matchesSelector(n,e))){n=s.push(n);break}return this.pushStack(s.length>1?jQuery.unique(s):s)},index:function(e){return e?typeof e=="string"?core_indexOf.call(jQuery(e),this[0]):core_indexOf.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?jQuery(e,t):jQuery.makeArray(e&&e.nodeType?[e]:e),r=jQuery.merge(this.get(),n);return this.pushStack(jQuery.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),jQuery.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return jQuery.dir(e,"parentNode")},parentsUntil:function(e,t,n){return jQuery.dir(e,"parentNode",n)},next:function(e){return sibling(e,"nextSibling")},prev:function(e){return sibling(e,"previousSibling")},nextAll:function(e){return jQuery.dir(e,"nextSibling")},prevAll:function(e){return jQuery.dir(e,"previousSibling")},nextUntil:function(e,t,n){return jQuery.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return jQuery.dir(e,"previousSibling",n)},siblings:function(e){return jQuery.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return jQuery.sibling(e.firstChild)},contents:function(e){return jQuery.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:jQuery.merge([],e.childNodes)}},function(e,t){jQuery.fn[e]=function(n,r){var i=jQuery.map(this,t,n);return e.slice(-5)!=="Until"&&(r=n),r&&typeof r=="string"&&(i=jQuery.filter(r,i)),this.length>1&&(guaranteedUnique[e]||jQuery.unique(i),e[0]==="p"&&i.reverse()),this.pushStack(i)}}),jQuery.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),t.length===1&&r.nodeType===1?jQuery.find.matchesSelector(r,e)?[r]:[]:jQuery.find.matches(e,jQuery.grep(t,function(e){return e.nodeType===1}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&e.nodeType!==9)if(e.nodeType===1){if(i&&jQuery(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rtagName=/<([\w:]+)/,rhtml=/<|&#?\w+;/,rnoInnerhtml=/<(?:script|style|link)/i,manipulation_rcheckableType=/^(?:checkbox|radio)$/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rscriptType=/^$|\/(?:java|ecma)script/i,rscriptTypeMasked=/^true\/(.*)/,rcleanScript=/^\s*\s*$/g,wrapMap={option:[1,""],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.col=wrapMap.thead,wrapMap.th=wrapMap.td,jQuery.fn.extend({text:function(e){return jQuery.access(this,function(e){return e===undefined?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=manipulationTarget(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=manipulationTarget(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?jQuery.filter(e,this):this,i=0;for(;(n=r[i])!=null;i++)!t&&n.nodeType===1&&jQuery.cleanData(getAll(n)),n.parentNode&&(t&&jQuery.contains(n.ownerDocument,n)&&setGlobalEval(getAll(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++)e.nodeType===1&&(jQuery.cleanData(getAll(e,!1)),e.textContent="");return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return jQuery.clone(this,e,t)})},html:function(e){return jQuery.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&t.nodeType===1)return t.innerHTML;if(typeof e=="string"&&!rnoInnerhtml.test(e)&&!wrapMap[(rtagName.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(rxhtmlTag,"<$1>");try{for(;n0&&setGlobalEval(o,!a&&getAll(e,"script")),u},buildFragment:function(e,t,n,r){var i,s,o,u,a,f,l=0,c=e.length,h=t.createDocumentFragment(),p=[];for(;l")+u[2],f=u[0];while(f--)s=s.firstChild;jQuery.merge(p,s.childNodes),s=h.firstChild,s.textContent=""}}h.textContent="",l=0;while(i=p[l++]){if(r&&jQuery.inArray(i,r)!==-1)continue;a=jQuery.contains(i.ownerDocument,i),s=getAll(h.appendChild(i),"script"),a&&setGlobalEval(s);if(n){f=0;while(i=s[f++])rscriptType.test(i.type||"")&&n.push(i)}}return h},cleanData:function(e){var t,n,r,i=e.length,s=0,o=jQuery.event.special;for(;s1)},show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(e){var t=typeof e=="boolean";return this.each(function(){(t?e:isHidden(this))?jQuery(this).show():jQuery(this).hide()})}}),jQuery.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=curCSS(e,"opacity");return n===""?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var i,s,o,u=jQuery.camelCase(t),a=e.style;t=jQuery.cssProps[u]||(jQuery.cssProps[u]=vendorPropName(a,u)),o=jQuery.cssHooks[t]||jQuery.cssHooks[u];if(n===undefined)return o&&"get"in o&&(i=o.get(e,!1,r))!==undefined?i:a[t];s=typeof n,s==="string"&&(i=rrelNum.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(jQuery.css(e,t)),s="number");if(n==null||s==="number"&&isNaN(n))return;s==="number"&&!jQuery.cssNumber[u]&&(n+="px"),!jQuery.support.clearCloneStyle&&n===""&&t.indexOf("background")===0&&(a[t]="inherit");if(!o||!("set"in o)||(n=o.set(e,n,r))!==undefined)a[t]=n},css:function(e,t,n,r){var i,s,o,u=jQuery.camelCase(t);return t=jQuery.cssProps[u]||(jQuery.cssProps[u]=vendorPropName(e.style,u)),o=jQuery.cssHooks[t]||jQuery.cssHooks[u],o&&"get"in o&&(i=o.get(e,!0,n)),i===undefined&&(i=curCSS(e,t,r)),i==="normal"&&t in cssNormalTransform&&(i=cssNormalTransform[t]),n===""||n?(s=parseFloat(i),n===!0||jQuery.isNumeric(s)?s||0:i):i}}),curCSS=function(e,t,n){var r,i,s,o=n||getStyles(e),u=o?o.getPropertyValue(t)||o[t]:undefined,a=e.style;return o&&(u===""&&!jQuery.contains(e.ownerDocument,e)&&(u=jQuery.style(e,t)),rnumnonpx.test(u)&&rmargin.test(t)&&(r=a.width,i=a.minWidth,s=a.maxWidth,a.minWidth=a.maxWidth=a.width=u,u=o.width,a.width=r,a.minWidth=i,a.maxWidth=s)),u},jQuery.each(["height","width"],function(e,t){jQuery.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&rdisplayswap.test(jQuery.css(e,"display"))?jQuery.swap(e,cssShow,function(){return getWidthOrHeight(e,t,r)}):getWidthOrHeight(e,t,r)},set:function(e,n,r){var i=r&&getStyles(e);return setPositiveNumber(e,n,r?augmentWidthOrHeight(e,t,r,jQuery.support.boxSizing&&jQuery.css(e,"boxSizing",!1,i)==="border-box",i):0)}}}),jQuery(function(){jQuery.support.reliableMarginRight||(jQuery.cssHooks.marginRight={get:function(e,t){if(t)return jQuery.swap(e,{display:"inline-block"},curCSS,[e,"marginRight"])}}),!jQuery.support.pixelPosition&&jQuery.fn.position&&jQuery.each(["top","left"],function(e,t){jQuery.cssHooks[t]={get:function(e,n){if(n)return n=curCSS(e,t),rnumnonpx.test(n)?jQuery(e).position()[t]+"px":n}}})}),jQuery.expr&&jQuery.expr.filters&&(jQuery.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0},jQuery.expr.filters.visible=function(e){return!jQuery.expr.filters.hidden(e)}),jQuery.each({margin:"",padding:"",border:"Width"},function(e,t){jQuery.cssHooks[e+t]={expand:function(n){var r=0,i={},s=typeof n=="string"?n.split(" "):[n];for(;r<4;r++)i[e+cssExpand[r]+t]=s[r]||s[r-2]||s[0];return i}},rmargin.test(e)||(jQuery.cssHooks[e+t].set=setPositiveNumber)});var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=jQuery.prop(this,"elements");return e?jQuery.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(e)&&(this.checked||!manipulation_rcheckableType.test(e))}).map(function(e,t){var n=jQuery(this).val();return n==null?null:jQuery.isArray(n)?jQuery.map(n,function(e){return{name:t.name,value:e.replace(rCRLF,"\r\n")}}):{name:t.name,value:n.replace(rCRLF,"\r\n")}}).get()}}),jQuery.param=function(e,t){var n,r=[],i=function(e,t){t=jQuery.isFunction(t)?t():t==null?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};t===undefined&&(t=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional);if(jQuery.isArray(e)||e.jquery&&!jQuery.isPlainObject(e))jQuery.each(e,function(){i(this.name,this.value)});else for(n in e)buildParams(n,e[n],t,i);return r.join("&").replace(r20,"+")},jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){jQuery.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),jQuery.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)}});var ajaxLocParts,ajaxLocation,ajax_nonce=jQuery.now(),ajax_rquery=/\?/,rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/mg,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,_load=jQuery.fn.load,prefilters={},transports={},allTypes="*/".concat("*");try{ajaxLocation=location.href}catch(e){ajaxLocation=document.createElement("a"),ajaxLocation.href="",ajaxLocation=ajaxLocation.href}ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[],jQuery.fn.load=function(e,t,n){if(typeof e!="string"&&_load)return _load.apply(this,arguments);var r,i,s,o=this,u=e.indexOf(" ");return u>=0&&(r=e.slice(u),e=e.slice(0,u)),jQuery.isFunction(t)?(n=t,t=undefined):t&&typeof t=="object"&&(i="POST"),o.length>0&&jQuery.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){s=arguments,o.html(r?jQuery("
").append(jQuery.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){o.each(n,s||[e.responseText,t,e])}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){jQuery.fn[t]=function(e){return this.on(t,e)}}),jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ajaxExtend(ajaxExtend(e,jQuery.ajaxSettings),t):ajaxExtend(jQuery.ajaxSettings,e)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(e,t){function S(e,t,s,u){var f,m,g,b,E,S=t;if(y===2)return;y=2,o&&clearTimeout(o),n=undefined,i=u||"",w.readyState=e>0?4:0,f=e>=200&&e<300||e===304,s&&(b=ajaxHandleResponses(l,w,s)),b=ajaxConvert(l,b,w,f);if(f)l.ifModified&&(E=w.getResponseHeader("Last-Modified"),E&&(jQuery.lastModified[r]=E),E=w.getResponseHeader("etag"),E&&(jQuery.etag[r]=E)),e===204?S="nocontent":e===304?S="notmodified":(S=b.state,m=b.data,g=b.error,f=!g);else{g=S;if(e||!S)S="error",e<0&&(e=0)}w.status=e,w.statusText=(t||S)+"",f?p.resolveWith(c,[m,S,w]):p.rejectWith(c,[w,S,g]),w.statusCode(v),v=undefined,a&&h.trigger(f?"ajaxSuccess":"ajaxError",[w,l,f?m:g]),d.fireWith(c,[w,S]),a&&(h.trigger("ajaxComplete",[w,l]),--jQuery.active||jQuery.event.trigger("ajaxStop"))}typeof e=="object"&&(t=e,e=undefined),t=t||{};var n,r,i,s,o,u,a,f,l=jQuery.ajaxSetup({},t),c=l.context||l,h=l.context&&(c.nodeType||c.jquery)?jQuery(c):jQuery.event,p=jQuery.Deferred(),d=jQuery.Callbacks("once memory"),v=l.statusCode||{},m={},g={},y=0,b="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(y===2){if(!s){s={};while(t=rheaders.exec(i))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return t==null?null:t},getAllResponseHeaders:function(){return y===2?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return y||(e=g[n]=g[n]||e,m[e]=t),this},overrideMimeType:function(e){return y||(l.mimeType=e),this},statusCode:function(e){var t;if(e)if(y<2)for(t in e)v[t]=[v[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),S(0,t),this}};p.promise(w).complete=d.add,w.success=w.done,w.error=w.fail,l.url=((e||l.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//"),l.type=t.method||t.type||l.method||l.type,l.dataTypes=jQuery.trim(l.dataType||"*").toLowerCase().match(core_rnotwhite)||[""],l.crossDomain==null&&(u=rurl.exec(l.url.toLowerCase()),l.crossDomain=!(!u||u[1]===ajaxLocParts[1]&&u[2]===ajaxLocParts[2]&&(u[3]||(u[1]==="http:"?"80":"443"))===(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?"80":"443")))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=jQuery.param(l.data,l.traditional)),inspectPrefiltersOrTransports(prefilters,l,t,w);if(y===2)return w;a=l.global,a&&jQuery.active++===0&&jQuery.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!rnoContent.test(l.type),r=l.url,l.hasContent||(l.data&&(r=l.url+=(ajax_rquery.test(r)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=rts.test(r)?r.replace(rts,"$1_="+ajax_nonce++):r+(ajax_rquery.test(r)?"&":"?")+"_="+ajax_nonce++)),l.ifModified&&(jQuery.lastModified[r]&&w.setRequestHeader("If-Modified-Since",jQuery.lastModified[r]),jQuery.etag[r]&&w.setRequestHeader("If-None-Match",jQuery.etag[r])),(l.data&&l.hasContent&&l.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):l.accepts["*"]);for(f in l.headers)w.setRequestHeader(f,l.headers[f]);if(!l.beforeSend||l.beforeSend.call(c,w,l)!==!1&&y!==2){b="abort";for(f in{success:1,error:1,complete:1})w[f](l[f]);n=inspectPrefiltersOrTransports(transports,l,t,w);if(!n)S(-1,"No Transport");else{w.readyState=1,a&&h.trigger("ajaxSend",[w,l]),l.async&&l.timeout>0&&(o=setTimeout(function(){w.abort("timeout")},l.timeout));try{y=1,n.send(m,S)}catch(E){if(!(y<2))throw E;S(-1,E)}}return w}return w.abort()},getJSON:function(e,t,n){return jQuery.get(e,t,n,"json")},getScript:function(e,t){return jQuery.get(e,undefined,t,"script")}}),jQuery.each(["get","post"],function(e,t){jQuery[t]=function(e,n,r,i){return jQuery.isFunction(n)&&(i=i||r,r=n,n=undefined),jQuery.ajax({url:e,type:t,dataType:i,data:n,success:r})}}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return jQuery.globalEval(e),e}}}),jQuery.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),jQuery.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=jQuery(" + + + + + + + + + + + diff --git a/public_html/css/edt.css b/public_html/css/edt.css new file mode 100644 index 0000000..ec8577d --- /dev/null +++ b/public_html/css/edt.css @@ -0,0 +1,126 @@ +@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400); + + +$blue: #3498db; +$purple: #9b59b6; +$navy: #ff00ff; +$green: #2ecc71; +$red: #e74c3c; +$orange: #f39c12; + +.blue { background: $blue } +.purple { background: $purple } +.navy { background: #00ffff; } +.green { background: $green } +.red { background: $red } +.orange { background: $orange } + +td { + padding : 7px 1px; + border-radius: 0px; +} + +.cs335, .cs426, .md303, .md352, .md313, .cs240 { + font-weight: 300; + cursor:pointer; +} + +*, *:before, *:after { + margin:0; padding:0; border:0; outline: 0; + @include box-sizing(border-box); +} + +table { + font-family: 'Open Sans', Helvetica; + color: black; + + + tr { + + &:nth-child(2n){ + background: #eff0f1; + } + + &:nth-child(2n+3){ + background: #fff; + } + } + + th, td { + padding: 1em; + width: 10em; + } +} + +.days, .time { + background: $navy; + text-transform: uppercase; + font-size: 0.8em; + text-align: center; +} + +.time { + width: 3em!important; + padding-right: 5px; +} + + +// Tooltip Stuff by Chris Bracco +/* Add this attribute to the element that needs a tooltip */ +[data-tooltip] { + position: relative; + z-index: 2; + cursor: pointer; + +} + +/* Hide the tooltip content by default */ +[data-tooltip]:before, +[data-tooltip]:after { + visibility: hidden; + @include opacity(0); + pointer-events: none; + @include transition(0.5s ease all); +} + +/* Position tooltip above the element */ +[data-tooltip]:before { + position: absolute; + bottom: 110%; + left: 50%; + margin-bottom: 5px; + margin-left: -80px; + padding: 7px; + width: 160px; + @include border-radius(6px); + + background-color: black; + color: #fff; + content: attr(data-tooltip); + text-align: center; + font-size: 14px; + line-height: 1.2; +} + +/* Triangle hack to make tooltip look like a speech bubble */ +[data-tooltip]:after { + position: absolute; + bottom: 110%; + left: 50%; + margin-left: -5px; + width: 0; + border-top: 5px solid black; + border-right: 5px solid transparent; + border-left: 5px solid transparent; + content: " "; + font-size: 0; + line-height: 0; +} + +/* Show tooltip content on hover */ +[data-tooltip]:hover:before, +[data-tooltip]:hover:after { + visibility: visible; + bottom: 90%; + @include opacity(1); +} diff --git a/public_html/css/loadingbar.css b/public_html/css/loadingbar.css new file mode 100644 index 0000000..dbac5b3 --- /dev/null +++ b/public_html/css/loadingbar.css @@ -0,0 +1,22 @@ +.pace { + -webkit-pointer-events: none; + pointer-events: none; + + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pace-inactive { + display: none; +} + +.pace .pace-progress { + background: #fff; + position: fixed; + z-index: 2000; + top: 0; + right: 100%; + width: 100%; + height: 2px; +} \ No newline at end of file diff --git a/public_html/css/materialize.css b/public_html/css/materialize.css new file mode 100644 index 0000000..81041d2 --- /dev/null +++ b/public_html/css/materialize.css @@ -0,0 +1,8461 @@ +/*! + * Materialize v0.97.7 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red { + background-color: #e51c23 !important; +} + +.materialize-red-text { + color: #e51c23 !important; +} + +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; +} + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; +} + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; +} + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; +} + +.materialize-red.lighten-3 { + background-color: #f3989b !important; +} + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; +} + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; +} + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; +} + +.materialize-red.lighten-1 { + background-color: #ea454b !important; +} + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; +} + +.materialize-red.darken-1 { + background-color: #d0181e !important; +} + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; +} + +.materialize-red.darken-2 { + background-color: #b9151b !important; +} + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; +} + +.materialize-red.darken-3 { + background-color: #a21318 !important; +} + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; +} + +.materialize-red.darken-4 { + background-color: #8b1014 !important; +} + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; +} + +.red { + background-color: #F44336 !important; +} + +.red-text { + color: #F44336 !important; +} + +.red.lighten-5 { + background-color: #FFEBEE !important; +} + +.red-text.text-lighten-5 { + color: #FFEBEE !important; +} + +.red.lighten-4 { + background-color: #FFCDD2 !important; +} + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; +} + +.red.lighten-3 { + background-color: #EF9A9A !important; +} + +.red-text.text-lighten-3 { + color: #EF9A9A !important; +} + +.red.lighten-2 { + background-color: #E57373 !important; +} + +.red-text.text-lighten-2 { + color: #E57373 !important; +} + +.red.lighten-1 { + background-color: #EF5350 !important; +} + +.red-text.text-lighten-1 { + color: #EF5350 !important; +} + +.red.darken-1 { + background-color: #E53935 !important; +} + +.red-text.text-darken-1 { + color: #E53935 !important; +} + +.red.darken-2 { + background-color: #D32F2F !important; +} + +.red-text.text-darken-2 { + color: #D32F2F !important; +} + +.red.darken-3 { + background-color: #C62828 !important; +} + +.red-text.text-darken-3 { + color: #C62828 !important; +} + +.red.darken-4 { + background-color: #B71C1C !important; +} + +.red-text.text-darken-4 { + color: #B71C1C !important; +} + +.red.accent-1 { + background-color: #FF8A80 !important; +} + +.red-text.text-accent-1 { + color: #FF8A80 !important; +} + +.red.accent-2 { + background-color: #FF5252 !important; +} + +.red-text.text-accent-2 { + color: #FF5252 !important; +} + +.red.accent-3 { + background-color: #FF1744 !important; +} + +.red-text.text-accent-3 { + color: #FF1744 !important; +} + +.red.accent-4 { + background-color: #D50000 !important; +} + +.red-text.text-accent-4 { + color: #D50000 !important; +} + +.pink { + background-color: #e91e63 !important; +} + +.pink-text { + color: #e91e63 !important; +} + +.pink.lighten-5 { + background-color: #fce4ec !important; +} + +.pink-text.text-lighten-5 { + color: #fce4ec !important; +} + +.pink.lighten-4 { + background-color: #f8bbd0 !important; +} + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; +} + +.pink.lighten-3 { + background-color: #f48fb1 !important; +} + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; +} + +.pink.lighten-2 { + background-color: #f06292 !important; +} + +.pink-text.text-lighten-2 { + color: #f06292 !important; +} + +.pink.lighten-1 { + background-color: #ec407a !important; +} + +.pink-text.text-lighten-1 { + color: #ec407a !important; +} + +.pink.darken-1 { + background-color: #d81b60 !important; +} + +.pink-text.text-darken-1 { + color: #d81b60 !important; +} + +.pink.darken-2 { + background-color: #c2185b !important; +} + +.pink-text.text-darken-2 { + color: #c2185b !important; +} + +.pink.darken-3 { + background-color: #ad1457 !important; +} + +.pink-text.text-darken-3 { + color: #ad1457 !important; +} + +.pink.darken-4 { + background-color: #880e4f !important; +} + +.pink-text.text-darken-4 { + color: #880e4f !important; +} + +.pink.accent-1 { + background-color: #ff80ab !important; +} + +.pink-text.text-accent-1 { + color: #ff80ab !important; +} + +.pink.accent-2 { + background-color: #ff4081 !important; +} + +.pink-text.text-accent-2 { + color: #ff4081 !important; +} + +.pink.accent-3 { + background-color: #f50057 !important; +} + +.pink-text.text-accent-3 { + color: #f50057 !important; +} + +.pink.accent-4 { + background-color: #c51162 !important; +} + +.pink-text.text-accent-4 { + color: #c51162 !important; +} + +.purple { + background-color: #9c27b0 !important; +} + +.purple-text { + color: #9c27b0 !important; +} + +.purple.lighten-5 { + background-color: #f3e5f5 !important; +} + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; +} + +.purple.lighten-4 { + background-color: #e1bee7 !important; +} + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; +} + +.purple.lighten-3 { + background-color: #ce93d8 !important; +} + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; +} + +.purple.lighten-2 { + background-color: #ba68c8 !important; +} + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; +} + +.purple.lighten-1 { + background-color: #ab47bc !important; +} + +.purple-text.text-lighten-1 { + color: #ab47bc !important; +} + +.purple.darken-1 { + background-color: #8e24aa !important; +} + +.purple-text.text-darken-1 { + color: #8e24aa !important; +} + +.purple.darken-2 { + background-color: #7b1fa2 !important; +} + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; +} + +.purple.darken-3 { + background-color: #6a1b9a !important; +} + +.purple-text.text-darken-3 { + color: #6a1b9a !important; +} + +.purple.darken-4 { + background-color: #4a148c !important; +} + +.purple-text.text-darken-4 { + color: #4a148c !important; +} + +.purple.accent-1 { + background-color: #ea80fc !important; +} + +.purple-text.text-accent-1 { + color: #ea80fc !important; +} + +.purple.accent-2 { + background-color: #e040fb !important; +} + +.purple-text.text-accent-2 { + color: #e040fb !important; +} + +.purple.accent-3 { + background-color: #d500f9 !important; +} + +.purple-text.text-accent-3 { + color: #d500f9 !important; +} + +.purple.accent-4 { + background-color: #aa00ff !important; +} + +.purple-text.text-accent-4 { + color: #aa00ff !important; +} + +.deep-purple { + background-color: #673ab7 !important; +} + +.deep-purple-text { + color: #673ab7 !important; +} + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; +} + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; +} + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; +} + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; +} + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; +} + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; +} + +.deep-purple.lighten-2 { + background-color: #9575cd !important; +} + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; +} + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; +} + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; +} + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; +} + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; +} + +.deep-purple.darken-2 { + background-color: #512da8 !important; +} + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; +} + +.deep-purple.darken-3 { + background-color: #4527a0 !important; +} + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; +} + +.deep-purple.darken-4 { + background-color: #311b92 !important; +} + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; +} + +.deep-purple.accent-1 { + background-color: #b388ff !important; +} + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; +} + +.deep-purple.accent-2 { + background-color: #7c4dff !important; +} + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; +} + +.deep-purple.accent-3 { + background-color: #651fff !important; +} + +.deep-purple-text.text-accent-3 { + color: #651fff !important; +} + +.deep-purple.accent-4 { + background-color: #6200ea !important; +} + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; +} + +.indigo { + background-color: #3f51b5 !important; +} + +.indigo-text { + color: #3f51b5 !important; +} + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; +} + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; +} + +.indigo.lighten-4 { + background-color: #c5cae9 !important; +} + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; +} + +.indigo.lighten-3 { + background-color: #9fa8da !important; +} + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; +} + +.indigo.lighten-2 { + background-color: #7986cb !important; +} + +.indigo-text.text-lighten-2 { + color: #7986cb !important; +} + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; +} + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; +} + +.indigo.darken-1 { + background-color: #3949ab !important; +} + +.indigo-text.text-darken-1 { + color: #3949ab !important; +} + +.indigo.darken-2 { + background-color: #303f9f !important; +} + +.indigo-text.text-darken-2 { + color: #303f9f !important; +} + +.indigo.darken-3 { + background-color: #283593 !important; +} + +.indigo-text.text-darken-3 { + color: #283593 !important; +} + +.indigo.darken-4 { + background-color: #1a237e !important; +} + +.indigo-text.text-darken-4 { + color: #1a237e !important; +} + +.indigo.accent-1 { + background-color: #8c9eff !important; +} + +.indigo-text.text-accent-1 { + color: #8c9eff !important; +} + +.indigo.accent-2 { + background-color: #536dfe !important; +} + +.indigo-text.text-accent-2 { + color: #536dfe !important; +} + +.indigo.accent-3 { + background-color: #3d5afe !important; +} + +.indigo-text.text-accent-3 { + color: #3d5afe !important; +} + +.indigo.accent-4 { + background-color: #304ffe !important; +} + +.indigo-text.text-accent-4 { + color: #304ffe !important; +} + +.blue { + background-color: #2196F3 !important; +} + +.blue-text { + color: #2196F3 !important; +} + +.blue.lighten-5 { + background-color: #E3F2FD !important; +} + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; +} + +.blue.lighten-4 { + background-color: #BBDEFB !important; +} + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; +} + +.blue.lighten-3 { + background-color: #90CAF9 !important; +} + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; +} + +.blue.lighten-2 { + background-color: #64B5F6 !important; +} + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; +} + +.blue.lighten-1 { + background-color: #42A5F5 !important; +} + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; +} + +.blue.darken-1 { + background-color: #1E88E5 !important; +} + +.blue-text.text-darken-1 { + color: #1E88E5 !important; +} + +.blue.darken-2 { + background-color: #1976D2 !important; +} + +.blue-text.text-darken-2 { + color: #1976D2 !important; +} + +.blue.darken-3 { + background-color: #1565C0 !important; +} + +.blue-text.text-darken-3 { + color: #1565C0 !important; +} + +.blue.darken-4 { + background-color: #0D47A1 !important; +} + +.blue-text.text-darken-4 { + color: #0D47A1 !important; +} + +.blue.accent-1 { + background-color: #82B1FF !important; +} + +.blue-text.text-accent-1 { + color: #82B1FF !important; +} + +.blue.accent-2 { + background-color: #448AFF !important; +} + +.blue-text.text-accent-2 { + color: #448AFF !important; +} + +.blue.accent-3 { + background-color: #2979FF !important; +} + +.blue-text.text-accent-3 { + color: #2979FF !important; +} + +.blue.accent-4 { + background-color: #2962FF !important; +} + +.blue-text.text-accent-4 { + color: #2962FF !important; +} + +.light-blue { + background-color: #03a9f4 !important; +} + +.light-blue-text { + color: #03a9f4 !important; +} + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; +} + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; +} + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; +} + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; +} + +.light-blue.lighten-3 { + background-color: #81d4fa !important; +} + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; +} + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; +} + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; +} + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; +} + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; +} + +.light-blue.darken-1 { + background-color: #039be5 !important; +} + +.light-blue-text.text-darken-1 { + color: #039be5 !important; +} + +.light-blue.darken-2 { + background-color: #0288d1 !important; +} + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; +} + +.light-blue.darken-3 { + background-color: #0277bd !important; +} + +.light-blue-text.text-darken-3 { + color: #0277bd !important; +} + +.light-blue.darken-4 { + background-color: #01579b !important; +} + +.light-blue-text.text-darken-4 { + color: #01579b !important; +} + +.light-blue.accent-1 { + background-color: #80d8ff !important; +} + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; +} + +.light-blue.accent-2 { + background-color: #40c4ff !important; +} + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; +} + +.light-blue.accent-3 { + background-color: #00b0ff !important; +} + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; +} + +.light-blue.accent-4 { + background-color: #0091ea !important; +} + +.light-blue-text.text-accent-4 { + color: #0091ea !important; +} + +.cyan { + background-color: #00bcd4 !important; +} + +.cyan-text { + color: #00bcd4 !important; +} + +.cyan.lighten-5 { + background-color: #e0f7fa !important; +} + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; +} + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; +} + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; +} + +.cyan.lighten-3 { + background-color: #80deea !important; +} + +.cyan-text.text-lighten-3 { + color: #80deea !important; +} + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; +} + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; +} + +.cyan.lighten-1 { + background-color: #26c6da !important; +} + +.cyan-text.text-lighten-1 { + color: #26c6da !important; +} + +.cyan.darken-1 { + background-color: #00acc1 !important; +} + +.cyan-text.text-darken-1 { + color: #00acc1 !important; +} + +.cyan.darken-2 { + background-color: #0097a7 !important; +} + +.cyan-text.text-darken-2 { + color: #0097a7 !important; +} + +.cyan.darken-3 { + background-color: #00838f !important; +} + +.cyan-text.text-darken-3 { + color: #00838f !important; +} + +.cyan.darken-4 { + background-color: #006064 !important; +} + +.cyan-text.text-darken-4 { + color: #006064 !important; +} + +.cyan.accent-1 { + background-color: #84ffff !important; +} + +.cyan-text.text-accent-1 { + color: #84ffff !important; +} + +.cyan.accent-2 { + background-color: #18ffff !important; +} + +.cyan-text.text-accent-2 { + color: #18ffff !important; +} + +.cyan.accent-3 { + background-color: #00e5ff !important; +} + +.cyan-text.text-accent-3 { + color: #00e5ff !important; +} + +.cyan.accent-4 { + background-color: #00b8d4 !important; +} + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; +} + +.teal { + background-color: #009688 !important; +} + +.teal-text { + color: #009688 !important; +} + +.teal.lighten-5 { + background-color: #e0f2f1 !important; +} + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; +} + +.teal.lighten-4 { + background-color: #b2dfdb !important; +} + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; +} + +.teal.lighten-3 { + background-color: #80cbc4 !important; +} + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; +} + +.teal.lighten-2 { + background-color: #4db6ac !important; +} + +.teal-text.text-lighten-2 { + color: #4db6ac !important; +} + +.teal.lighten-1 { + background-color: #26a69a !important; +} + +.teal-text.text-lighten-1 { + color: #26a69a !important; +} + +.teal.darken-1 { + background-color: #00897b !important; +} + +.teal-text.text-darken-1 { + color: #00897b !important; +} + +.teal.darken-2 { + background-color: #00796b !important; +} + +.teal-text.text-darken-2 { + color: #00796b !important; +} + +.teal.darken-3 { + background-color: #00695c !important; +} + +.teal-text.text-darken-3 { + color: #00695c !important; +} + +.teal.darken-4 { + background-color: #004d40 !important; +} + +.teal-text.text-darken-4 { + color: #004d40 !important; +} + +.teal.accent-1 { + background-color: #a7ffeb !important; +} + +.teal-text.text-accent-1 { + color: #a7ffeb !important; +} + +.teal.accent-2 { + background-color: #64ffda !important; +} + +.teal-text.text-accent-2 { + color: #64ffda !important; +} + +.teal.accent-3 { + background-color: #1de9b6 !important; +} + +.teal-text.text-accent-3 { + color: #1de9b6 !important; +} + +.teal.accent-4 { + background-color: #00bfa5 !important; +} + +.teal-text.text-accent-4 { + color: #00bfa5 !important; +} + +.green { + background-color: #4CAF50 !important; +} + +.green-text { + color: #4CAF50 !important; +} + +.green.lighten-5 { + background-color: #E8F5E9 !important; +} + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; +} + +.green.lighten-4 { + background-color: #C8E6C9 !important; +} + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; +} + +.green.lighten-3 { + background-color: #A5D6A7 !important; +} + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; +} + +.green.lighten-2 { + background-color: #81C784 !important; +} + +.green-text.text-lighten-2 { + color: #81C784 !important; +} + +.green.lighten-1 { + background-color: #66BB6A !important; +} + +.green-text.text-lighten-1 { + color: #66BB6A !important; +} + +.green.darken-1 { + background-color: #43A047 !important; +} + +.green-text.text-darken-1 { + color: #43A047 !important; +} + +.green.darken-2 { + background-color: #388E3C !important; +} + +.green-text.text-darken-2 { + color: #388E3C !important; +} + +.green.darken-3 { + background-color: #2E7D32 !important; +} + +.green-text.text-darken-3 { + color: #2E7D32 !important; +} + +.green.darken-4 { + background-color: #1B5E20 !important; +} + +.green-text.text-darken-4 { + color: #1B5E20 !important; +} + +.green.accent-1 { + background-color: #B9F6CA !important; +} + +.green-text.text-accent-1 { + color: #B9F6CA !important; +} + +.green.accent-2 { + background-color: #69F0AE !important; +} + +.green-text.text-accent-2 { + color: #69F0AE !important; +} + +.green.accent-3 { + background-color: #00E676 !important; +} + +.green-text.text-accent-3 { + color: #00E676 !important; +} + +.green.accent-4 { + background-color: #00C853 !important; +} + +.green-text.text-accent-4 { + color: #00C853 !important; +} + +.light-green { + background-color: #8bc34a !important; +} + +.light-green-text { + color: #8bc34a !important; +} + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; +} + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; +} + +.light-green.lighten-4 { + background-color: #dcedc8 !important; +} + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; +} + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; +} + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; +} + +.light-green.lighten-2 { + background-color: #aed581 !important; +} + +.light-green-text.text-lighten-2 { + color: #aed581 !important; +} + +.light-green.lighten-1 { + background-color: #9ccc65 !important; +} + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; +} + +.light-green.darken-1 { + background-color: #7cb342 !important; +} + +.light-green-text.text-darken-1 { + color: #7cb342 !important; +} + +.light-green.darken-2 { + background-color: #689f38 !important; +} + +.light-green-text.text-darken-2 { + color: #689f38 !important; +} + +.light-green.darken-3 { + background-color: #558b2f !important; +} + +.light-green-text.text-darken-3 { + color: #558b2f !important; +} + +.light-green.darken-4 { + background-color: #33691e !important; +} + +.light-green-text.text-darken-4 { + color: #33691e !important; +} + +.light-green.accent-1 { + background-color: #ccff90 !important; +} + +.light-green-text.text-accent-1 { + color: #ccff90 !important; +} + +.light-green.accent-2 { + background-color: #b2ff59 !important; +} + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; +} + +.light-green.accent-3 { + background-color: #76ff03 !important; +} + +.light-green-text.text-accent-3 { + color: #76ff03 !important; +} + +.light-green.accent-4 { + background-color: #64dd17 !important; +} + +.light-green-text.text-accent-4 { + color: #64dd17 !important; +} + +.lime { + background-color: #cddc39 !important; +} + +.lime-text { + color: #cddc39 !important; +} + +.lime.lighten-5 { + background-color: #f9fbe7 !important; +} + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; +} + +.lime.lighten-4 { + background-color: #f0f4c3 !important; +} + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; +} + +.lime.lighten-3 { + background-color: #e6ee9c !important; +} + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; +} + +.lime.lighten-2 { + background-color: #dce775 !important; +} + +.lime-text.text-lighten-2 { + color: #dce775 !important; +} + +.lime.lighten-1 { + background-color: #d4e157 !important; +} + +.lime-text.text-lighten-1 { + color: #d4e157 !important; +} + +.lime.darken-1 { + background-color: #c0ca33 !important; +} + +.lime-text.text-darken-1 { + color: #c0ca33 !important; +} + +.lime.darken-2 { + background-color: #afb42b !important; +} + +.lime-text.text-darken-2 { + color: #afb42b !important; +} + +.lime.darken-3 { + background-color: #9e9d24 !important; +} + +.lime-text.text-darken-3 { + color: #9e9d24 !important; +} + +.lime.darken-4 { + background-color: #827717 !important; +} + +.lime-text.text-darken-4 { + color: #827717 !important; +} + +.lime.accent-1 { + background-color: #f4ff81 !important; +} + +.lime-text.text-accent-1 { + color: #f4ff81 !important; +} + +.lime.accent-2 { + background-color: #eeff41 !important; +} + +.lime-text.text-accent-2 { + color: #eeff41 !important; +} + +.lime.accent-3 { + background-color: #c6ff00 !important; +} + +.lime-text.text-accent-3 { + color: #c6ff00 !important; +} + +.lime.accent-4 { + background-color: #aeea00 !important; +} + +.lime-text.text-accent-4 { + color: #aeea00 !important; +} + +.yellow { + background-color: #ffeb3b !important; +} + +.yellow-text { + color: #ffeb3b !important; +} + +.yellow.lighten-5 { + background-color: #fffde7 !important; +} + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; +} + +.yellow.lighten-4 { + background-color: #fff9c4 !important; +} + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; +} + +.yellow.lighten-3 { + background-color: #fff59d !important; +} + +.yellow-text.text-lighten-3 { + color: #fff59d !important; +} + +.yellow.lighten-2 { + background-color: #fff176 !important; +} + +.yellow-text.text-lighten-2 { + color: #fff176 !important; +} + +.yellow.lighten-1 { + background-color: #ffee58 !important; +} + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; +} + +.yellow.darken-1 { + background-color: #fdd835 !important; +} + +.yellow-text.text-darken-1 { + color: #fdd835 !important; +} + +.yellow.darken-2 { + background-color: #fbc02d !important; +} + +.yellow-text.text-darken-2 { + color: #fbc02d !important; +} + +.yellow.darken-3 { + background-color: #f9a825 !important; +} + +.yellow-text.text-darken-3 { + color: #f9a825 !important; +} + +.yellow.darken-4 { + background-color: #f57f17 !important; +} + +.yellow-text.text-darken-4 { + color: #f57f17 !important; +} + +.yellow.accent-1 { + background-color: #ffff8d !important; +} + +.yellow-text.text-accent-1 { + color: #ffff8d !important; +} + +.yellow.accent-2 { + background-color: #ffff00 !important; +} + +.yellow-text.text-accent-2 { + color: #ffff00 !important; +} + +.yellow.accent-3 { + background-color: #ffea00 !important; +} + +.yellow-text.text-accent-3 { + color: #ffea00 !important; +} + +.yellow.accent-4 { + background-color: #ffd600 !important; +} + +.yellow-text.text-accent-4 { + color: #ffd600 !important; +} + +.amber { + background-color: #ffc107 !important; +} + +.amber-text { + color: #ffc107 !important; +} + +.amber.lighten-5 { + background-color: #fff8e1 !important; +} + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; +} + +.amber.lighten-4 { + background-color: #ffecb3 !important; +} + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; +} + +.amber.lighten-3 { + background-color: #ffe082 !important; +} + +.amber-text.text-lighten-3 { + color: #ffe082 !important; +} + +.amber.lighten-2 { + background-color: #ffd54f !important; +} + +.amber-text.text-lighten-2 { + color: #ffd54f !important; +} + +.amber.lighten-1 { + background-color: #ffca28 !important; +} + +.amber-text.text-lighten-1 { + color: #ffca28 !important; +} + +.amber.darken-1 { + background-color: #ffb300 !important; +} + +.amber-text.text-darken-1 { + color: #ffb300 !important; +} + +.amber.darken-2 { + background-color: #ffa000 !important; +} + +.amber-text.text-darken-2 { + color: #ffa000 !important; +} + +.amber.darken-3 { + background-color: #ff8f00 !important; +} + +.amber-text.text-darken-3 { + color: #ff8f00 !important; +} + +.amber.darken-4 { + background-color: #ff6f00 !important; +} + +.amber-text.text-darken-4 { + color: #ff6f00 !important; +} + +.amber.accent-1 { + background-color: #ffe57f !important; +} + +.amber-text.text-accent-1 { + color: #ffe57f !important; +} + +.amber.accent-2 { + background-color: #ffd740 !important; +} + +.amber-text.text-accent-2 { + color: #ffd740 !important; +} + +.amber.accent-3 { + background-color: #ffc400 !important; +} + +.amber-text.text-accent-3 { + color: #ffc400 !important; +} + +.amber.accent-4 { + background-color: #ffab00 !important; +} + +.amber-text.text-accent-4 { + color: #ffab00 !important; +} + +.orange { + background-color: #ff9800 !important; +} + +.orange-text { + color: #ff9800 !important; +} + +.orange.lighten-5 { + background-color: #fff3e0 !important; +} + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; +} + +.orange.lighten-4 { + background-color: #ffe0b2 !important; +} + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; +} + +.orange.lighten-3 { + background-color: #ffcc80 !important; +} + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; +} + +.orange.lighten-2 { + background-color: #ffb74d !important; +} + +.orange-text.text-lighten-2 { + color: #ffb74d !important; +} + +.orange.lighten-1 { + background-color: #ffa726 !important; +} + +.orange-text.text-lighten-1 { + color: #ffa726 !important; +} + +.orange.darken-1 { + background-color: #fb8c00 !important; +} + +.orange-text.text-darken-1 { + color: #fb8c00 !important; +} + +.orange.darken-2 { + background-color: #f57c00 !important; +} + +.orange-text.text-darken-2 { + color: #f57c00 !important; +} + +.orange.darken-3 { + background-color: #ef6c00 !important; +} + +.orange-text.text-darken-3 { + color: #ef6c00 !important; +} + +.orange.darken-4 { + background-color: #e65100 !important; +} + +.orange-text.text-darken-4 { + color: #e65100 !important; +} + +.orange.accent-1 { + background-color: #ffd180 !important; +} + +.orange-text.text-accent-1 { + color: #ffd180 !important; +} + +.orange.accent-2 { + background-color: #ffab40 !important; +} + +.orange-text.text-accent-2 { + color: #ffab40 !important; +} + +.orange.accent-3 { + background-color: #ff9100 !important; +} + +.orange-text.text-accent-3 { + color: #ff9100 !important; +} + +.orange.accent-4 { + background-color: #ff6d00 !important; +} + +.orange-text.text-accent-4 { + color: #ff6d00 !important; +} + +.deep-orange { + background-color: #ff5722 !important; +} + +.deep-orange-text { + color: #ff5722 !important; +} + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; +} + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; +} + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; +} + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; +} + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; +} + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; +} + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; +} + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; +} + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; +} + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; +} + +.deep-orange.darken-1 { + background-color: #f4511e !important; +} + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; +} + +.deep-orange.darken-2 { + background-color: #e64a19 !important; +} + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; +} + +.deep-orange.darken-3 { + background-color: #d84315 !important; +} + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; +} + +.deep-orange.darken-4 { + background-color: #bf360c !important; +} + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; +} + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; +} + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; +} + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; +} + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; +} + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; +} + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; +} + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; +} + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; +} + +.brown { + background-color: #795548 !important; +} + +.brown-text { + color: #795548 !important; +} + +.brown.lighten-5 { + background-color: #efebe9 !important; +} + +.brown-text.text-lighten-5 { + color: #efebe9 !important; +} + +.brown.lighten-4 { + background-color: #d7ccc8 !important; +} + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; +} + +.brown.lighten-3 { + background-color: #bcaaa4 !important; +} + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; +} + +.brown.lighten-2 { + background-color: #a1887f !important; +} + +.brown-text.text-lighten-2 { + color: #a1887f !important; +} + +.brown.lighten-1 { + background-color: #8d6e63 !important; +} + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; +} + +.brown.darken-1 { + background-color: #6d4c41 !important; +} + +.brown-text.text-darken-1 { + color: #6d4c41 !important; +} + +.brown.darken-2 { + background-color: #5d4037 !important; +} + +.brown-text.text-darken-2 { + color: #5d4037 !important; +} + +.brown.darken-3 { + background-color: #4e342e !important; +} + +.brown-text.text-darken-3 { + color: #4e342e !important; +} + +.brown.darken-4 { + background-color: #3e2723 !important; +} + +.brown-text.text-darken-4 { + color: #3e2723 !important; +} + +.blue-grey { + background-color: #607d8b !important; +} + +.blue-grey-text { + color: #607d8b !important; +} + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; +} + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; +} + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; +} + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; +} + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; +} + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; +} + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; +} + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; +} + +.blue-grey.lighten-1 { + background-color: #78909c !important; +} + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; +} + +.blue-grey.darken-1 { + background-color: #546e7a !important; +} + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; +} + +.blue-grey.darken-2 { + background-color: #455a64 !important; +} + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; +} + +.blue-grey.darken-3 { + background-color: #37474f !important; +} + +.blue-grey-text.text-darken-3 { + color: #37474f !important; +} + +.blue-grey.darken-4 { + background-color: #263238 !important; +} + +.blue-grey-text.text-darken-4 { + color: #263238 !important; +} + +.grey { + background-color: #9e9e9e !important; +} + +.grey-text { + color: #9e9e9e !important; +} + +.grey.lighten-5 { + background-color: #fafafa !important; +} + +.grey-text.text-lighten-5 { + color: #fafafa !important; +} + +.grey.lighten-4 { + background-color: #f5f5f5 !important; +} + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; +} + +.grey.lighten-3 { + background-color: #eeeeee !important; +} + +.grey-text.text-lighten-3 { + color: #eeeeee !important; +} + +.grey.lighten-2 { + background-color: #e0e0e0 !important; +} + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; +} + +.grey.lighten-1 { + background-color: #bdbdbd !important; +} + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; +} + +.grey.darken-1 { + background-color: #757575 !important; +} + +.grey-text.text-darken-1 { + color: #757575 !important; +} + +.grey.darken-2 { + background-color: #616161 !important; +} + +.grey-text.text-darken-2 { + color: #616161 !important; +} + +.grey.darken-3 { + background-color: #424242 !important; +} + +.grey-text.text-darken-3 { + color: #424242 !important; +} + +.grey.darken-4 { + background-color: #212121 !important; +} + +.grey-text.text-darken-4 { + color: #212121 !important; +} + +.black { + background-color: #000000 !important; +} + +.black-text { + color: #000000 !important; +} + +.white { + background-color: #FFFFFF !important; +} + +.white-text { + color: #FFFFFF !important; +} + +.transparent { + background-color: transparent !important; +} + +.transparent-text { + color: transparent !important; +} + +/* ========================================================================== + Materialize variables + ========================================================================== */ +/** + * Table of Contents: + * + * 1. Colors + * 2. Badges + * 3. Buttons + * 4. Cards + * 5. Collapsible + * 6. Chips + * 7. Date Picker + * 8. Dropdown + * 10. Forms + * 11. Global + * 12. Grid + * 13. Navigation Bar + * 14. Side Navigation + * 15. Photo Slider + * 16. Spinners | Loaders + * 17. Tabs + * 18. Tables + * 19. Toasts + * 20. Typography + * 21. Footer + * 22. Flow Text + * 23. Collections + * 24. Progress Bar + */ +/* 1. Colors + ========================================================================== */ +/* 2. Badges + ========================================================================== */ +/* 3. Buttons + ========================================================================== */ +/* 4. Cards + ========================================================================== */ +/* 5. Collapsible + ========================================================================== */ +/* 6. Chips + ========================================================================== */ +/* 7. Date Picker + ========================================================================== */ +/* 8. Dropdown + ========================================================================== */ +/* 9. Fonts + ========================================================================== */ +/* 10. Forms + ========================================================================== */ +/* 11. Global + ========================================================================== */ +/* 12. Grid + ========================================================================== */ +/* 13. Navigation Bar + ========================================================================== */ +/* 14. Side Navigation + ========================================================================== */ +/* 15. Photo Slider + ========================================================================== */ +/* 16. Spinners | Loaders + ========================================================================== */ +/* 17. Tabs + ========================================================================== */ +/* 18. Tables + ========================================================================== */ +/* 19. Toasts + ========================================================================== */ +/* 20. Typography + ========================================================================== */ +/* 21. Footer + ========================================================================== */ +/* 22. Flow Text + ========================================================================== */ +/* 23. Collections + ========================================================================== */ +/* 24. Progress Bar + ========================================================================== */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/** + * Remove default margin. + */ +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ +hr { + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + box-sizing: content-box; + /* 2 */ +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +html { + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +ul { + padding: 0; + list-style-type: none; +} + +ul.browser-default, +ul.browser-default li { + list-style-type: initial; +} + +ul li { + list-style-type: none; +} + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; +} + +.valign-wrapper { + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.valign-wrapper .valign { + display: block; +} + +.clearfix { + clear: both; +} + +.z-depth-0 { + box-shadow: none !important; +} + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} + +.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); +} + +.z-depth-2 { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.z-depth-3 { + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); +} + +.z-depth-4, .modal { + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); +} + +.z-depth-5 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); +} + +.hoverable { + transition: box-shadow .25s; + box-shadow: 0; +} + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; +} + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; +} + +i { + line-height: inherit; +} + +i.left { + float: left; + margin-right: 15px; +} + +i.right { + float: right; + margin-left: 15px; +} + +i.tiny { + font-size: 1rem; +} + +i.small { + font-size: 2rem; +} + +i.medium { + font-size: 4rem; +} + +i.large { + font-size: 6rem; +} + +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; +} + +.pagination li { + display: inline-block; + border-radius: 2px; + text-align: center; + vertical-align: top; + height: 30px; +} + +.pagination li a { + color: #444; + display: inline-block; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; +} + +.pagination li.active a { + color: #fff; +} + +.pagination li.active { + background-color: #ee6e73; +} + +.pagination li.disabled a { + cursor: default; + color: #999; +} + +.pagination li i { + font-size: 2rem; +} + +.pagination li.pages ul li { + display: inline-block; + float: none; +} + +@media only screen and (max-width: 992px) { + .pagination { + width: 100%; + } + .pagination li.prev, + .pagination li.next { + width: 10%; + } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; + } +} + +.breadcrumb { + font-size: 18px; + color: rgba(255, 255, 255, 0.7); +} + +.breadcrumb i, +.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"], +.breadcrumb i.material-icons { + display: inline-block; + float: left; + font-size: 24px; +} + +.breadcrumb:before { + content: '\E5CC'; + color: rgba(255, 255, 255, 0.7); + vertical-align: top; + display: inline-block; + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 25px; + margin: 0 10px 0 8px; + -webkit-font-smoothing: antialiased; +} + +.breadcrumb:first-child:before { + display: none; +} + +.breadcrumb:last-child { + color: #fff; +} + +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; +} + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; +} + +.parallax img { + display: none; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.pin-top, .pin-bottom { + position: relative; +} + +.pinned { + position: fixed !important; +} + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; +} + +.fade-in { + opacity: 0; + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; +} + +/********************* + Media Query Classes +**********************/ +@media only screen and (max-width: 600px) { + .hide-on-small-only, .hide-on-small-and-down { + display: none !important; + } +} + +@media only screen and (max-width: 992px) { + .hide-on-med-and-down { + display: none !important; + } +} + +@media only screen and (min-width: 601px) { + .hide-on-med-and-up { + display: none !important; + } +} + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .hide-on-med-only { + display: none !important; + } +} + +@media only screen and (min-width: 993px) { + .hide-on-large-only { + display: none !important; + } +} + +@media only screen and (min-width: 993px) { + .show-on-large { + display: block !important; + } +} + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: block !important; + } +} + +@media only screen and (max-width: 600px) { + .show-on-small { + display: block !important; + } +} + +@media only screen and (min-width: 601px) { + .show-on-medium-and-up { + display: block !important; + } +} + +@media only screen and (max-width: 992px) { + .show-on-medium-and-down { + display: block !important; + } +} + +@media only screen and (max-width: 600px) { + .center-on-small-only { + text-align: center; + } +} + +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: #ee6e73; +} + +footer.page-footer .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); +} + +table, th, td { + border: none; +} + +table { + width: 100%; + display: table; +} + +table.bordered > thead > tr, +table.bordered > tbody > tr { + border-bottom: 1px solid #d0d0d0; +} + +table.striped > tbody > tr:nth-child(odd) { + background-color: #f2f2f2; +} + +table.striped > tbody > tr > td { + border-radius: 0; +} + +table.highlight > tbody > tr { + transition: background-color .25s ease; +} + +table.highlight > tbody > tr:hover { + background-color: #f2f2f2; +} + +table.centered thead tr th, table.centered tbody tr td { + text-align: center; +} + +thead { + border-bottom: 1px solid #d0d0d0; +} + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +@media only screen and (max-width: 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ + } + table.responsive-table td:empty:before { + content: '\00a0'; + } + table.responsive-table th, + table.responsive-table td { + margin: 0; + vertical-align: top; + } + table.responsive-table th { + text-align: left; + } + table.responsive-table thead { + display: block; + float: left; + } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; + } + table.responsive-table thead tr th::before { + content: "\00a0"; + } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; + } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; + } + table.responsive-table th { + display: block; + text-align: right; + } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; + } + table.responsive-table tr { + padding: 0 10px; + } + table.responsive-table thead { + border: 0; + border-right: 1px solid #d0d0d0; + } + table.responsive-table.bordered th { + border-bottom: 0; + border-left: 0; + } + table.responsive-table.bordered td { + border-left: 0; + border-right: 0; + border-bottom: 0; + } + table.responsive-table.bordered tr { + border: 0; + } + table.responsive-table.bordered tbody tr { + border-right: 1px solid #d0d0d0; + } +} + +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; +} + +.collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; +} + +.collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; +} + +.collection .collection-item.avatar .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; +} + +.collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; +} + +.collection .collection-item.avatar .title { + font-size: 16px; +} + +.collection .collection-item.avatar p { + margin: 0; +} + +.collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; +} + +.collection .collection-item:last-child { + border-bottom: none; +} + +.collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; +} + +.collection .collection-item.active .secondary-content { + color: #fff; +} + +.collection a.collection-item { + display: block; + transition: .25s; + color: #26a69a; +} + +.collection a.collection-item:not(.active):hover { + background-color: #ddd; +} + +.collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; +} + +.collection.with-header .collection-item { + padding-left: 30px; +} + +.collection.with-header .collection-item.avatar { + padding-left: 72px; +} + +.secondary-content { + float: right; + color: #26a69a; +} + +.collapsible .collection { + margin: 0; + border: none; +} + +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: #757575; + position: absolute; + right: 15px; + box-sizing: border-box; +} + +span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; +} + +span.badge.new:after { + content: " new"; +} + +span.badge[data-badge-caption]::after { + content: " " attr(data-badge-caption); +} + +nav ul a span.badge { + position: static; + margin-left: 4px; + line-height: 0; +} + +.video-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; +} + +.video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; +} + +.progress .determinate { + position: absolute; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + transition: width .3s linear; +} + +.progress .indeterminate { + background-color: #26a69a; +} + +.progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; +} + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; +} + +.left-align { + text-align: left; +} + +.right-align { + text-align: right; +} + +.center, .center-align { + text-align: center; +} + +.left { + float: left !important; +} + +.right { + float: right !important; +} + +.no-select, input[type=range], +input[type=range] + .thumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.circle { + border-radius: 50%; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.no-padding { + padding: 0 !important; +} + +/* This is needed for some mobile phones to display the Google Icon font properly */ +.material-icons { + text-rendering: optimizeLegibility; + -webkit-font-feature-settings: 'liga'; + -moz-font-feature-settings: 'liga'; + font-feature-settings: 'liga'; +} + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; +} + +@media only screen and (min-width: 601px) { + .container { + width: 85%; + } +} + +@media only screen and (min-width: 993px) { + .container { + width: 70%; + } +} + +.container .row { + margin-left: -0.75rem; + margin-right: -0.75rem; +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.section.no-pad { + padding: 0; +} + +.section.no-pad-bot { + padding-bottom: 0; +} + +.section.no-pad-top { + padding-top: 0; +} + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +.row .col { + float: left; + box-sizing: border-box; + padding: 0 0.75rem; + min-height: 1px; +} + +.row .col[class*="push-"], .row .col[class*="pull-"] { + position: relative; +} + +.row .col.s1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.offset-s1 { + margin-left: 8.3333333333%; +} + +.row .col.pull-s1 { + right: 8.3333333333%; +} + +.row .col.push-s1 { + left: 8.3333333333%; +} + +.row .col.offset-s2 { + margin-left: 16.6666666667%; +} + +.row .col.pull-s2 { + right: 16.6666666667%; +} + +.row .col.push-s2 { + left: 16.6666666667%; +} + +.row .col.offset-s3 { + margin-left: 25%; +} + +.row .col.pull-s3 { + right: 25%; +} + +.row .col.push-s3 { + left: 25%; +} + +.row .col.offset-s4 { + margin-left: 33.3333333333%; +} + +.row .col.pull-s4 { + right: 33.3333333333%; +} + +.row .col.push-s4 { + left: 33.3333333333%; +} + +.row .col.offset-s5 { + margin-left: 41.6666666667%; +} + +.row .col.pull-s5 { + right: 41.6666666667%; +} + +.row .col.push-s5 { + left: 41.6666666667%; +} + +.row .col.offset-s6 { + margin-left: 50%; +} + +.row .col.pull-s6 { + right: 50%; +} + +.row .col.push-s6 { + left: 50%; +} + +.row .col.offset-s7 { + margin-left: 58.3333333333%; +} + +.row .col.pull-s7 { + right: 58.3333333333%; +} + +.row .col.push-s7 { + left: 58.3333333333%; +} + +.row .col.offset-s8 { + margin-left: 66.6666666667%; +} + +.row .col.pull-s8 { + right: 66.6666666667%; +} + +.row .col.push-s8 { + left: 66.6666666667%; +} + +.row .col.offset-s9 { + margin-left: 75%; +} + +.row .col.pull-s9 { + right: 75%; +} + +.row .col.push-s9 { + left: 75%; +} + +.row .col.offset-s10 { + margin-left: 83.3333333333%; +} + +.row .col.pull-s10 { + right: 83.3333333333%; +} + +.row .col.push-s10 { + left: 83.3333333333%; +} + +.row .col.offset-s11 { + margin-left: 91.6666666667%; +} + +.row .col.pull-s11 { + right: 91.6666666667%; +} + +.row .col.push-s11 { + left: 91.6666666667%; +} + +.row .col.offset-s12 { + margin-left: 100%; +} + +.row .col.pull-s12 { + right: 100%; +} + +.row .col.push-s12 { + left: 100%; +} + +@media only screen and (min-width: 601px) { + .row .col.m1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.offset-m1 { + margin-left: 8.3333333333%; + } + .row .col.pull-m1 { + right: 8.3333333333%; + } + .row .col.push-m1 { + left: 8.3333333333%; + } + .row .col.offset-m2 { + margin-left: 16.6666666667%; + } + .row .col.pull-m2 { + right: 16.6666666667%; + } + .row .col.push-m2 { + left: 16.6666666667%; + } + .row .col.offset-m3 { + margin-left: 25%; + } + .row .col.pull-m3 { + right: 25%; + } + .row .col.push-m3 { + left: 25%; + } + .row .col.offset-m4 { + margin-left: 33.3333333333%; + } + .row .col.pull-m4 { + right: 33.3333333333%; + } + .row .col.push-m4 { + left: 33.3333333333%; + } + .row .col.offset-m5 { + margin-left: 41.6666666667%; + } + .row .col.pull-m5 { + right: 41.6666666667%; + } + .row .col.push-m5 { + left: 41.6666666667%; + } + .row .col.offset-m6 { + margin-left: 50%; + } + .row .col.pull-m6 { + right: 50%; + } + .row .col.push-m6 { + left: 50%; + } + .row .col.offset-m7 { + margin-left: 58.3333333333%; + } + .row .col.pull-m7 { + right: 58.3333333333%; + } + .row .col.push-m7 { + left: 58.3333333333%; + } + .row .col.offset-m8 { + margin-left: 66.6666666667%; + } + .row .col.pull-m8 { + right: 66.6666666667%; + } + .row .col.push-m8 { + left: 66.6666666667%; + } + .row .col.offset-m9 { + margin-left: 75%; + } + .row .col.pull-m9 { + right: 75%; + } + .row .col.push-m9 { + left: 75%; + } + .row .col.offset-m10 { + margin-left: 83.3333333333%; + } + .row .col.pull-m10 { + right: 83.3333333333%; + } + .row .col.push-m10 { + left: 83.3333333333%; + } + .row .col.offset-m11 { + margin-left: 91.6666666667%; + } + .row .col.pull-m11 { + right: 91.6666666667%; + } + .row .col.push-m11 { + left: 91.6666666667%; + } + .row .col.offset-m12 { + margin-left: 100%; + } + .row .col.pull-m12 { + right: 100%; + } + .row .col.push-m12 { + left: 100%; + } +} + +@media only screen and (min-width: 993px) { + .row .col.l1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.offset-l1 { + margin-left: 8.3333333333%; + } + .row .col.pull-l1 { + right: 8.3333333333%; + } + .row .col.push-l1 { + left: 8.3333333333%; + } + .row .col.offset-l2 { + margin-left: 16.6666666667%; + } + .row .col.pull-l2 { + right: 16.6666666667%; + } + .row .col.push-l2 { + left: 16.6666666667%; + } + .row .col.offset-l3 { + margin-left: 25%; + } + .row .col.pull-l3 { + right: 25%; + } + .row .col.push-l3 { + left: 25%; + } + .row .col.offset-l4 { + margin-left: 33.3333333333%; + } + .row .col.pull-l4 { + right: 33.3333333333%; + } + .row .col.push-l4 { + left: 33.3333333333%; + } + .row .col.offset-l5 { + margin-left: 41.6666666667%; + } + .row .col.pull-l5 { + right: 41.6666666667%; + } + .row .col.push-l5 { + left: 41.6666666667%; + } + .row .col.offset-l6 { + margin-left: 50%; + } + .row .col.pull-l6 { + right: 50%; + } + .row .col.push-l6 { + left: 50%; + } + .row .col.offset-l7 { + margin-left: 58.3333333333%; + } + .row .col.pull-l7 { + right: 58.3333333333%; + } + .row .col.push-l7 { + left: 58.3333333333%; + } + .row .col.offset-l8 { + margin-left: 66.6666666667%; + } + .row .col.pull-l8 { + right: 66.6666666667%; + } + .row .col.push-l8 { + left: 66.6666666667%; + } + .row .col.offset-l9 { + margin-left: 75%; + } + .row .col.pull-l9 { + right: 75%; + } + .row .col.push-l9 { + left: 75%; + } + .row .col.offset-l10 { + margin-left: 83.3333333333%; + } + .row .col.pull-l10 { + right: 83.3333333333%; + } + .row .col.push-l10 { + left: 83.3333333333%; + } + .row .col.offset-l11 { + margin-left: 91.6666666667%; + } + .row .col.pull-l11 { + right: 91.6666666667%; + } + .row .col.push-l11 { + left: 91.6666666667%; + } + .row .col.offset-l12 { + margin-left: 100%; + } + .row .col.pull-l12 { + right: 100%; + } + .row .col.push-l12 { + left: 100%; + } +} + +nav { + color: #fff; + background-color: #ee6e73; + width: 100%; + height: 56px; + line-height: 56px; +} + +nav a { + color: #fff; +} + +nav i, +nav [class^="mdi-"], nav [class*="mdi-"], +nav i.material-icons { + display: block; + font-size: 2rem; + height: 56px; + line-height: 56px; +} + +nav .nav-wrapper { + position: relative; + height: 100%; +} + +@media only screen and (min-width: 993px) { + nav a.button-collapse { + display: none; + } +} + +nav .button-collapse { + float: left; + position: relative; + z-index: 1; + height: 56px; +} + +nav .button-collapse i { + font-size: 2.7rem; + height: 56px; + line-height: 56px; +} + +nav .brand-logo { + position: absolute; + color: #fff; + display: inline-block; + font-size: 2.1rem; + padding: 0; + white-space: nowrap; +} + +nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +@media only screen and (max-width: 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + } + nav .brand-logo.left, nav .brand-logo.right { + padding: 0; + -webkit-transform: none; + transform: none; + } + nav .brand-logo.left { + left: 0.5rem; + } + nav .brand-logo.right { + right: 0.5rem; + left: auto; + } +} + +nav .brand-logo.right { + right: 0.5rem; + padding: 0; +} + +nav .brand-logo i, +nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"], +nav .brand-logo i.material-icons { + float: left; + margin-right: 15px; +} + +nav ul { + margin: 0; +} + +nav ul li { + transition: background-color .3s; + float: left; + padding: 0; +} + +nav ul li.active { + background-color: rgba(0, 0, 0, 0.1); +} + +nav ul a { + transition: background-color .3s; + font-size: 1rem; + color: #fff; + display: block; + padding: 0 15px; + cursor: pointer; +} + +nav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating { + margin-top: -2px; + margin-left: 15px; + margin-right: 15px; +} + +nav ul a:hover { + background-color: rgba(0, 0, 0, 0.1); +} + +nav ul.left { + float: left; +} + +nav form { + height: 100%; +} + +nav .input-field { + margin: 0; + height: 100%; +} + +nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; +} + +nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + box-shadow: none; +} + +nav .input-field label { + top: 0; + left: 0; +} + +nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + transition: color .3s; +} + +nav .input-field label.active i { + color: #fff; +} + +nav .input-field label.active { + -webkit-transform: translateY(0); + transform: translateY(0); +} + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 998; +} + +.navbar-fixed nav { + position: fixed; +} + +@media only screen and (min-width: 601px) { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: 64px; + line-height: 64px; + } + .navbar-fixed { + height: 64px; + } +} + +@font-face { + font-family: "Roboto"; + src: local(Roboto Thin), url("../fonts/roboto/Roboto-Thin.eot"); + src: url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), url("../fonts/roboto/Roboto-Thin.woff") format("woff"), url("../fonts/roboto/Roboto-Thin.ttf") format("truetype"); + font-weight: 200; +} + +@font-face { + font-family: "Roboto"; + src: local(Roboto Light), url("../fonts/roboto/Roboto-Light.eot"); + src: url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), url("../fonts/roboto/Roboto-Light.woff") format("woff"), url("../fonts/roboto/Roboto-Light.ttf") format("truetype"); + font-weight: 300; +} + +@font-face { + font-family: "Roboto"; + src: local(Roboto Regular), url("../fonts/roboto/Roboto-Regular.eot"); + src: url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), url("../fonts/roboto/Roboto-Regular.woff") format("woff"), url("../fonts/roboto/Roboto-Regular.ttf") format("truetype"); + font-weight: 400; +} + +@font-face { + font-family: "Roboto"; + src: url("../fonts/roboto/Roboto-Medium.eot"); + src: url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), url("../fonts/roboto/Roboto-Medium.woff") format("woff"), url("../fonts/roboto/Roboto-Medium.ttf") format("truetype"); + font-weight: 500; +} + +@font-face { + font-family: "Roboto"; + src: url("../fonts/roboto/Roboto-Bold.eot"); + src: url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), url("../fonts/roboto/Roboto-Bold.woff") format("woff"), url("../fonts/roboto/Roboto-Bold.ttf") format("truetype"); + font-weight: 700; +} + +a { + text-decoration: none; +} + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); +} + +@media only screen and (min-width: 0) { + html { + font-size: 14px; + } +} + +@media only screen and (min-width: 992px) { + html { + font-size: 14.5px; + } +} + +@media only screen and (min-width: 1200px) { + html { + font-size: 15px; + } +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.1; +} + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; +} + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.1rem 0 1.68rem 0; +} + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 1.78rem 0 1.424rem 0; +} + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.46rem 0 1.168rem 0; +} + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 0.912rem 0; +} + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 0.82rem 0 0.656rem 0; +} + +h6 { + font-size: 1rem; + line-height: 110%; + margin: 0.5rem 0 0.4rem 0; +} + +em { + font-style: italic; +} + +strong { + font-weight: 500; +} + +small { + font-size: 75%; +} + +.light, footer.page-footer .footer-copyright { + font-weight: 300; +} + +.thin { + font-weight: 200; +} + +.flow-text { + font-weight: 300; +} + +@media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; + } +} + +@media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; + } +} + +@media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; + } +} + +@media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; + } +} + +@media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; + } +} + +@media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; + } +} + +@media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; + } +} + +@media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; + } +} + +@media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; + } +} + +@media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; + } +} + +@media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; + } +} + +@media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; + } +} + +@media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; + } +} + +@media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; + } +} + +@media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; + } +} + +@media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; + } +} + +@media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; + } +} + +@media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; + } +} + +@media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; + } +} + +@media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; + } +} + +@media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; + } +} + +@media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; + } +} + +.card-panel { + transition: box-shadow .25s; + padding: 20px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; +} + +.card { + position: relative; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + transition: box-shadow .25s; + border-radius: 2px; +} + +.card .card-title { + font-size: 24px; + font-weight: 300; +} + +.card .card-title.activator { + cursor: pointer; +} + +.card.small, .card.medium, .card.large { + position: relative; +} + +.card.small .card-image, .card.medium .card-image, .card.large .card-image { + max-height: 60%; + overflow: hidden; +} + +.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content { + max-height: 40%; +} + +.card.small .card-content, .card.medium .card-content, .card.large .card-content { + max-height: 100%; + overflow: hidden; +} + +.card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; +} + +.card.small { + height: 300px; +} + +.card.medium { + height: 400px; +} + +.card.large { + height: 500px; +} + +.card.horizontal { + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image { + height: 100%; + max-height: none; + overflow: visible; +} + +.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img { + height: 100%; +} + +.card.horizontal .card-image { + max-width: 50%; +} + +.card.horizontal .card-image img { + max-width: 100%; + width: auto; +} + +.card.horizontal .card-stacked { + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + position: relative; +} + +.card.horizontal .card-stacked .card-content { + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.card.sticky-action .card-action { + z-index: 2; +} + +.card.sticky-action .card-reveal { + z-index: 1; + padding-bottom: 64px; +} + +.card .card-image { + position: relative; +} + +.card .card-image img { + display: block; + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; +} + +.card .card-image .card-title { + color: #fff; + position: absolute; + bottom: 0; + left: 0; + padding: 20px; +} + +.card .card-content { + padding: 20px; + border-radius: 0 0 2px 2px; +} + +.card .card-content p { + margin: 0; + color: inherit; +} + +.card .card-content .card-title { + line-height: 48px; +} + +.card .card-action { + position: relative; + background-color: inherit; + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 20px; +} + +.card .card-action a:not(.btn):not(.btn-large):not(.btn-floating) { + color: #ffab40; + margin-right: 20px; + transition: color .3s ease; + text-transform: uppercase; +} + +.card .card-action a:not(.btn):not(.btn-large):not(.btn-floating):hover { + color: #ffd8a6; +} + +.card .card-reveal { + padding: 20px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 3; + display: none; +} + +.card .card-reveal .card-title { + cursor: pointer; + display: block; +} + +#toast-container { + display: block; + position: fixed; + z-index: 10000; +} + +@media only screen and (max-width: 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; + } +} + +@media only screen and (min-width: 601px) and (max-width: 992px) { + #toast-container { + left: 5%; + bottom: 7%; + max-width: 90%; + } +} + +@media only screen and (min-width: 993px) { + #toast-container { + top: 10%; + right: 7%; + max-width: 86%; + } +} + +.toast { + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: auto; + min-height: 48px; + line-height: 1.5em; + word-break: break-all; + background-color: #323232; + padding: 10px 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.toast .btn, .toast .btn-large, .toast .btn-flat { + margin: 0; + margin-left: 3rem; +} + +.toast.rounded { + border-radius: 24px; +} + +@media only screen and (max-width: 600px) { + .toast { + width: 100%; + border-radius: 0; + } +} + +@media only screen and (min-width: 601px) and (max-width: 992px) { + .toast { + float: left; + } +} + +@media only screen and (min-width: 993px) { + .toast { + float: right; + } +} + +.tabs { + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + position: relative; + overflow-x: auto; + overflow-y: hidden; + height: 48px; + background-color: #fff; + margin: 0 auto; + width: 100%; + white-space: nowrap; +} + +.tabs .tab { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0; + margin: 0; + text-transform: uppercase; + text-overflow: ellipsis; + overflow: hidden; + letter-spacing: .8px; + width: 15%; + min-width: 80px; +} + +.tabs .tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + text-overflow: ellipsis; + overflow: hidden; + transition: color .28s ease; +} + +.tabs .tab a:hover { + color: #f9c9cb; +} + +.tabs .tab.disabled a { + color: #f9c9cb; + cursor: default; +} + +.tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #f6b2b5; + will-change: left, right; +} + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 120%; + opacity: 0; + display: none; + position: absolute; + text-align: center; + max-width: calc(100% - 4px); + overflow: hidden; + left: 0; + top: 0; + pointer-events: none; +} + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 50% 50%; + background-color: #323232; + z-index: -1; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.btn, .btn-large, +.btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; +} + +.btn.disabled, .disabled.btn-large, +.btn-floating.disabled, +.btn-large.disabled, +.btn:disabled, +.btn-large:disabled, +.btn-large:disabled, +.btn-floating:disabled, +.btn[disabled], +[disabled].btn-large, +.btn-large[disabled], +.btn-floating[disabled] { + background-color: #DFDFDF !important; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; +} + +.btn.disabled *, .disabled.btn-large *, +.btn-floating.disabled *, +.btn-large.disabled *, +.btn:disabled *, .btn-large:disabled *, +.btn-large:disabled *, +.btn-floating:disabled *, +.btn[disabled] *, [disabled].btn-large *, +.btn-large[disabled] *, +.btn-floating[disabled] * { + pointer-events: none; +} + +.btn.disabled:hover, .disabled.btn-large:hover, +.btn-floating.disabled:hover, +.btn-large.disabled:hover, +.btn:disabled:hover, +.btn-large:disabled:hover, +.btn-large:disabled:hover, +.btn-floating:disabled:hover, +.btn[disabled]:hover, +[disabled].btn-large:hover, +.btn-large[disabled]:hover, +.btn-floating[disabled]:hover { + background-color: #DFDFDF !important; + color: #9F9F9F !important; +} + +.btn i, .btn-large i, +.btn-floating i, +.btn-large i, +.btn-flat i { + font-size: 1.3rem; + line-height: inherit; +} + +.btn, .btn-large { + text-decoration: none; + color: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + transition: .2s ease-out; + cursor: pointer; +} + +.btn:hover, .btn-large:hover { + background-color: #2bbbad; +} + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; +} + +.btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 37px; +} + +.btn-floating:hover { + background-color: #26a69a; +} + +.btn-floating:before { + border-radius: 0; +} + +.btn-floating.btn-large { + width: 55.5px; + height: 55.5px; +} + +.btn-floating.btn-large i { + line-height: 55.5px; +} + +button.btn-floating { + border: none; +} + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; +} + +.fixed-action-btn.active ul { + visibility: visible; +} + +.fixed-action-btn.horizontal { + padding: 0 0 0 15px; +} + +.fixed-action-btn.horizontal ul { + text-align: right; + right: 64px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + height: 100%; + left: auto; + width: 500px; + /*width 100% only goes to width of button container */ +} + +.fixed-action-btn.horizontal ul li { + display: inline-block; + margin: 15px 15px 0 0; +} + +.fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; + visibility: hidden; +} + +.fixed-action-btn ul li { + margin-bottom: 15px; +} + +.fixed-action-btn ul a.btn-floating { + opacity: 0; +} + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; + transition: background-color .2s; +} + +.btn-flat:focus, .btn-flat:active { + background-color: transparent; +} + +.btn-flat:hover { + background-color: rgba(0, 0, 0, 0.1); + box-shadow: none; +} + +.btn-flat.disabled { + color: #b3b3b3; + cursor: default; +} + +.btn-large { + height: 54px; + line-height: 54px; +} + +.btn-large i { + font-size: 1.6rem; +} + +.btn-block { + display: block; +} + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; +} + +.dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + min-height: 50px; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; +} + +.dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected { + background-color: #eee; +} + +.dropdown-content li.active.selected { + background-color: #e1e1e1; +} + +.dropdown-content li.divider { + min-height: 0; + height: 1px; +} + +.dropdown-content li > a, .dropdown-content li > span { + font-size: 16px; + color: #26a69a; + display: block; + line-height: 22px; + padding: 14px 16px; +} + +.dropdown-content li > span > label { + top: 1px; + left: 3px; + height: 18px; +} + +.dropdown-content li > a > i { + height: inherit; + line-height: inherit; +} + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + transition: all .3s ease-out; +} + +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + transition: all 0.7s ease-out; + transition-property: opacity, -webkit-transform; + transition-property: transform, opacity; + transition-property: transform, opacity, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); + pointer-events: none; +} + +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); +} + +.waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); +} + +.waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); +} + +.waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); +} + +.waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); +} + +.waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); +} + +.waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); +} + +.waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] { + border: 0; + font-style: normal; + font-size: inherit; + text-transform: inherit; + background: none; +} + +.waves-effect img { + position: relative; + z-index: -1; +} + +.waves-notransition { + transition: none !important; +} + +.waves-circle { + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); +} + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} + +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} + +.waves-block { + display: block; +} + +/* Firefox Bug: link not triggered */ +.waves-effect .waves-ripple { + z-index: -1; +} + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; +} + +@media only screen and (max-width: 992px) { + .modal { + width: 80%; + } +} + +.modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; +} + +.modal .modal-content { + padding: 24px; +} + +.modal .modal-close { + cursor: pointer; +} + +.modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; +} + +.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { + float: right; + margin: 6px 0; +} + +.lean-overlay { + position: fixed; + z-index: 999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; +} + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; +} + +.modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; +} + +.modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; +} + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; +} + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; +} + +.collapsible-header { + display: block; + cursor: pointer; + min-height: 3rem; + line-height: 3rem; + padding: 0 1rem; + background-color: #fff; + border-bottom: 1px solid #ddd; +} + +.collapsible-header i { + width: 2rem; + font-size: 1.6rem; + line-height: 3rem; + display: block; + float: left; + text-align: center; + margin-right: 1rem; +} + +.collapsible-body { + display: none; + border-bottom: 1px solid #ddd; + box-sizing: border-box; +} + +.collapsible-body p { + margin: 0; + padding: 2rem; +} + +.side-nav .collapsible, +.side-nav.fixed .collapsible { + border: none; + box-shadow: none; +} + +.side-nav .collapsible li, +.side-nav.fixed .collapsible li { + padding: 0; +} + +.side-nav .collapsible-header, +.side-nav.fixed .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + padding: 0 16px; +} + +.side-nav .collapsible-header:hover, +.side-nav.fixed .collapsible-header:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.side-nav .collapsible-header i, +.side-nav.fixed .collapsible-header i { + line-height: inherit; +} + +.side-nav .collapsible-body, +.side-nav.fixed .collapsible-body { + border: 0; + background-color: #fff; +} + +.side-nav .collapsible-body li a, +.side-nav.fixed .collapsible-body li a { + padding: 0 23.5px 0 31px; +} + +.collapsible.popout { + border: none; + box-shadow: none; +} + +.collapsible.popout > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +.collapsible.popout > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; +} + +.chip { + display: inline-block; + height: 32px; + font-size: 13px; + font-weight: 500; + color: rgba(0, 0, 0, 0.6); + line-height: 32px; + padding: 0 12px; + border-radius: 16px; + background-color: #e4e4e4; + margin-bottom: 5px; + margin-right: 5px; +} + +.chip img { + float: left; + margin: 0 8px 0 -12px; + height: 32px; + width: 32px; + border-radius: 50%; +} + +.chip .close { + cursor: pointer; + float: right; + font-size: 16px; + line-height: 32px; + padding-left: 8px; +} + +.chips { + border: none; + border-bottom: 1px solid #9e9e9e; + box-shadow: none; + margin-bottom: 30px; + min-height: 45px; + outline: none; + padding-bottom: 5px; + transition: all .3s; +} + +.chips.focus { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; +} + +.chips:hover { + cursor: text; +} + +.chips .chip.selected { + background-color: #26a69a; + color: #fff; +} + +.chips .input { + background: none; + border: 0; + color: rgba(0, 0, 0, 0.6); + display: inline-block; + font-size: 13px; + font-weight: 500; + height: 32px; + margin-right: 20px; + line-height: 32px; + outline: 0; + padding: 0 !important; + width: 120px !important; +} + +.chips .input:focus { + border: 0 !important; + box-shadow: none !important; +} + +.materialboxed { + display: block; + cursor: -webkit-zoom-in; + cursor: zoom-in; + position: relative; + transition: opacity .4s; +} + +.materialboxed:hover { + will-change: left, top, width, height; +} + +.materialboxed:hover:not(.active) { + opacity: .8; +} + +.materialboxed.active { + cursor: -webkit-zoom-out; + cursor: zoom-out; +} + +#materialbox-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 1000; + will-change: opacity; +} + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; +} + +select:focus { + outline: 1px solid #c9f3ef; +} + +button:focus { + outline: none; + background-color: #2ab7a9; +} + +label { + font-size: 0.8rem; + color: #9e9e9e; +} + +/* Text Inputs + Textarea + ========================================================================== */ +/* Style Placeholders */ +::-webkit-input-placeholder { + color: #d1d1d1; +} + +:-moz-placeholder { + /* Firefox 18- */ + color: #d1d1d1; +} + +::-moz-placeholder { + /* Firefox 19+ */ + color: #d1d1d1; +} + +:-ms-input-placeholder { + color: #d1d1d1; +} + +/* Text inputs */ +input:not([type]), +input[type=text], +input[type=password], +input[type=email], +input[type=url], +input[type=time], +input[type=date], +input[type=datetime], +input[type=datetime-local], +input[type=tel], +input[type=number], +input[type=search], +textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 20px 0; + padding: 0; + box-shadow: none; + box-sizing: content-box; + transition: all 0.3s; +} + +input:not([type]):disabled, input:not([type])[readonly="readonly"], +input[type=text]:disabled, +input[type=text][readonly="readonly"], +input[type=password]:disabled, +input[type=password][readonly="readonly"], +input[type=email]:disabled, +input[type=email][readonly="readonly"], +input[type=url]:disabled, +input[type=url][readonly="readonly"], +input[type=time]:disabled, +input[type=time][readonly="readonly"], +input[type=date]:disabled, +input[type=date][readonly="readonly"], +input[type=datetime]:disabled, +input[type=datetime][readonly="readonly"], +input[type=datetime-local]:disabled, +input[type=datetime-local][readonly="readonly"], +input[type=tel]:disabled, +input[type=tel][readonly="readonly"], +input[type=number]:disabled, +input[type=number][readonly="readonly"], +input[type=search]:disabled, +input[type=search][readonly="readonly"], +textarea.materialize-textarea:disabled, +textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.26); + border-bottom: 1px dotted rgba(0, 0, 0, 0.26); +} + +input:not([type]):disabled + label, +input:not([type])[readonly="readonly"] + label, +input[type=text]:disabled + label, +input[type=text][readonly="readonly"] + label, +input[type=password]:disabled + label, +input[type=password][readonly="readonly"] + label, +input[type=email]:disabled + label, +input[type=email][readonly="readonly"] + label, +input[type=url]:disabled + label, +input[type=url][readonly="readonly"] + label, +input[type=time]:disabled + label, +input[type=time][readonly="readonly"] + label, +input[type=date]:disabled + label, +input[type=date][readonly="readonly"] + label, +input[type=datetime]:disabled + label, +input[type=datetime][readonly="readonly"] + label, +input[type=datetime-local]:disabled + label, +input[type=datetime-local][readonly="readonly"] + label, +input[type=tel]:disabled + label, +input[type=tel][readonly="readonly"] + label, +input[type=number]:disabled + label, +input[type=number][readonly="readonly"] + label, +input[type=search]:disabled + label, +input[type=search][readonly="readonly"] + label, +textarea.materialize-textarea:disabled + label, +textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.26); +} + +input:not([type]):focus:not([readonly]), +input[type=text]:focus:not([readonly]), +input[type=password]:focus:not([readonly]), +input[type=email]:focus:not([readonly]), +input[type=url]:focus:not([readonly]), +input[type=time]:focus:not([readonly]), +input[type=date]:focus:not([readonly]), +input[type=datetime]:focus:not([readonly]), +input[type=datetime-local]:focus:not([readonly]), +input[type=tel]:focus:not([readonly]), +input[type=number]:focus:not([readonly]), +input[type=search]:focus:not([readonly]), +textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; +} + +input:not([type]):focus:not([readonly]) + label, +input[type=text]:focus:not([readonly]) + label, +input[type=password]:focus:not([readonly]) + label, +input[type=email]:focus:not([readonly]) + label, +input[type=url]:focus:not([readonly]) + label, +input[type=time]:focus:not([readonly]) + label, +input[type=date]:focus:not([readonly]) + label, +input[type=datetime]:focus:not([readonly]) + label, +input[type=datetime-local]:focus:not([readonly]) + label, +input[type=tel]:focus:not([readonly]) + label, +input[type=number]:focus:not([readonly]) + label, +input[type=search]:focus:not([readonly]) + label, +textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; +} + +input:not([type]).valid, input:not([type]):focus.valid, +input[type=text].valid, +input[type=text]:focus.valid, +input[type=password].valid, +input[type=password]:focus.valid, +input[type=email].valid, +input[type=email]:focus.valid, +input[type=url].valid, +input[type=url]:focus.valid, +input[type=time].valid, +input[type=time]:focus.valid, +input[type=date].valid, +input[type=date]:focus.valid, +input[type=datetime].valid, +input[type=datetime]:focus.valid, +input[type=datetime-local].valid, +input[type=datetime-local]:focus.valid, +input[type=tel].valid, +input[type=tel]:focus.valid, +input[type=number].valid, +input[type=number]:focus.valid, +input[type=search].valid, +input[type=search]:focus.valid, +textarea.materialize-textarea.valid, +textarea.materialize-textarea:focus.valid { + border-bottom: 1px solid #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; +} + +input:not([type]).valid + label:after, +input:not([type]):focus.valid + label:after, +input[type=text].valid + label:after, +input[type=text]:focus.valid + label:after, +input[type=password].valid + label:after, +input[type=password]:focus.valid + label:after, +input[type=email].valid + label:after, +input[type=email]:focus.valid + label:after, +input[type=url].valid + label:after, +input[type=url]:focus.valid + label:after, +input[type=time].valid + label:after, +input[type=time]:focus.valid + label:after, +input[type=date].valid + label:after, +input[type=date]:focus.valid + label:after, +input[type=datetime].valid + label:after, +input[type=datetime]:focus.valid + label:after, +input[type=datetime-local].valid + label:after, +input[type=datetime-local]:focus.valid + label:after, +input[type=tel].valid + label:after, +input[type=tel]:focus.valid + label:after, +input[type=number].valid + label:after, +input[type=number]:focus.valid + label:after, +input[type=search].valid + label:after, +input[type=search]:focus.valid + label:after, +textarea.materialize-textarea.valid + label:after, +textarea.materialize-textarea:focus.valid + label:after { + content: attr(data-success); + color: #4CAF50; + opacity: 1; +} + +input:not([type]).invalid, input:not([type]):focus.invalid, +input[type=text].invalid, +input[type=text]:focus.invalid, +input[type=password].invalid, +input[type=password]:focus.invalid, +input[type=email].invalid, +input[type=email]:focus.invalid, +input[type=url].invalid, +input[type=url]:focus.invalid, +input[type=time].invalid, +input[type=time]:focus.invalid, +input[type=date].invalid, +input[type=date]:focus.invalid, +input[type=datetime].invalid, +input[type=datetime]:focus.invalid, +input[type=datetime-local].invalid, +input[type=datetime-local]:focus.invalid, +input[type=tel].invalid, +input[type=tel]:focus.invalid, +input[type=number].invalid, +input[type=number]:focus.invalid, +input[type=search].invalid, +input[type=search]:focus.invalid, +textarea.materialize-textarea.invalid, +textarea.materialize-textarea:focus.invalid { + border-bottom: 1px solid #F44336; + box-shadow: 0 1px 0 0 #F44336; +} + +input:not([type]).invalid + label:after, +input:not([type]):focus.invalid + label:after, +input[type=text].invalid + label:after, +input[type=text]:focus.invalid + label:after, +input[type=password].invalid + label:after, +input[type=password]:focus.invalid + label:after, +input[type=email].invalid + label:after, +input[type=email]:focus.invalid + label:after, +input[type=url].invalid + label:after, +input[type=url]:focus.invalid + label:after, +input[type=time].invalid + label:after, +input[type=time]:focus.invalid + label:after, +input[type=date].invalid + label:after, +input[type=date]:focus.invalid + label:after, +input[type=datetime].invalid + label:after, +input[type=datetime]:focus.invalid + label:after, +input[type=datetime-local].invalid + label:after, +input[type=datetime-local]:focus.invalid + label:after, +input[type=tel].invalid + label:after, +input[type=tel]:focus.invalid + label:after, +input[type=number].invalid + label:after, +input[type=number]:focus.invalid + label:after, +input[type=search].invalid + label:after, +input[type=search]:focus.invalid + label:after, +textarea.materialize-textarea.invalid + label:after, +textarea.materialize-textarea:focus.invalid + label:after { + content: attr(data-error); + color: #F44336; + opacity: 1; +} + +input:not([type]).validate + label, +input[type=text].validate + label, +input[type=password].validate + label, +input[type=email].validate + label, +input[type=url].validate + label, +input[type=time].validate + label, +input[type=date].validate + label, +input[type=datetime].validate + label, +input[type=datetime-local].validate + label, +input[type=tel].validate + label, +input[type=number].validate + label, +input[type=search].validate + label, +textarea.materialize-textarea.validate + label { + width: 100%; + pointer-events: none; +} + +input:not([type]) + label:after, +input[type=text] + label:after, +input[type=password] + label:after, +input[type=email] + label:after, +input[type=url] + label:after, +input[type=time] + label:after, +input[type=date] + label:after, +input[type=datetime] + label:after, +input[type=datetime-local] + label:after, +input[type=tel] + label:after, +input[type=number] + label:after, +input[type=search] + label:after, +textarea.materialize-textarea + label:after { + display: block; + content: ""; + position: absolute; + top: 60px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; +} + +.input-field { + position: relative; + margin-top: 1rem; +} + +.input-field.col label { + left: 0.75rem; +} + +.input-field.col .prefix ~ label, +.input-field.col .prefix ~ .validate ~ label { + width: calc(100% - 3rem - 1.5rem); +} + +.input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + font-size: 1rem; + cursor: text; + transition: .2s ease-out; +} + +.input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + transform: translateY(-140%); +} + +.input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + transition: color .2s; +} + +.input-field .prefix.active { + color: #26a69a; +} + +.input-field .prefix ~ input, +.input-field .prefix ~ textarea, +.input-field .prefix ~ label, +.input-field .prefix ~ .validate ~ label, +.input-field .prefix ~ .autocomplete-content { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.input-field .prefix ~ label { + margin-left: 3rem; +} + +@media only screen and (max-width: 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); + } +} + +@media only screen and (max-width: 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); + } +} + +/* Search Field */ +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); +} + +.input-field input[type=search]:focus { + background-color: #fff; + border: 0; + box-shadow: none; + color: #444; +} + +.input-field input[type=search]:focus + label i, +.input-field input[type=search]:focus ~ .mdi-navigation-close, +.input-field input[type=search]:focus ~ .material-icons { + color: #444; +} + +.input-field input[type=search] + label { + left: 1rem; +} + +.input-field input[type=search] ~ .mdi-navigation-close, +.input-field input[type=search] ~ .material-icons { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; +} + +/* Textarea */ +textarea { + width: 100%; + height: 3rem; + background-color: transparent; +} + +textarea.materialize-textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: .8rem 0 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; +} + +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; + /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; + /* prevents text jump on Enter keypress */ +} + +/* Autocomplete */ +.autocomplete-content { + margin-top: -15px; + display: block; + opacity: 1; + position: static; +} + +.autocomplete-content li .highlight { + color: #444; +} + +.autocomplete-content li img { + height: 40px; + width: 40px; + margin: 5px 15px; +} + +/* Radio Buttons + ========================================================================== */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; + opacity: 0; +} + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + transition: .28s ease; + /* webkit (konqueror) browsers */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + transition: .28s ease; +} + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before, +[type="radio"]:not(:checked) + label:after, +[type="radio"]:checked + label:before, +[type="radio"]:checked + label:after, +[type="radio"].with-gap:checked + label:before, +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; +} + +[type="radio"]:not(:checked) + label:before, +[type="radio"]:not(:checked) + label:after { + border: 2px solid #5a5a5a; +} + +[type="radio"]:not(:checked) + label:after { + z-index: -1; + -webkit-transform: scale(0); + transform: scale(0); +} + +/* Checked styles */ +[type="radio"]:checked + label:before { + border: 2px solid transparent; +} + +[type="radio"]:checked + label:after, +[type="radio"].with-gap:checked + label:before, +[type="radio"].with-gap:checked + label:after { + border: 2px solid #26a69a; +} + +[type="radio"]:checked + label:after, +[type="radio"].with-gap:checked + label:after { + background-color: #26a69a; + z-index: 0; +} + +[type="radio"]:checked + label:after { + -webkit-transform: scale(1.02); + transform: scale(1.02); +} + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:after { + -webkit-transform: scale(0.5); + transform: scale(0.5); +} + +/* Focused styles */ +[type="radio"].tabbed:focus + label:before { + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); +} + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid rgba(0, 0, 0, 0.26); +} + +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: rgba(0, 0, 0, 0.26); +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.26); +} + +[type="radio"]:disabled + label { + color: rgba(0, 0, 0, 0.26); +} + +[type="radio"]:disabled:not(:checked) + label:before { + border-color: rgba(0, 0, 0, 0.26); +} + +[type="radio"]:disabled:checked + label:after { + background-color: rgba(0, 0, 0, 0.26); + border-color: #BDBDBD; +} + +/* Checkboxes + ========================================================================== */ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; +} + +form p:last-child { + margin-bottom: 0; +} + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; + opacity: 0; +} + +[type="checkbox"] { + /* checkbox aspect */ +} + +[type="checkbox"] + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ +} + +[type="checkbox"] + label:before, +[type="checkbox"]:not(.filled-in) + label:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 2px; + transition: .2s; +} + +[type="checkbox"]:not(.filled-in) + label:after { + border: 0; + -webkit-transform: scale(0); + transform: scale(0); +} + +[type="checkbox"]:not(:checked):disabled + label:before { + border: none; + background-color: rgba(0, 0, 0, 0.26); +} + +[type="checkbox"].tabbed:focus + label:after { + -webkit-transform: scale(1); + transform: scale(1); + border: 0; + border-radius: 50%; + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.1); +} + +[type="checkbox"]:checked + label:before { + top: -4px; + left: -5px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"]:checked:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + border-bottom: 2px solid rgba(0, 0, 0, 0.26); +} + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + label:before { + top: -11px; + left: -12px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"]:indeterminate:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + background-color: transparent; +} + +[type="checkbox"].filled-in + label:after { + border-radius: 2px; +} + +[type="checkbox"].filled-in + label:before, +[type="checkbox"].filled-in + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; +} + +[type="checkbox"].filled-in:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; +} + +[type="checkbox"].filled-in:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; +} + +[type="checkbox"].filled-in:checked + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"].filled-in:checked + label:after { + top: 0; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; +} + +[type="checkbox"].filled-in.tabbed:focus + label:after { + border-radius: 2px; + border-color: #5a5a5a; + background-color: rgba(0, 0, 0, 0.1); +} + +[type="checkbox"].filled-in.tabbed:checked:focus + label:after { + border-radius: 2px; + background-color: #26a69a; + border-color: #26a69a; +} + +[type="checkbox"].filled-in:disabled:not(:checked) + label:before { + background-color: transparent; + border: 2px solid transparent; +} + +[type="checkbox"].filled-in:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: #BDBDBD; +} + +[type="checkbox"].filled-in:disabled:checked + label:before { + background-color: transparent; +} + +[type="checkbox"].filled-in:disabled:checked + label:after { + background-color: #BDBDBD; + border-color: #BDBDBD; +} + +/* Switch + ========================================================================== */ +.switch, +.switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; +} + +.switch label { + cursor: pointer; +} + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; +} + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; +} + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; + left: 24px; +} + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: #818181; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; +} + +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: #F1F1F1; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; +} + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after, +input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); +} + +input[type=checkbox]:not(:disabled) ~ .lever:active:after, +input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); +} + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; +} + +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #BDBDBD; +} + +/* Select Field + ========================================================================== */ +select { + display: none; +} + +select.browser-default { + display: block; +} + +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; +} + +.select-label { + position: absolute; +} + +.select-wrapper { + position: relative; +} + +.select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 20px 0; + padding: 0; + display: block; +} + +.select-wrapper span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; +} + +.select-wrapper span.caret.disabled { + color: rgba(0, 0, 0, 0.26); +} + +.select-wrapper + label { + position: absolute; + top: -14px; + font-size: 0.8rem; +} + +select:disabled { + color: rgba(0, 0, 0, 0.3); +} + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.3); + cursor: default; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -ms-user-select: none; + /* IE10+ */ + border-bottom: 1px solid rgba(0, 0, 0, 0.3); +} + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); +} + +.select-dropdown li.disabled, +.select-dropdown li.disabled > span, +.select-dropdown li.optgroup { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; +} + +.prefix ~ .select-wrapper { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.prefix ~ label { + margin-left: 3rem; +} + +.select-dropdown li img { + height: 40px; + width: 40px; + margin: 5px 15px; + float: right; +} + +.select-dropdown li.optgroup { + border-top: 1px solid #eee; +} + +.select-dropdown li.optgroup.selected > span { + color: rgba(0, 0, 0, 0.7); +} + +.select-dropdown li.optgroup > span { + color: rgba(0, 0, 0, 0.4); +} + +.select-dropdown li.optgroup ~ li.optgroup-option { + padding-left: 1rem; +} + +/* File Input + ========================================================================== */ +.file-field { + position: relative; +} + +.file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; +} + +.file-field input.file-path { + width: 100%; +} + +.file-field .btn, .file-field .btn-large { + float: left; + height: 3rem; + line-height: 3rem; +} + +.file-field span { + cursor: pointer; +} + +.file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); +} + +/* Range + ========================================================================== */ +.range-field { + position: relative; +} + +input[type=range], +input[type=range] + .thumb { + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0; + padding: 0; +} + +input[type=range]:focus { + outline: none; +} + +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: #26a69a; + top: 10px; + margin-left: -6px; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +input[type=range] + .thumb .value { + display: block; + width: 30px; + text-align: center; + color: #26a69a; + font-size: 0; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +input[type=range] + .thumb.active { + border-radius: 50% 50% 50% 0; +} + +input[type=range] + .thumb.active .value { + color: #fff; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; +} + +input[type=range] { + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: #26a69a; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + transition: .3s; +} + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; +} + +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + margin-top: -5px; +} + +input[type=range]:-moz-focusring { + outline: 1px solid #fff; + outline-offset: -1px; +} + +input[type=range]:focus::-moz-range-track { + background: #ccc; +} + +input[type=range]::-ms-track { + height: 3px; + background: transparent; + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; +} + +input[type=range]::-ms-fill-lower { + background: #777; +} + +input[type=range]::-ms-fill-upper { + background: #ddd; +} + +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; +} + +input[type=range]:focus::-ms-fill-lower { + background: #888; +} + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; +} + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; +} + +.table-of-contents li { + padding: 2px 0; +} + +.table-of-contents a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; +} + +.table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; +} + +.table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; +} + +.side-nav { + position: fixed; + width: 300px; + left: 0; + top: 0; + margin: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow-y: auto; + will-change: transform; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translateX(-105%); + transform: translateX(-105%); +} + +.side-nav.right-aligned { + right: 0; + -webkit-transform: translateX(105%); + transform: translateX(105%); + left: auto; + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.side-nav .collapsible { + margin: 0; +} + +.side-nav li { + float: none; + line-height: 48px; +} + +.side-nav li.active { + background-color: rgba(0, 0, 0, 0.05); +} + +.side-nav a { + color: rgba(0, 0, 0, 0.87); + display: block; + font-size: 14px; + font-weight: 500; + height: 48px; + line-height: 48px; + padding: 0 32px; +} + +.side-nav a:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-flat, .side-nav a.btn-floating { + margin: 10px 15px; +} + +.side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-floating { + color: #fff; +} + +.side-nav a.btn-flat { + color: #343434; +} + +.side-nav a.btn:hover, .side-nav a.btn-large:hover, .side-nav a.btn-large:hover { + background-color: #2bbbad; +} + +.side-nav a.btn-floating:hover { + background-color: #26a69a; +} + +.side-nav li > a > i, +.side-nav li > a > [class^="mdi-"], .side-nav li > a > [class*="mdi-"], +.side-nav li > a > i.material-icons { + float: left; + line-height: 48px; + margin: 0 32px 0 0; + width: 24px; + color: rgba(0, 0, 0, 0.54); +} + +.side-nav .divider { + margin: 8px 0 0 0; +} + +.side-nav .subheader { + cursor: initial; + pointer-events: none; + color: rgba(0, 0, 0, 0.54); + font-size: 14px; + font-weight: 500; + line-height: 48px; +} + +.side-nav .subheader:hover { + background-color: transparent; +} + +.side-nav .userView { + overflow: hidden; + position: relative; + padding: 32px 32px 0; + margin-bottom: 8px; +} + +.side-nav .userView a { + height: auto; + padding: 0; +} + +.side-nav .userView a:hover { + background-color: transparent; +} + +.side-nav .userView .background { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; +} + +.side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email { + display: block; +} + +.side-nav .userView .circle { + height: 64px; + width: 64px; +} + +.side-nav .userView .name, +.side-nav .userView .email { + font-weight: 14px; + line-height: 24px; +} + +.side-nav .userView .name { + margin-top: 16px; + font-weight: 500; +} + +.side-nav .userView .email { + padding-bottom: 16px; + font-weight: 400; +} + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; +} + +.side-nav.fixed a { + display: block; + padding: 0 16px; + color: rgba(0, 0, 0, 0.87); +} + +.side-nav.fixed { + left: 0; + -webkit-transform: translateX(0); + transform: translateX(0); + position: fixed; +} + +.side-nav.fixed.right-aligned { + right: 0; + left: auto; +} + +@media only screen and (max-width: 992px) { + .side-nav.fixed { + -webkit-transform: translateX(-105%); + transform: translateX(-105%); + } + .side-nav.fixed.right-aligned { + -webkit-transform: translateX(105%); + transform: translateX(105%); + } + .side-nav a { + padding: 0 16px; + } + .side-nav .userView { + padding: 16px 16px 0; + } +} + +.side-nav .collapsible-body li.active, +.side-nav.fixed .collapsible-body li.active { + background-color: #ee6e73; +} + +.side-nav .collapsible-body li.active a, +.side-nav.fixed .collapsible-body li.active a { + color: #fff; +} + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + will-change: opacity; +} + +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; +} + +.preloader-wrapper.small { + width: 36px; + height: 36px; +} + +.preloader-wrapper.big { + width: 64px; + height: 64px; +} + +.preloader-wrapper.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; +} + +@-webkit-keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); + } +} + +@keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + border-color: #26a69a; +} + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; +} + +.spinner-red, +.spinner-red-only { + border-color: #db4437; +} + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; +} + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer, +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} + +@keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} + +@-webkit-keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} + +@keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} + +@keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} + +@-webkit-keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} + +@keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} + +@-webkit-keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +@keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.circle-clipper .circle { + width: 200%; + height: 100%; + border-width: 3px; + /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; +} + +.circle-clipper.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); +} + +.circle-clipper.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); +} + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { + -webkit-transform: rotate(130deg); + } + 50% { + -webkit-transform: rotate(-5deg); + } + to { + -webkit-transform: rotate(130deg); + } +} + +@keyframes left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); + } + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } +} + +@-webkit-keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); + } + 50% { + -webkit-transform: rotate(5deg); + } + to { + -webkit-transform: rotate(-130deg); + } +} + +@keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); + } + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } +} + +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +.slider { + position: relative; + height: 400px; + width: 100%; +} + +.slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.slider.fullscreen ul.slides { + height: 100%; +} + +.slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; +} + +.slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; +} + +.slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; +} + +.slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; +} + +.slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; +} + +.slider .slides li .caption p { + color: #e0e0e0; +} + +.slider .slides li.active { + z-index: 2; +} + +.slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} + +.slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + transition: background-color .3s; + border-radius: 50%; +} + +.slider .indicators .indicator-item.active { + background-color: #4CAF50; +} + +.carousel { + overflow: hidden; + position: relative; + width: 100%; + height: 400px; + -webkit-perspective: 500px; + perspective: 500px; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-transform-origin: 0% 50%; + transform-origin: 0% 50%; +} + +.carousel.carousel-slider { + top: 0; + left: 0; + height: 0; +} + +.carousel.carousel-slider .carousel-fixed-item { + position: absolute; + left: 0; + right: 0; + bottom: 20px; + z-index: 1; +} + +.carousel.carousel-slider .carousel-fixed-item.with-indicators { + bottom: 68px; +} + +.carousel.carousel-slider .carousel-item { + width: 100%; + height: 100%; + min-height: 400px; + position: absolute; + top: 0; + left: 0; +} + +.carousel.carousel-slider .carousel-item h2 { + font-size: 24px; + font-weight: 500; + line-height: 32px; +} + +.carousel.carousel-slider .carousel-item p { + font-size: 15px; +} + +.carousel .carousel-item { + display: none; + width: 200px; + height: 400px; + position: absolute; + top: 0; + left: 0; +} + +.carousel .carousel-item img { + width: 100%; +} + +.carousel .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} + +.carousel .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 8px; + width: 8px; + margin: 24px 4px; + background-color: rgba(255, 255, 255, 0.5); + transition: background-color .3s; + border-radius: 50%; +} + +.carousel .indicators .indicator-item.active { + background-color: #fff; +} + +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/** + * The picker input element. + */ +.picker__input { + cursor: default; +} + +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; +} + +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; +} + +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; +} + +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + width: 300px; + max-height: 350px; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + transition: all 0.15s ease-out; +} + +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; + } +} + +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; + } +} + +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; +} + +@media (min-height: 28.875em) { + .picker__wrap { + display: block; + } +} + +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; +} + +@media (min-height: 28.875em) { + .picker__box { + display: block; + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + border-radius: 5px 5px 0 0; + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + } +} + +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + transition: background 0.15s ease-out; +} + +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; +} + +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; + } +} + +/** + * For `large` screens, transform into an inline picker. + */ +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__input.picker__input--active { + border-color: #E3F2FD; +} + +.picker__frame { + margin: 0 auto; + max-width: 325px; +} + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; + } +} + +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; +} + +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; +} + +/** + * The month and year labels. + */ +.picker__month, +.picker__year { + display: inline-block; + margin-left: .25em; + margin-right: .25em; +} + +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + height: 2em; + padding: 0; + margin-left: .25em; + margin-right: .25em; +} + +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; +} + +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 26%; +} + +.picker__select--month:focus, +.picker__select--year:focus { + border-color: rgba(0, 0, 0, 0.05); +} + +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; +} + +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; +} + +.picker__nav--next { + right: -1em; + padding-left: 1.25em; +} + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} + +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; +} + +.picker__table th, .picker__table td { + text-align: center; +} + +.picker__table td { + margin: 0; + padding: 0; +} + +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ +} + +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; + } +} + +/** + * The days on the calendar + */ +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} + +.picker__day--infocus:hover { + cursor: pointer; + color: #000; + font-weight: 500; +} + +.picker__day--outfocus { + display: none; + padding: .75rem 0; + color: #fff; +} + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; +} + +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; +} + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.75); + transform: scale(0.75); + background: #0089ec; + color: #ffffff; +} + +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} + +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} + +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; +} + +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} + +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: rgba(0, 0, 0, 0.05); + outline: none; +} + +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; +} + +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; +} + +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; +} + +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; +} + +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; +} + +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} + +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; +} + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; +} + +.picker__date-display { + text-align: center; + background-color: #26a69a; + color: #fff; + padding-bottom: 15px; + font-weight: 300; +} + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #a1ded8; +} + +.picker__weekday-display { + background-color: #1f897f; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; +} + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; +} + +.picker__day-display { + font-size: 4.5rem; + font-weight: 400; +} + +.picker__year-display { + font-size: 1.8rem; + color: rgba(255, 255, 255, 0.4); +} + +.picker__box { + padding: 0; +} + +.picker__calendar-container { + padding: 0 1rem; +} + +.picker__calendar-container thead { + border: none; +} + +.picker__table { + margin-top: 0; + margin-bottom: .5em; +} + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +.picker__day.picker__day--today { + color: #26a69a; +} + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; +} + +.picker__weekday { + font-size: .9rem; +} + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.9); + transform: scale(0.9); + background-color: #26a69a; + color: #ffffff; +} + +.picker__day--selected.picker__day--outfocus, +.picker__day--selected:hover.picker__day--outfocus, +.picker--focused .picker__day--selected.picker__day--outfocus { + background-color: #a1ded8; +} + +.picker__footer { + text-align: right; + padding: 5px 10px; +} + +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 1rem; + color: #26a69a; +} + +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} + +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; +} + +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: #a1ded8; +} + +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; +} + +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; +} + +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; + } +} + +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} + +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; +} + +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; +} + +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; +} + +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; +} + +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; +} + +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; +} + +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; +} + +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; +} + +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; +} + +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; + } +} diff --git a/public_html/css/materialize.min.css b/public_html/css/materialize.min.css new file mode 100644 index 0000000..efcbf34 --- /dev/null +++ b/public_html/css/materialize.min.css @@ -0,0 +1,16 @@ +/*! + * Materialize v0.97.7 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#004e92 !important}.teal-text.text-lighten-1{color:#004e92 !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#004e92 !important}.green-text{color:#004e92 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul{padding:0;list-style-type:none}ul.browser-default,ul.browser-default li{list-style-type:initial}ul li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.valign-wrapper .valign{display:block}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)}.z-depth-4,.modal{box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}footer.page-footer{margin-top:20px;padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:0.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#004e92;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#004e92}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#004e92}.collapsible .collection{margin:0;border:none}span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:#757575;position:absolute;right:15px;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#004e92;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{position:static;margin-left:4px;line-height:0}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:0.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#004e92;transition:width .3s linear}.progress .indeterminate{background-color:#004e92}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.container .row{margin-left:-0.75rem;margin-right:-0.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 0.75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:2rem;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px}nav .button-collapse i{font-size:2.7rem;height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);transition:color .3s}nav .input-field label.active i{color:#fff}nav .input-field label.active{-webkit-transform:translateY(0);transform:translateY(0)}.navbar-fixed{position:relative;height:56px;z-index:998}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../fonts/roboto/Roboto-Thin.eot");src:url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff"),url("../fonts/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.eot");src:url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff"),url("../fonts/roboto/Roboto-Light.ttf") format("truetype");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.eot");src:url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff"),url("../fonts/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Medium.eot");src:url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff"),url("../fonts/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Bold.eot");src:url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff"),url("../fonts/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:110%;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:110%;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.card-panel{transition:box-shadow .25s;padding:20px;margin:0.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:0.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;padding:20px}.card .card-content{padding:20px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{line-height:48px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);padding:20px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:20px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:20px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width: 601px) and (max-width: 992px){.toast{float:left}}@media only screen and (min-width: 993px){.toast{float:right}}.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;overflow-x:auto;overflow-y:hidden;height:48px;background-color:#fff;margin:0 auto;width:100%;white-space:nowrap}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase;text-overflow:ellipsis;overflow:hidden;letter-spacing:.8px;width:15%;min-width:80px}.tabs .tab a{color:#ee6e73;display:block;width:100%;height:100%;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a:hover{color:#f9c9cb}.tabs .tab.disabled a{color:#f9c9cb;cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;display:none;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn:disabled,.btn-large:disabled,.btn-large:disabled,.btn-floating:disabled,.btn[disabled],[disabled].btn-large,.btn-large[disabled],.btn-floating[disabled]{background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled *,.disabled.btn-large *,.btn-floating.disabled *,.btn-large.disabled *,.btn:disabled *,.btn-large:disabled *,.btn-large:disabled *,.btn-floating:disabled *,.btn[disabled] *,[disabled].btn-large *,.btn-large[disabled] *,.btn-floating[disabled] *{pointer-events:none}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-large[disabled]:hover,.btn-floating[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#004e92;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#004e92;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.btn-floating:hover{background-color:#004e92}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:55.5px;height:55.5px}.btn-floating.btn-large i{line-height:55.5px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat:focus,.btn-flat:active{background-color:transparent}.btn-flat:hover{background-color:rgba(0,0,0,0.1);box-shadow:none}.btn-flat.disabled{color:#b3b3b3;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#004e92;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:3px;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit}/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity, transform;transition:all .3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);transition:all 0.7s ease-out;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, #fff 100%, #000 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:0.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box}.collapsible-body p{margin:0;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #004e92;box-shadow:none;margin-bottom:30px;min-height:45px;outline:none;padding-bottom:5px;transition:all .3s}.chips.focus{border-bottom:1px solid #004e92;box-shadow:0 1px 0 0 #004e92}.chips:hover{cursor:text}.chips .chip.selected{background-color:#004e92;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:13px;font-weight:500;height:32px;margin-right:20px;line-height:32px;outline:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;box-shadow:none !important}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s}.materialboxed:hover{will-change:left, top, width, height}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:0.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;box-shadow:none;box-sizing:content-box;transition:all 0.3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime]:disabled,input[type=datetime][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input:not([type]):focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #004e92;box-shadow:0 1px 0 0 #004e92}input:not([type]):focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#004e92}input:not([type]).valid,input:not([type]):focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #004e92;box-shadow:0 1px 0 0 #004e92}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#004e92;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input:not([type]).validate+label,input[type=text].validate+label,input[type=password].validate+label,input[type=email].validate+label,input[type=url].validate+label,input[type=time].validate+label,input[type=date].validate+label,input[type=datetime].validate+label,input[type=datetime-local].validate+label,input[type=tel].validate+label,input[type=number].validate+label,input[type=search].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.col label{left:0.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;font-size:1rem;cursor:text;transition:.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#004e92}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.autocomplete-content{margin-top:-15px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;opacity:0}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after,[type="radio"]:checked+label:before,[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border-radius:50%}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{z-index:-1;-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border:2px solid transparent}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border:2px solid #004e92}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:after{background-color:#004e92;z-index:0}[type="radio"]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;opacity:0}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before,[type="checkbox"]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type="checkbox"]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #004e92;border-bottom:2px solid #004e92;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #004e92;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #004e92;background-color:#004e92;z-index:0}[type="checkbox"].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#004e92;border-color:#004e92}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#004e92;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:0.8rem}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#004e92;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#004e92;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#004e92;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#004e92;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#004e92}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,0.05)}.side-nav a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav a:hover{background-color:rgba(0,0,0,0.05)}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-flat,.side-nav a.btn-floating{margin:10px 15px}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-floating{color:#fff}.side-nav a.btn-flat{color:#343434}.side-nav a.btn:hover,.side-nav a.btn-large:hover,.side-nav a.btn-large:hover{background-color:#2bbbad}.side-nav a.btn-floating:hover{background-color:#004e92}.side-nav li>a>i,.side-nav li>a>[class^="mdi-"],.side-nav li>a>[class*="mdi-"],.side-nav li>a>i.material-icons{float:left;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.side-nav .divider{margin:8px 0 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{overflow:hidden;position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView a{height:auto;padding:0}.side-nav .userView a:hover{background-color:transparent}.side-nav .userView .background{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .name,.side-nav .userView .email{font-weight:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed a{display:block;padding:0 16px;color:rgba(0,0,0,0.87)}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body li.active,.side-nav.fixed .collapsible-body li.active{background-color:#ee6e73}.side-nav .collapsible-body li.active a,.side-nav.fixed .collapsible-body li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#004e92}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#004e92}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:400px;position:absolute;top:0;left:0}.carousel .carousel-item img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#004e92;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#004e92}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);transform:scale(0.9);background-color:#004e92;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#004e92}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} diff --git a/public_html/css/style.css b/public_html/css/style.css new file mode 100644 index 0000000..f648c04 --- /dev/null +++ b/public_html/css/style.css @@ -0,0 +1,78 @@ +header, main, footer, body { + padding-left: 300px; +} + +html { + height: 100%; +} + +body { + background-color: #000428; +} + +.side-nav .userView { + background-color: transparent +} +.background { + background: #000428; /* fallback for old browsers */ + background: -webkit-linear-gradient(to left, #000428 , #004e92); /* Chrome 10-25, Safari 5.1-6 */ + background: linear-gradient(to left, #000428 , #004e92); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ +} +@media only screen and (max-width : 992px) { + header, main, footer, body { + padding-left: 0; + } + #menu-sidenav { + display: block; + } +} +@media only screen and (min-width : 993px) { + #menu-sidenav { + display: none; + } +} + +.secondary-content { + color: #000428; +} + +.progress { + background-color: lightgrey; +} + +.progress .determinate { + background-color: #000428; +} + +.btn, .btn-large { + background-color: #004e92; +} + +.btn:hover, .btn-large:hover { + background-color: #000428; +} +button:focus { + background-color: #004e92; +} + +#background-canvas { + display: none; + z-index: -999; + position: fixed; + top:0; + left:0; +} +#titresnir > a > h3:hover { + transform: rotate(5deg) scale(1.1); +} +#titresnir > a > h3 { + transition: all 0.4s cubic-bezier(.8,1.8,.75,.75); +} + +.successBQ { + border-left: 5px solid #59f442; +} + +.rotate { + transform: rotate(180deg); +} \ No newline at end of file diff --git a/public_html/css/wankul.css b/public_html/css/wankul.css new file mode 100644 index 0000000..ecfe767 --- /dev/null +++ b/public_html/css/wankul.css @@ -0,0 +1,12 @@ +.identity { + position: absolute; + background-color: black; + text-align: center; + color: black; + opacity: 0.7; + overflow: hidden; +} + +.wankul .card-image img { + position: absolute; +} \ No newline at end of file diff --git a/public_html/dev/testRocketLeague.php b/public_html/dev/testRocketLeague.php new file mode 100644 index 0000000..a6ce00e --- /dev/null +++ b/public_html/dev/testRocketLeague.php @@ -0,0 +1,195 @@ +query("SELECT * FROM rl_general"); + +while($donnee = $req->fetch()) +{ + $steamid = $donnee['steam_id']; + $pseudo = $donnee['pseudo']; + + $ch = curl_init("http://rltracker.pro/profiles/$steamid/steam"); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $raw = curl_exec($ch); + curl_close($ch); + + $html = new DOMDocument(); + @$html->loadHTML($raw); + $xpath = new DOMXPath($html); + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
"; + echo "$division
"; + echo "$rating[0]
"; + echo "$matches[0]
"; + echo "$pseudo
"; + + $req2 = $bdd->query("SELECT id FROM rl_solo WHERE pseudo = '$pseudo'"); + + if($req2->fetch() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo'") or die(print_r($bdd->errorInfo(), true)); + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0])") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
"; + echo "$division
"; + echo "$rating[0]
"; + echo "$matches[0]
"; + echo "$pseudo
"; + + $req2 = $bdd->query("SELECT id FROM rl_doubles WHERE pseudo = '$pseudo'"); + + if($req2->fetch() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo'") or die(print_r($bdd->errorInfo(), true)); + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0])") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
"; + echo "$division
"; + echo "$rating[0]
"; + echo "$matches[0]
"; + echo "$pseudo
"; + + $req2 = $bdd->query("SELECT id FROM rl_solo_standard WHERE pseudo = '$pseudo'"); + + if($req2->fetch() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo'") or die(print_r($bdd->errorInfo(), true)); + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0])") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
"; + echo "$division
"; + echo "$rating[0]
"; + echo "$matches[0]
"; + echo "$pseudo
"; + + $req2 = $bdd->query("SELECT id FROM rl_standard WHERE pseudo = '$pseudo'"); + + if($req2->fetch() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo'") or die(print_r($bdd->errorInfo(), true)); + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0])") or die(print_r($bdd->errorInfo(), true)); + } + +} \ No newline at end of file diff --git a/public_html/devteam/index.php b/public_html/devteam/index.php new file mode 100644 index 0000000..2870435 --- /dev/null +++ b/public_html/devteam/index.php @@ -0,0 +1,118 @@ + + + + + + + + + RASPSNIR - DEVTEAM + + + + + +
+
+
+
+
+
+ Axel D +
+
+

Axel "Biyou" Deneu

+
@biyou72
+
+
+
+
    +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
+
+
+
+
+
+
+
+
+
+
+ Tanguy H +
+
+

Tanguy "Tiji" Herbron

+
@ImGuitoune
+
+
+
+
    +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
  • +
    +
  • +
+
+
+
+
+
+
+
+
+
+
+ Gabriel L +
+
+

Gabriel "Gaby" Lemée

+
@Gabydu72
+
+
+
+
    +
  • +
    +
  • +
  • +
    +
  • +
+
+
+
+
+
+
+ + + + + + diff --git a/public_html/devteam/js.js b/public_html/devteam/js.js new file mode 100644 index 0000000..e69de29 diff --git a/public_html/devteam/style.css b/public_html/devteam/style.css new file mode 100644 index 0000000..9bf2f16 --- /dev/null +++ b/public_html/devteam/style.css @@ -0,0 +1,172 @@ +.left { float: left; } +.right { float: right; } +.clear { clear: both; } + +h1 { font-size: 18px; color: white; } +h6 { font-size: 13px; color: white; } + +.profile-card { + margin: auto; + margin-top: 80px; + width: 580px; + height: 400px; + font: 12px "Myriad Pro"; + display: block; +} +#gaby +{ + background: url('https://pre07.deviantart.net/f00c/th/pre/i/2014/019/4/3/nightfall_ruins_2_by_jjpeabody-d72su2a.jpg') no-repeat center; +} +#biyou +{ + background: url('https://img0.mxstatic.com/wallpapers/85606bc1654971a57604b271bd2582aa_large.jpeg') no-repeat center; +} +#tanguy +{ + background: url('https://img14.deviantart.net/89ff/i/2014/046/e/0/clearwater_by_jjpeabody-d76l769.jpg') no-repeat center; +} +.profile-card .profile-cover { + position: relative; + height: 260px; + + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +.profile-card .profile-cover:hover { + filter: none; + filter: none; + -webkit-filter: none; + +} +.profile-card .profile-cover .profile-avatar { + background: #ffffff; + border: 1px solid #eeeeee; + border: 5px solid #ffffff; + width: 150px; + height: 150px; + position: absolute; + margin: 25px auto 0; + overflow: hidden; + left: 0; + right: 0; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +.profile-card .profile-cover .profile-avatar .btns-container { + position: relative; +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links { + position: absolute; + top: 110px; + left: 0; + right: 0; + text-align: center; +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a { + display: inline-block; + background: #ffffff; + text-decoration: none; + padding: 5px; +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a img { + display: block; +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.zoom-avatar { + background: rgba(103, 186, 144, 0.7); +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.zoom-avatar:hover { + background: rgba(103, 186, 144, 1); +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.read-more { + background: rgba(231, 76, 60, 0.7); +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.read-more:hover { + background: rgba(231, 76, 60, 1); +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.view-map { + background: rgba(157, 177, 218, 0.7); +} +.profile-card .profile-cover .profile-avatar .btns-container .profile-links a.view-map:hover { + background: rgba(157, 177, 218, 1); +} +.profile-card .profile-cover .profile-details { + color: #ffffff; + position: absolute; + bottom: 0; + left: 0; + right: 0; + text-align: center; + font-weight: bold; + padding: 5px 0 7px; +} +.profile-card .profile-cover .profile-details h6 { + font-weight: normal; +} +.profile-card .profile-info { + background: #e74c3c; + color: #ffffff; + padding: 10px; + font-family: Arial; + text-align: justify; +} +.profile-card .profile-info h1 { + border-bottom: 1px solid rgba(255, 255, 255, 0.5); + padding-bottom: 3px; + padding-left: 10px; + margin-bottom: 5px; +} +.profile-card .profile-info .info-area { + padding: 0 10px 5px; +} +.profile-card .profile-map { + border-top: 1px solid #cccccc; + float: left; + width: 100%; +} +.profile-card .profile-content { + background: #ffffff; /* Old browsers */ + /* IE9 SVG, needs conditional override of 'filter' to 'none' */ + background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlZWVlZWUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); + background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#eeeeee 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#eeeeee 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 100%); /* IE10+ */ + background: linear-gradient(to bottom, #ffffff 0%,#eeeeee 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 ); /* IE6-8 */ + border: 1px solid #cccccc; + border-top: none; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomright: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + margin-top: -12px; +} +.profile-card .profile-content ul li { + float: left; + padding: 10px 32px; + text-align: center; + border-right: 1px solid #eeeeee; + border-left: 1px solid #ffffff; +} +.profile-card .profile-content ul li:first-child { + border-left: none; +} +.profile-card .profile-content ul li:last-child { + border-right: none; +} +.profile-card .profile-content ul li .digits { + font-weight: bold; + font-size: 16px; +} +.devicons +{ + font-size: 50px; +} diff --git a/public_html/edt/edt.css b/public_html/edt/edt.css new file mode 100644 index 0000000..8266b3c --- /dev/null +++ b/public_html/edt/edt.css @@ -0,0 +1,123 @@ +@import url(http://fonts.googleapis.com/css?family=Open+Sans:300,400,600); + +html, body { height: 100%; margin: 0; } +body { + font-family: 'Open Sans', sans-serif; + color: #efefef; + overflow: hidden; +} + +.day { + width: 18%; + height: 90vh; + float: left; + background-color: #fff; + background-image: linear-gradient(rgba(0,0,0,.08) 50%, transparent 50%); + background-size: 1px 20%; +} + +.day.time { width: 10%; } + +.day_title { + height: 10%; + background-color: #34495e; + font-size: 12px; + font-weight: 600; + text-transform: uppercase; + text-align: center; + line-height: 4vh; +} + +.hour { + height: 4%; + background-color: rgba(52, 73, 94,0.9); + font-size: 12px; + text-align: center; + line-height: 4vh; +} + +.class { + width: 100%; + height: 13vh; /*90min*/ + line-height: 10vh; + background-color: magenta; + font-size: 2vw; + font-weight: 300; + padding-left: 10px; +} + +.class.short { height: 7.5vh; line-height: 7.5vh; } /* 45min class */ +.class.b15 { margin-top: 2.5vh; } /* after 15 min break */ +.class.b45 { margin-top: 7.5vh; } /* after 45 min break */ +.class.b90 { margin-top: 15vh; } /* after 2x45 min break */ +.class.b135 { margin-top: 22.5vh; } /* after 3x45 min break */ + +.green { background-color: #2ecc71; } +.turquoise { background-color: #1abc9c; } +.navy { background-color: #34495e; } +.blue { background-color: #3498db; } +.purple { background-color: #9b59b6; } +.grey { background-color: #bdc3c7; color: #202020; } +.gray { background-color: #7f8c8d; } +.red { background-color: #e74c3c; } +.orange { background-color: #f39c12; } +.yellow { background-color: #f1c40f; color: #303030; } + +.spacing { background-color: transparent; } + + + +/* Add this attribute to the element that needs a tooltip */ +[data-tooltip] { + position: relative; + z-index: 2; + cursor: pointer; + width: initial; +} + +/* Hide the tooltip content by default */ +[data-tooltip]:before, +[data-tooltip]:after { + visibility: hidden; + pointer-events: none; +} + +/* Position tooltip above the element */ +[data-tooltip]:before { + position: absolute; + bottom: 110%; + left: 50%; + margin-bottom: 10px; + margin-left: -75px; + padding: 7px 5px; + width: 140px; + background-color: black; + color: #fff; + content: attr(data-tooltip); + text-align: center; + font-size: 14px; + line-height: 1.2; +} + +/* Triangle hack to make tooltip look like a speech bubble */ +[data-tooltip]:after { + position: absolute; + bottom: 110%; + left: 50%; + margin-left: -7px; + margin-bottom: 3px; + width: 0; + border-top: 7px solid black; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + content: " "; + font-size: 0; + line-height: 0; +} + +/* Show tooltip content on hover */ +[data-tooltip]:hover:before, +[data-tooltip]:hover:after { + visibility: visible; + bottom: 90%; +} diff --git a/public_html/edt/index.php b/public_html/edt/index.php new file mode 100644 index 0000000..af36a40 --- /dev/null +++ b/public_html/edt/index.php @@ -0,0 +1,96 @@ + + + + + + + + + + + +
+
+
+
+
+
+
Heures
+
8:00
+
8:30
+
9:00
+
9:30
+
10:00
+
10:30
+
11:00
+
11:30
+
12:00
+
12:30
+
13:00
+
13:30
+
14:00
+
14:30
+
15:00
+
15:30
+
16:00
+
16:30
+
17:00
+
17:30
+
18:00
+
+ +
+
Lundi
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
+ +
+
Mardi
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
+ +
+
Mercredi
+
+
C cassé
+
+ +
+
C cassé
+
+ +
+
Jeudi
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
C cassé
+
+ +
+
Vendredi
+
+
C cassé
+ +
+
+
+
+
+
+ + + + + + diff --git a/public_html/fonts/roboto/Roboto-Bold.eot b/public_html/fonts/roboto/Roboto-Bold.eot new file mode 100644 index 0000000..b73776e Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Bold.eot differ diff --git a/public_html/fonts/roboto/Roboto-Bold.ttf b/public_html/fonts/roboto/Roboto-Bold.ttf new file mode 100644 index 0000000..68822ca Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Bold.ttf differ diff --git a/public_html/fonts/roboto/Roboto-Bold.woff b/public_html/fonts/roboto/Roboto-Bold.woff new file mode 100644 index 0000000..1f75afd Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Bold.woff differ diff --git a/public_html/fonts/roboto/Roboto-Bold.woff2 b/public_html/fonts/roboto/Roboto-Bold.woff2 new file mode 100644 index 0000000..350d1c3 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Bold.woff2 differ diff --git a/public_html/fonts/roboto/Roboto-Light.eot b/public_html/fonts/roboto/Roboto-Light.eot new file mode 100644 index 0000000..072cdc4 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Light.eot differ diff --git a/public_html/fonts/roboto/Roboto-Light.ttf b/public_html/fonts/roboto/Roboto-Light.ttf new file mode 100644 index 0000000..aa45340 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Light.ttf differ diff --git a/public_html/fonts/roboto/Roboto-Light.woff b/public_html/fonts/roboto/Roboto-Light.woff new file mode 100644 index 0000000..3480c6c Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Light.woff differ diff --git a/public_html/fonts/roboto/Roboto-Light.woff2 b/public_html/fonts/roboto/Roboto-Light.woff2 new file mode 100644 index 0000000..9a4d98c Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Light.woff2 differ diff --git a/public_html/fonts/roboto/Roboto-Medium.eot b/public_html/fonts/roboto/Roboto-Medium.eot new file mode 100644 index 0000000..f9ad995 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Medium.eot differ diff --git a/public_html/fonts/roboto/Roboto-Medium.ttf b/public_html/fonts/roboto/Roboto-Medium.ttf new file mode 100644 index 0000000..a3c1a1f Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Medium.ttf differ diff --git a/public_html/fonts/roboto/Roboto-Medium.woff b/public_html/fonts/roboto/Roboto-Medium.woff new file mode 100644 index 0000000..1186773 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Medium.woff differ diff --git a/public_html/fonts/roboto/Roboto-Medium.woff2 b/public_html/fonts/roboto/Roboto-Medium.woff2 new file mode 100644 index 0000000..d10a592 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Medium.woff2 differ diff --git a/public_html/fonts/roboto/Roboto-Regular.eot b/public_html/fonts/roboto/Roboto-Regular.eot new file mode 100644 index 0000000..9b5e8e4 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Regular.eot differ diff --git a/public_html/fonts/roboto/Roboto-Regular.ttf b/public_html/fonts/roboto/Roboto-Regular.ttf new file mode 100644 index 0000000..0e58508 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Regular.ttf differ diff --git a/public_html/fonts/roboto/Roboto-Regular.woff b/public_html/fonts/roboto/Roboto-Regular.woff new file mode 100644 index 0000000..f823258 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Regular.woff differ diff --git a/public_html/fonts/roboto/Roboto-Regular.woff2 b/public_html/fonts/roboto/Roboto-Regular.woff2 new file mode 100644 index 0000000..b7082ef Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Regular.woff2 differ diff --git a/public_html/fonts/roboto/Roboto-Thin.eot b/public_html/fonts/roboto/Roboto-Thin.eot new file mode 100644 index 0000000..2284a3b Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Thin.eot differ diff --git a/public_html/fonts/roboto/Roboto-Thin.ttf b/public_html/fonts/roboto/Roboto-Thin.ttf new file mode 100644 index 0000000..8779333 Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Thin.ttf differ diff --git a/public_html/fonts/roboto/Roboto-Thin.woff b/public_html/fonts/roboto/Roboto-Thin.woff new file mode 100644 index 0000000..2a98c1e Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Thin.woff differ diff --git a/public_html/fonts/roboto/Roboto-Thin.woff2 b/public_html/fonts/roboto/Roboto-Thin.woff2 new file mode 100644 index 0000000..a38025a Binary files /dev/null and b/public_html/fonts/roboto/Roboto-Thin.woff2 differ diff --git a/public_html/includes/LogoSNIR.png b/public_html/includes/LogoSNIR.png new file mode 100644 index 0000000..92e2431 Binary files /dev/null and b/public_html/includes/LogoSNIR.png differ diff --git a/public_html/includes/footer.php b/public_html/includes/footer.php new file mode 100644 index 0000000..2b6936d --- /dev/null +++ b/public_html/includes/footer.php @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public_html/includes/header.php b/public_html/includes/header.php new file mode 100644 index 0000000..4581f8b --- /dev/null +++ b/public_html/includes/header.php @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + +menu + + + + + + + + + diff --git a/public_html/includes/php/connect.php b/public_html/includes/php/connect.php new file mode 100644 index 0000000..e81dbcc --- /dev/null +++ b/public_html/includes/php/connect.php @@ -0,0 +1,32 @@ +query("SELECT pseudo FROM login WHERE pseudo = '$pseudo' AND mdp = '$password'"); + $count = $requete->rowCount(); + + if($count == 1) + { + session_start(); + $_SESSION['pseudo'] = $_POST['pseudo']; + $reponse = "v"; + } + else + { + $reponse = "i"; + } + +} + +echo json_encode($reponse); \ No newline at end of file diff --git a/public_html/includes/php/connexion.php b/public_html/includes/php/connexion.php new file mode 100644 index 0000000..ef10cf5 --- /dev/null +++ b/public_html/includes/php/connexion.php @@ -0,0 +1,13 @@ +Pb connexion serveur BD : ' . $ex­>getMessage()); +    } +    return $bdd; +} diff --git a/public_html/includes/php/connexionbdd.php b/public_html/includes/php/connexionbdd.php new file mode 100644 index 0000000..3c53f9f --- /dev/null +++ b/public_html/includes/php/connexionbdd.php @@ -0,0 +1,14 @@ +Pb connexion serveur BDD : ' . $ex->getMessage()); + } + return $bdd; +} diff --git a/public_html/includes/php/disconnect.php b/public_html/includes/php/disconnect.php new file mode 100644 index 0000000..aa31b58 --- /dev/null +++ b/public_html/includes/php/disconnect.php @@ -0,0 +1,9 @@ +prepare("SELECT COUNT(pseudo) AS check FROM login WHERE pseudo = :pseudo LIMIT 1"); + //$requete->bindValue(":pseudo", $pseudo); + //$requete->execute(); + //$output = $requete->fetch(); + + $requete = $bdd->query("SELECT pseudo FROM login WHERE pseudo = '$pseudo'"); + $count = $requete->rowCount(); + + if($count != 1) + { + $requete = $bdd->prepare("INSERT INTO login (pseudo, prenom, nom, mdp) VALUES (:pseudo, :prenom, :nom, :mdp)"); + $requete->bindParam(":pseudo", $pseudo); + $requete->bindParam(":prenom", $firstname); + $requete->bindParam(":nom", $lastname); + $requete->bindParam(":mdp", $pass); + $requete->execute(); + $reponse = "v"; + } + else + { + $reponse = "i"; + } + } + else + { + $reponse = "u"; + } + +} + +echo json_encode($reponse); \ No newline at end of file diff --git a/public_html/index.php b/public_html/index.php new file mode 100644 index 0000000..a03fe68 --- /dev/null +++ b/public_html/index.php @@ -0,0 +1,98 @@ + + + + + + + + RASPSNIR + + + + + +
+
+
    +
  • Nouveautés

  • +
  • Mise en place de la page des wankulsdone
  • +
  • Ajout de BrowserQuestdone
  • +
  • Création de la V2 du sitedone
  • +
+
+
+
    +
  • +

    A faire

  • +
  • +
    + Ajout de Wankuls [Didier, Francois, Pierre]. +
    +
    +
    +
    +
  • +
  • +
    + Ajout de la musique du Tetris. +
    +
    +
    +
    +
  • +
  • +
    + Ajout d'une soundbox. +
    +
    +
    +
    +
  • +
  • +
    + Fix de la taille sur la page de redirection sur le site de la classe. (Ne s'adapte pas en fonction de la taille.) +
    +
    +
    +
    +
  • +
  • +
    + Ajout d'un tchat type IRC. +
    +
    +
    +
    +
  • +
  • +
    + Ajout du bot Twitter pour les infos importantes. +
    +
    +
    +
    +
  • +
  • +
    + Ajout d'une fonctionnalitée pour avoir plus d'informations sur les modifications faites. +
    +
    +
    +
    +
  • +
+
+
+
+
+ Statistiques +

Nombre de visites du site :

+
+
+
+
+ + + + + diff --git a/public_html/js/jquery.loadingbar.js b/public_html/js/jquery.loadingbar.js new file mode 100644 index 0000000..c47d6e5 --- /dev/null +++ b/public_html/js/jquery.loadingbar.js @@ -0,0 +1,2 @@ +/*! pace 1.0.0 */ +(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=[].slice,Y={}.hasOwnProperty,Z=function(a,b){function c(){this.constructor=a}for(var d in b)Y.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},$=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];cQ;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
\n
\n
\n
',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); \ No newline at end of file diff --git a/public_html/js/js.js b/public_html/js/js.js new file mode 100644 index 0000000..b48e475 --- /dev/null +++ b/public_html/js/js.js @@ -0,0 +1,233 @@ +// Initialize collapse button +$(".button-collapse").sideNav(); +// Initialize collapsible (uncomment the line below if you use the dropdown variation) +//$('.collapsible').collapsible(); + +function sleep(milliseconds) { + var start = new Date().getTime(); + for (var i = 0; i < 1e7; i++) { + if ((new Date().getTime() - start) > milliseconds){ + break; + } + } +} + +function backgroundCanvas(){ + + var width, height, canvas, ctx, points, target, animateHeader = true; + var pointDistance = 75; + var pointRadius = 2; + var raf; + + // Main + initHeader(); + initAnimation(); + addListeners(); + $("#background-canvas").fadeIn(1000); + + function initHeader() { + width = window.innerWidth; + height = window.innerHeight+2; + target = {}; + + canvas = document.getElementById('background-canvas'); + canvas.width = width; + canvas.height = height; + ctx = canvas.getContext('2d'); + + // create points + initPoints(); + } + + // Event handling + function addListeners() { + if(!('ontouchstart' in window)) { + window.addEventListener('mousemove', mouseMove); + } + window.addEventListener('resize', resize); + } + + function initAnimation() { + animate(); + } + + function animate() { + if(animateHeader) { + drawPoints(); + } + requestAnimationFrame(animate); + } + + function mouseMove(e) { + var posx = posy = 0; + if (e.clientX || e.clientY) { + posx = e.clientX; + posy = e.clientY; + } + target.x = posx; + target.y = posy; + } + + function resize() { + width = window.innerWidth; + height = window.innerHeight; + canvas.width = width; + canvas.height = height; + + for(var i in points) { + TweenLite.killTweensOf(points[i]); + } + + initPoints(); + } + + function initPoints(){ + // create points + points = []; + for(var x = 0; x <= width/pointDistance; x++) { + for(var y = 0; y < height/pointDistance; y++) { + var px = x*pointDistance; + var py = y*pointDistance; + var p = {x: px, originX: px, y: py, originY: py }; + points.push(p); + } + } + + // for each point find the 5 closest points + for(var i = 0; i < points.length; i++) { + var closest = []; + var p1 = points[i]; + for(var j = 0; j < points.length; j++) { + var p2 = points[j] + if(!(p1 == p2)) { + var placed = false; + for(var k = 0; k < 5; k++) { + if(!placed) { + if(closest[k] == undefined) { + closest[k] = p2; + placed = true; + } + } + } + + for(var k = 0; k < 5; k++) { + if(!placed) { + if(getDistance(p1, p2) < getDistance(p1, closest[k])) { + closest[k] = p2; + placed = true; + } + } + } + } + } + p1.closest = closest; + } + + // assign a circle to each point + for(var i in points) { + var c = new Circle(points[i], pointRadius, 'rgba(255,255,255,0.3)'); + points[i].circle = c; + } + + for(var i in points) { + shiftPoint(points[i]); + } + } + + function drawPoints(){ + + ctx.clearRect(0,0,width,height); + + for(var i in points) { + if(target){ + if(Math.abs(getDistance(target, points[i])) < 4000) { + points[i].opacity = 0.3; + points[i].circle.opacity = 1; + } else if(Math.abs(getDistance(target, points[i])) < 20000) { + points[i].opacity = 0.1; + points[i].circle.opacity = 1; + } else if(Math.abs(getDistance(target, points[i])) < 40000) { + points[i].opacity = 0.02; + points[i].circle.opacity = 0.8; + } else { + points[i].opacity = 0; + points[i].circle.opacity = 0.7; + } + } + + points[i].circle.color = 'rgba(156,217,249,1)'; + + drawLines(points[i]); + points[i].circle.draw(); + } + } + + function shiftPoint(p) { + TweenLite.to(p, 1+1*Math.random(), {x:p.originX+Math.random()*(pointDistance/2), + y: p.originY+Math.random()*(pointDistance/2), ease:Circ.easeInOut, + onComplete: function() { + shiftPoint(p); + }}); + } + + function drawLines(p) { + if(target){ + for(var i in p.closest) { + ctx.beginPath(); + ctx.moveTo(p.x, p.y); + ctx.lineTo(p.closest[i].x, p.closest[i].y); + ctx.strokeStyle = 'rgba(156,217,249,'+p.opacity+')'; + ctx.stroke(); + } + } + } + + function Circle(pos,rad,color) { + var _this = this; + + // constructor + (function() { + _this.pos = pos || null; + _this.radius = rad || null; + _this.color = color || null; + })(); + + this.draw = function() { + ctx.beginPath(); + ctx.arc(_this.pos.x, _this.pos.y, _this.radius, 0, 2 * Math.PI, false); + ctx.fillStyle = 'rgba(156,217,249,'+_this.opacity+')'; + ctx.fill(); + }; + } + + + // Util + function getDistance(p1, p2) { + return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2); + } +} + + + +$(function() { + Pace.on("done", function(){ + backgroundCanvas(); + }); +}); + +cheet('kp_4 kp_1 kp_2 kp_4 kp_2 kp_7 kp_0 kp_2 kp_0 kp_3 kp_1', function () { + $("#titresnir").html("

KAARIS


"); + $(".wankul").each(function() { + $(this).html("

Kaaris
Puuuuuteuh

"); + }); + $(".gaben").each(function() { + $(this).html("

Kaaris
Steaaameuh

"); + }); +}); + +cheet('o u i', function () { + //$("#rotate").toggleClass("rotate"); + $("#rotate").animate({ + "transform": "rotate(180)" + },2000); +}); diff --git a/public_html/js/login.js b/public_html/js/login.js new file mode 100644 index 0000000..4d49b59 --- /dev/null +++ b/public_html/js/login.js @@ -0,0 +1,101 @@ +$(document).ready(function(){ + // the "href" attribute of .modal-trigger must specify the modal ID that wants to be triggered + $('.modal-trigger').leanModal(); + + /*$('#boutonEnvoyer').click(function(){ + alert(yolo); + }); + */ + + + //Fonction d'envoi de l'inscription. Tout est fait en ajax et fait appel à la page php inscription. + $('#validRegister').click(function(){ + if(($('#first_name').val() == 0) || ($('#last_name').val() == 0) || ($('#pseudo').val() == 0) || ($('#password').val() == 0) || ($('#repassword').val() == 0)){ + $("#error").html("Tous vos champs n'ont pas été rempli."); + } + else + { + $.ajax({ + url: '/includes/php/inscription.php', + data: $('#first_name, #last_name, #pseudo, #password, #repassword').serialize(), + type: 'POST', + dataType: 'json', + success: + function(donnees, status, xhr) + { + switch(donnees) + { + case "n": + $("#error").html("Tous vos champs n'ont pas été rempli."); + break; + case "u": + $("#error").html("Vos mot de passes sont incorrects."); + break; + case "v": + $("#error").toggleClass("errorBQ"); + $("#error").toggleClass("successBQ"); + $("#error").html("Vous avez bien été inscrit. Vous pouvez vous connecter ici"); + $('#modal1').closeModal(); + $('#modal2').openModal(); + break; + case "i": + $("#error").html("Ce pseudo est déjà prit."); + break; + } + }, + error: + function (xhr, status, error) { + alert("param : " + xhr.responseText); + alert("status : " + status); + alert("error : " + error); + } + }); + } + }); + + + $("#validLogin").click(function(){ + + if(($("#pseudoLogin").val() == 0) && ($("#passwordLogin").val() == 0)) + { + $("#errorLogin").html("Tous vos champs n'ont pas été rempli"); + } + else + { + $.ajax({ + url: '/includes/php/connect.php', + data: $("#pseudoLogin, #passwordLogin").serialize(), + type: 'POST', + dataType: 'json', + success: + function(donnees, status, xhr) + { + switch(donnees) + { + case "n": + $("#errorLogin").html("Tous vos champs n'ont pas été rempli."); + break; + case "i": + $("#errorLogin").html("Pseudo ou mot de passes sont incorrects."); + break; + case "v": + $("#errorLogin").toggleClass("errorBQ"); + $("#errorLogin").toggleClass("successBQ"); + $("#errorLogin").html("Vous êtes désormais connecté. La page va se recharger."); + location.reload(); + break; + } + }, + error: + function(xhr, status, error) + { + alert("param : " + xhr.responseText); + alert("status : " + status); + alert("error : " + error); + } + }); + } + + }); + +}); diff --git a/public_html/js/materialize.js b/public_html/js/materialize.js new file mode 100644 index 0000000..a294a81 --- /dev/null +++ b/public_html/js/materialize.js @@ -0,0 +1,7468 @@ +/*! + * Materialize v0.97.7 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +// Check for jQuery. +if (typeof(jQuery) === 'undefined') { + var jQuery; + // Check if require is a defined function. + if (typeof(require) === 'function') { + jQuery = $ = require('jquery'); + // Else use the dollar sign alias. + } else { + jQuery = $; + } +} +;/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + easeInQuad: function (x, t, b, c, d) { + return c*(t/=d)*t + b; + }, + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }, + easeInOutQuad: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + }, + easeInCubic: function (x, t, b, c, d) { + return c*(t/=d)*t*t + b; + }, + easeOutCubic: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + }, + easeInOutCubic: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + }, + easeInQuart: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t + b; + }, + easeOutQuart: function (x, t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + }, + easeInOutQuart: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + }, + easeInQuint: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + }, + easeOutQuint: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + }, + easeInOutQuint: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + }, + easeInSine: function (x, t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + }, + easeOutSine: function (x, t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + }, + easeInOutSine: function (x, t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + }, + easeInExpo: function (x, t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + }, + easeOutExpo: function (x, t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + easeInOutExpo: function (x, t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function (x, t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + }, + easeOutCirc: function (x, t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + }, + easeInOutCirc: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + }, + easeInElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + }, + easeOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + }, + easeInOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + }, + easeInBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + }, + easeOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + }, + easeInOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + }, + easeInBounce: function (x, t, b, c, d) { + return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; + }, + easeOutBounce: function (x, t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + }, + easeInOutBounce: function (x, t, b, c, d) { + if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; + return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */; // Custom Easing + jQuery.extend( jQuery.easing, + { + easeInOutMaterial: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return c/4*((t-=2)*t*t + 2) + b; + } + }); + +;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ +/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ +/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */ +jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(e){function t(e){var t=e.length,a=r.type(e);return"function"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===a||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e},r.isArray=Array.isArray||function(e){return"array"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||"object"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||"fx")+"queue";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||"fx";var n=r.queue(a,t),o=n.shift();"inprogress"===o&&(o=n.shift()),o&&("fx"===t&&n.unshift("inprogress"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando="velocity"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s="Boolean Number String Function Array Date RegExp Object Error".split(" "),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var T=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];f.each(T,function(e,t){S.setPropertyValue(V,"display",t)})}S.setPropertyValue(V,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&S.setPropertyValue(V,"visibility",u.visibility);for(var k in P)if("element"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,"tween"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?"":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H]("extract",null,L[1]):L[1]),"transform"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d="(0px, 0px, 0px)",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&"none"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&S.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&S.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="",t.getElementsByTagName("span").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v="swing",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,"velocity",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft="pageXOffset",b.State.scrollPropertyTop="pageYOffset"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft="scrollLeft",b.State.scrollPropertyTop="scrollTop");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=d?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=d?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,"display","none")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,"display")&&(u=!0,S.setPropertyValue(e,"display",S.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(S.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(S.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===d&&"filter"===r?g.getPropertyValue(r):g[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,"position");("fixed"===m||"absolute"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+"px")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c]("extract",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r]("name",e),"transform"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r]("extract",e,g)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&"transform"===S.Normalizations.registered[r]("name",e))S.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r]("inject",e,a),r=S.Normalizations.registered[r]("name",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r="";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===d&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}S.setPropertyValue(e,"transform",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,"position"),fontSize:S.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");b.init(u),e.myParent.appendChild(u),f.each(["overflow","overflowX","overflowY"],function(e,t){b.CSS.setPropertyValue(u,t,"hidden")}),b.CSS.setPropertyValue(u,"position",e.position),b.CSS.setPropertyValue(u,"fontSize",e.fontSize),b.CSS.setPropertyValue(u,"boxSizing","content-box"),f.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){b.CSS.setPropertyValue(u,t,s+"%")}),b.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if("scroll"===A){var P,C,T,F=/^x$/i.test(s.axis)?"Left":"Top",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container["scroll"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State["scrollProperty"+F]],C=b.State.scrollAnchor[b.State["scrollProperty"+("Left"===F?"Top":"Left")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if("element"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(E[H]),o)}l=E}else if("start"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp("^"+S.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,"reverse",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each(["Down","Up"],function(e,t){b.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},d={};l.display===a&&(l.display="Down"===t?"inline"===b.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each(["In","Out"],function(e,t){b.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)})); +;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;af?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance li > .collapsible-header'); + + var collapsible_type = $this.data("collapsible"); + + // Turn off any existing event handlers + $this.off('click.collapse', '> li > .collapsible-header'); + $panel_headers.off('click.collapse'); + + + /**************** + Helper Functions + ****************/ + + // Accordion Open + function accordionOpen(object) { + $panel_headers = $this.find('> li > .collapsible-header'); + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + + $panel_headers.not(object).removeClass('active').parent().removeClass('active'); + $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).slideUp( + { + duration: 350, + easing: "easeOutQuart", + queue: false, + complete: + function() { + $(this).css('height', ''); + } + }); + } + + // Expandable Open + function expandableOpen(object) { + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + } + + /** + * Check if object is children of panel header + * @param {Object} object Jquery object + * @return {Boolean} true if it is children + */ + function isChildrenOfPanelHeader(object) { + + var panelHeader = getPanelHeader(object); + + return panelHeader.length > 0; + } + + /** + * Get panel header from a children element + * @param {Object} object Jquery object + * @return {Object} panel header object + */ + function getPanelHeader(object) { + + return object.closest('li > .collapsible-header'); + } + + /***** End Helper Functions *****/ + + + + // Add click handler to only direct collapsible header children + $this.on('click.collapse', '> li > .collapsible-header', function(e) { + var $header = $(this), + element = $(e.target); + + if (isChildrenOfPanelHeader(element)) { + element = getPanelHeader(element); + } + + element.toggleClass('active'); + + if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion + accordionOpen(element); + } else { // Handle Expandables + expandableOpen(element); + + if ($header.hasClass('active')) { + expandableOpen($header); + } + } + }); + + // Open first active + var $panel_headers = $this.find('> li > .collapsible-header'); + if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion + accordionOpen($panel_headers.filter('.active').first()); + } + else { // Handle Expandables + $panel_headers.filter('.active').each(function() { + expandableOpen($(this)); + }); + } + + }); + }; + + $(document).ready(function(){ + $('.collapsible').collapsible(); + }); +}( jQuery ));;(function ($) { + + // Add posibility to scroll to selected option + // usefull for select for example + $.fn.scrollTo = function(elem) { + $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); + return this; + }; + + $.fn.dropdown = function (options) { + var defaults = { + inDuration: 300, + outDuration: 225, + constrain_width: true, // Constrains width of dropdown to the activator + hover: false, + gutter: 0, // Spacing from edge + belowOrigin: false, + alignment: 'left', + stopPropagation: false + }; + + // Open dropdown. + if (options === "open") { + this.each(function() { + $(this).trigger('open'); + }); + return false; + } + + // Close dropdown. + if (options === "close") { + this.each(function() { + $(this).trigger('close'); + }); + return false; + } + + this.each(function(){ + var origin = $(this); + var options = $.extend({}, defaults, options); + var isFocused = false; + + // Dropdown menu + var activates = $("#"+ origin.attr('data-activates')); + + function updateOptions() { + if (origin.data('induration') !== undefined) + options.inDuration = origin.data('induration'); + if (origin.data('outduration') !== undefined) + options.outDuration = origin.data('outduration'); + if (origin.data('constrainwidth') !== undefined) + options.constrain_width = origin.data('constrainwidth'); + if (origin.data('hover') !== undefined) + options.hover = origin.data('hover'); + if (origin.data('gutter') !== undefined) + options.gutter = origin.data('gutter'); + if (origin.data('beloworigin') !== undefined) + options.belowOrigin = origin.data('beloworigin'); + if (origin.data('alignment') !== undefined) + options.alignment = origin.data('alignment'); + if (origin.data('stoppropagation') !== undefined) + options.stopPropagation = origin.data('stoppropagation'); + } + + updateOptions(); + + // Attach dropdown to its activator + origin.after(activates); + + /* + Helper function to position and resize dropdown. + Used in hover and click handler. + */ + function placeDropdown(eventType) { + // Check for simultaneous focus and click events. + if (eventType === 'focus') { + isFocused = true; + } + + // Check html data attributes + updateOptions(); + + // Set Dropdown state + activates.addClass('active'); + origin.addClass('active'); + + // Constrain width + if (options.constrain_width === true) { + activates.css('width', origin.outerWidth()); + + } else { + activates.css('white-space', 'nowrap'); + } + + // Offscreen detection + var windowHeight = window.innerHeight; + var originHeight = origin.innerHeight(); + var offsetLeft = origin.offset().left; + var offsetTop = origin.offset().top - $(window).scrollTop(); + var currAlignment = options.alignment; + var gutterSpacing = 0; + var leftPosition = 0; + + // Below Origin + var verticalOffset = 0; + if (options.belowOrigin === true) { + verticalOffset = originHeight; + } + + // Check for scrolling positioned container. + var scrollYOffset = 0; + var scrollXOffset = 0; + var wrapper = origin.parent(); + if (!wrapper.is('body')) { + if (wrapper[0].scrollHeight > wrapper[0].clientHeight) { + scrollYOffset = wrapper[0].scrollTop; + } + if (wrapper[0].scrollWidth > wrapper[0].clientWidth) { + scrollXOffset = wrapper[0].scrollLeft; + } + } + + + if (offsetLeft + activates.innerWidth() > $(window).width()) { + // Dropdown goes past screen on right, force right alignment + currAlignment = 'right'; + + } else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) { + // Dropdown goes past screen on left, force left alignment + currAlignment = 'left'; + } + // Vertical bottom offscreen detection + if (offsetTop + activates.innerHeight() > windowHeight) { + // If going upwards still goes offscreen, just crop height of dropdown. + if (offsetTop + originHeight - activates.innerHeight() < 0) { + var adjustedHeight = windowHeight - offsetTop - verticalOffset; + activates.css('max-height', adjustedHeight); + } else { + // Flow upwards. + if (!verticalOffset) { + verticalOffset += originHeight; + } + verticalOffset -= activates.innerHeight(); + } + } + + // Handle edge alignment + if (currAlignment === 'left') { + gutterSpacing = options.gutter; + leftPosition = origin.position().left + gutterSpacing; + } + else if (currAlignment === 'right') { + var offsetRight = origin.position().left + origin.outerWidth() - activates.outerWidth(); + gutterSpacing = -options.gutter; + leftPosition = offsetRight + gutterSpacing; + } + + // Position dropdown + activates.css({ + position: 'absolute', + top: origin.position().top + verticalOffset + scrollYOffset, + left: leftPosition + scrollXOffset + }); + + + // Show dropdown + activates.stop(true, true).css('opacity', 0) + .slideDown({ + queue: false, + duration: options.inDuration, + easing: 'easeOutCubic', + complete: function() { + $(this).css('height', ''); + } + }) + .animate( {opacity: 1}, {queue: false, duration: options.inDuration, easing: 'easeOutSine'}); + } + + function hideDropdown() { + // Check for simultaneous focus and click events. + isFocused = false; + activates.fadeOut(options.outDuration); + activates.removeClass('active'); + origin.removeClass('active'); + setTimeout(function() { activates.css('max-height', ''); }, options.outDuration); + } + + // Hover + if (options.hover) { + var open = false; + origin.unbind('click.' + origin.attr('id')); + // Hover handler to show dropdown + origin.on('mouseenter', function(e){ // Mouse over + if (open === false) { + placeDropdown(); + open = true; + } + }); + origin.on('mouseleave', function(e){ + // If hover on origin then to something other than dropdown content, then close + var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element + if(!$(toEl).closest('.dropdown-content').is(activates)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + activates.on('mouseleave', function(e){ // Mouse out + var toEl = e.toElement || e.relatedTarget; + if(!$(toEl).closest('.dropdown-button').is(origin)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + // Click + } else { + // Click handler to show dropdown + origin.unbind('click.' + origin.attr('id')); + origin.bind('click.'+origin.attr('id'), function(e){ + if (!isFocused) { + if ( origin[0] == e.currentTarget && + !origin.hasClass('active') && + ($(e.target).closest('.dropdown-content').length === 0)) { + e.preventDefault(); // Prevents button click from moving window + if (options.stopPropagation) { + e.stopPropagation(); + } + placeDropdown('click'); + } + // If origin is clicked and menu is open, close menu + else if (origin.hasClass('active')) { + hideDropdown(); + $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); + } + // If menu open, add click close handler to document + if (activates.hasClass('active')) { + $(document).bind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'), function (e) { + if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length) ) { + hideDropdown(); + $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); + } + }); + } + } + }); + + } // End else + + // Listen to open and close event - useful for select component + origin.on('open', function(e, eventType) { + placeDropdown(eventType); + }); + origin.on('close', hideDropdown); + + + }); + }; // End dropdown plugin + + $(document).ready(function(){ + $('.dropdown-button').dropdown(); + }); +}( jQuery )); +;(function($) { + var _stack = 0, + _lastID = 0, + _generateID = function() { + _lastID++; + return 'materialize-lean-overlay-' + _lastID; + }; + + $.fn.extend({ + openModal: function(options) { + + var $body = $('body'); + var oldWidth = $body.innerWidth() - 300; + $body.css('overflow', 'hidden'); + $body.width(oldWidth); + + var defaults = { + opacity: 0.5, + in_duration: 350, + out_duration: 250, + ready: undefined, + complete: undefined, + dismissible: true, + starting_top: '4%', + ending_top: '10%' + }; + var $modal = $(this); + + if ($modal.hasClass('open')) { + return; + } + + var overlayID = _generateID(); + var $overlay = $('
'); + lStack = (++_stack); + + // Store a reference of the overlay + $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); + $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); + $modal.addClass('open'); + + $("body").append($overlay); + + // Override defaults + options = $.extend(defaults, options); + + if (options.dismissible) { + $overlay.click(function() { + $modal.closeModal(options); + }); + // Return on ESC + $(document).on('keyup.leanModal' + overlayID, function(e) { + if (e.keyCode === 27) { // ESC key + $modal.closeModal(options); + } + }); + } + + $modal.find(".modal-close").on('click.close', function(e) { + $modal.closeModal(options); + }); + + $overlay.css({ display : "block", opacity : 0 }); + + $modal.css({ + display : "block", + opacity: 0 + }); + + $overlay.velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"}); + $modal.data('associated-overlay', $overlay[0]); + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "0", opacity: 1}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + else { + $.Velocity.hook($modal, "scaleX", 0.7); + $modal.css({ top: options.starting_top }); + $modal.velocity({top: options.ending_top, opacity: 1, scaleX: '1'}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + + + } + }); + + $.fn.extend({ + closeModal: function(options) { + var defaults = { + out_duration: 250, + complete: undefined + }; + var $modal = $(this); + var overlayID = $modal.data('overlay-id'); + var $overlay = $('#' + overlayID); + $modal.removeClass('open'); + + options = $.extend(defaults, options); + + // Enable scrolling + $('body').css({ + overflow: '', + width: '' + }); + + $modal.find('.modal-close').off('click.close'); + $(document).off('keyup.leanModal' + overlayID); + + $overlay.velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"}); + + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "-100%", opacity: 0}, { + duration: options.out_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + $overlay.css({display:"none"}); + + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + }); + } + else { + $modal.velocity( + { top: options.starting_top, opacity: 0, scaleX: 0.7}, { + duration: options.out_duration, + complete: + function() { + + $(this).css('display', 'none'); + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + } + ); + } + } + }); + + $.fn.extend({ + leanModal: function(option) { + return this.each(function() { + + var defaults = { + starting_top: '4%' + }, + // Override defaults + options = $.extend(defaults, option); + + // Close Handlers + $(this).click(function(e) { + options.starting_top = ($(this).offset().top - $(window).scrollTop()) /1.15; + var modal_id = $(this).attr("href") || '#' + $(this).data('target'); + $(modal_id).openModal(options); + e.preventDefault(); + }); // done set on click + }); // done return + } + }); +})(jQuery); +;(function ($) { + + $.fn.materialbox = function () { + + return this.each(function() { + + if ($(this).hasClass('initialized')) { + return; + } + + $(this).addClass('initialized'); + + var overlayActive = false; + var doneAnimating = true; + var inDuration = 275; + var outDuration = 200; + var origin = $(this); + var placeholder = $('
').addClass('material-placeholder'); + var originalWidth = 0; + var originalHeight = 0; + var ancestorsChanged; + var ancestor; + origin.wrap(placeholder); + + + origin.on('click', function(){ + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.width(); + var originalHeight = origin.height(); + + + // If already modal, return to original + if (doneAnimating === false) { + returnToOriginal(); + return false; + } + else if (overlayActive && doneAnimating===true) { + returnToOriginal(); + return false; + } + + + // Set states + doneAnimating = false; + origin.addClass('active'); + overlayActive = true; + + // Set positioning for placeholder + placeholder.css({ + width: placeholder[0].getBoundingClientRect().width, + height: placeholder[0].getBoundingClientRect().height, + position: 'relative', + top: 0, + left: 0 + }); + + // Find ancestor with overflow: hidden; and remove it + ancestorsChanged = undefined; + ancestor = placeholder[0].parentNode; + var count = 0; + while (ancestor !== null && !$(ancestor).is(document)) { + var curr = $(ancestor); + if (curr.css('overflow') !== 'visible') { + curr.css('overflow', 'visible'); + if (ancestorsChanged === undefined) { + ancestorsChanged = curr; + } + else { + ancestorsChanged = ancestorsChanged.add(curr); + } + } + ancestor = ancestor.parentNode; + } + + // Set css on origin + origin.css({position: 'absolute', 'z-index': 1000}) + .data('width', originalWidth) + .data('height', originalHeight); + + // Add overlay + var overlay = $('
') + .css({ + opacity: 0 + }) + .click(function(){ + if (doneAnimating === true) + returnToOriginal(); + }); + // Animate Overlay + // Put before in origin image to preserve z-index layering. + origin.before(overlay); + overlay.velocity({opacity: 1}, + {duration: inDuration, queue: false, easing: 'easeOutQuad'} ); + + // Add and animate caption if it exists + if (origin.data('caption') !== "") { + var $photo_caption = $('
'); + $photo_caption.text(origin.data('caption')); + $('body').append($photo_caption); + $photo_caption.css({ "display": "inline" }); + $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); + } + + // Resize Image + var ratio = 0; + var widthPercent = originalWidth / windowWidth; + var heightPercent = originalHeight / windowHeight; + var newWidth = 0; + var newHeight = 0; + + if (widthPercent > heightPercent) { + ratio = originalHeight / originalWidth; + newWidth = windowWidth * 0.9; + newHeight = windowWidth * 0.9 * ratio; + } + else { + ratio = originalWidth / originalHeight; + newWidth = (windowHeight * 0.9) * ratio; + newHeight = windowHeight * 0.9; + } + + // Animate image + set z-index + if(origin.hasClass('responsive-img')) { + origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, + complete: function(){ + origin.css({left: 0, top: 0}) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); + } // End Complete + }); // End Velocity + } + else { + origin.css('left', 0) + .css('top', 0) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); // End Velocity + } + + }); // End origin on click + + + // Return on scroll + $(window).scroll(function() { + if (overlayActive) { + returnToOriginal(); + } + }); + + // Return on ESC + $(document).keyup(function(e) { + + if (e.keyCode === 27 && doneAnimating === true) { // ESC key + if (overlayActive) { + returnToOriginal(); + } + } + }); + + + // This function returns the modaled image to the original spot + function returnToOriginal() { + + doneAnimating = false; + + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.data('width'); + var originalHeight = origin.data('height'); + + origin.velocity("stop", true); + $('#materialbox-overlay').velocity("stop", true); + $('.materialbox-caption').velocity("stop", true); + + + $('#materialbox-overlay').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + // Remove Overlay + overlayActive = false; + $(this).remove(); + } + }); + + // Resize Image + origin.velocity( + { + width: originalWidth, + height: originalHeight, + left: 0, + top: 0 + }, + { + duration: outDuration, + queue: false, easing: 'easeOutQuad' + } + ); + + // Remove Caption + reset css settings on image + $('.materialbox-caption').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + placeholder.css({ + height: '', + width: '', + position: '', + top: '', + left: '' + }); + + origin.css({ + height: '', + top: '', + left: '', + width: '', + 'max-width': '', + position: '', + 'z-index': '' + }); + + // Remove class + origin.removeClass('active'); + doneAnimating = true; + $(this).remove(); + + // Remove overflow overrides on ancestors + if (ancestorsChanged) { + ancestorsChanged.css('overflow', ''); + } + } + }); + + } + }); +}; + +$(document).ready(function(){ + $('.materialboxed').materialbox(); +}); + +}( jQuery )); +;(function ($) { + + $.fn.parallax = function () { + var window_width = $(window).width(); + // Parallax Scripts + return this.each(function(i) { + var $this = $(this); + $this.addClass('parallax'); + + function updateParallax(initial) { + var container_height; + if (window_width < 601) { + container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); + } + else { + container_height = ($this.height() > 0) ? $this.height() : 500; + } + var $img = $this.children("img").first(); + var img_height = $img.height(); + var parallax_dist = img_height - container_height; + var bottom = $this.offset().top + container_height; + var top = $this.offset().top; + var scrollTop = $(window).scrollTop(); + var windowHeight = window.innerHeight; + var windowBottom = scrollTop + windowHeight; + var percentScrolled = (windowBottom - top) / (container_height + windowHeight); + var parallax = Math.round((parallax_dist * percentScrolled)); + + if (initial) { + $img.css('display', 'block'); + } + if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { + $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); + } + + } + + // Wait for image load + $this.children("img").one("load", function() { + updateParallax(true); + }).each(function() { + if(this.complete) $(this).load(); + }); + + $(window).scroll(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + $(window).resize(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + }); + + }; +}( jQuery ));;(function ($) { + + var methods = { + init : function(options) { + var defaults = { + onShow: null + }; + options = $.extend(defaults, options); + + return this.each(function() { + + // For each set of tabs, we want to keep track of + // which tab is active and its associated content + var $this = $(this), + window_width = $(window).width(); + + $this.width('100%'); + var $active, $content, $links = $this.find('li.tab a'), + $tabs_width = $this.width(), + $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length, + $index = 0; + + // If the location.hash matches one of the links, use that as the active tab. + $active = $($links.filter('[href="'+location.hash+'"]')); + + // If no match is found, use the first link or any with class 'active' as the initial active tab. + if ($active.length === 0) { + $active = $(this).find('li.tab a.active').first(); + } + if ($active.length === 0) { + $active = $(this).find('li.tab a').first(); + } + + $active.addClass('active'); + $index = $links.index($active); + if ($index < 0) { + $index = 0; + } + + if ($active[0] !== undefined) { + $content = $($active[0].hash); + } + + // append indicator then set indicator width to tab width + $this.append('
'); + var $indicator = $this.find('.indicator'); + if ($this.is(":visible")) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + $(window).resize(function () { + $tabs_width = $this.width(); + $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; + if ($index < 0) { + $index = 0; + } + if ($tab_width !== 0 && $tabs_width !== 0) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + }); + + // Hide the remaining content + $links.not($active).each(function () { + $(this.hash).hide(); + }); + + + // Bind the click event handler + $this.on('click', 'a', function(e) { + if ($(this).parent().hasClass('disabled')) { + e.preventDefault(); + return; + } + + // Act as regular link if target attribute is specified. + if (!!$(this).attr("target")) { + return; + } + + $tabs_width = $this.width(); + $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; + + // Make the old tab inactive. + $active.removeClass('active'); + if ($content !== undefined) { + $content.hide(); + } + + // Update the variables with the new link and content + $active = $(this); + $content = $(this.hash); + $links = $this.find('li.tab a'); + + // Make the tab active. + $active.addClass('active'); + var $prev_index = $index; + $index = $links.index($(this)); + if ($index < 0) { + $index = 0; + } + // Change url to current tab + // window.location.hash = $active.attr('href'); + + if ($content !== undefined) { + $content.show(); + if (typeof(options.onShow) === "function") { + options.onShow.call(this, $content); + } + } + + // Update indicator + if (($index - $prev_index) >= 0) { + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"left": $index * $tab_width}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); + + } + else { + $indicator.velocity({"left": $index * $tab_width}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); + } + + // Prevent the anchor's default click action + e.preventDefault(); + }); + }); + + }, + select_tab : function( id ) { + this.find('a[href="#' + id + '"]').trigger('click'); + } + }; + + $.fn.tabs = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; + + $(document).ready(function(){ + $('ul.tabs').tabs(); + }); +}( jQuery )); +;(function ($) { + $.fn.tooltip = function (options) { + var timeout = null, + margin = 5; + + // Defaults + var defaults = { + delay: 350, + tooltip: '', + position: 'bottom', + html: false + }; + + // Remove tooltip from the activator + if (options === "remove") { + this.each(function() { + $('#' + $(this).attr('data-tooltip-id')).remove(); + $(this).off('mouseenter.tooltip mouseleave.tooltip'); + }); + return false; + } + + options = $.extend(defaults, options); + + return this.each(function() { + var tooltipId = Materialize.guid(); + var origin = $(this); + origin.attr('data-tooltip-id', tooltipId); + + // Get attributes. + var allowHtml, + tooltipDelay, + tooltipPosition, + tooltipText, + tooltipEl, + backdrop; + var setAttributes = function() { + allowHtml = origin.attr('data-html') ? origin.attr('data-html') === 'true' : options.html; + tooltipDelay = origin.attr('data-delay'); + tooltipDelay = (tooltipDelay === undefined || tooltipDelay === '') ? + options.delay : tooltipDelay; + tooltipPosition = origin.attr('data-position'); + tooltipPosition = (tooltipPosition === undefined || tooltipPosition === '') ? + options.position : tooltipPosition; + tooltipText = origin.attr('data-tooltip'); + tooltipText = (tooltipText === undefined || tooltipText === '') ? + options.tooltip : tooltipText; + }; + setAttributes(); + + var renderTooltipEl = function() { + var tooltip = $('
'); + + // Create Text span + if (allowHtml) { + tooltipText = $('').html(tooltipText); + } else{ + tooltipText = $('').text(tooltipText); + } + + // Create tooltip + tooltip.append(tooltipText) + .appendTo($('body')) + .attr('id', tooltipId); + + // Create backdrop + backdrop = $('
'); + backdrop.appendTo(tooltip); + return tooltip; + }; + tooltipEl = renderTooltipEl(); + + // Destroy previously binded events + origin.off('mouseenter.tooltip mouseleave.tooltip'); + // Mouse In + var started = false, timeoutRef; + origin.on({'mouseenter.tooltip': function(e) { + var showTooltip = function() { + setAttributes(); + started = true; + tooltipEl.velocity('stop'); + backdrop.velocity('stop'); + tooltipEl.css({ display: 'block', left: '0px', top: '0px' }); + + // Tooltip positioning + var originWidth = origin.outerWidth(); + var originHeight = origin.outerHeight(); + + var tooltipHeight = tooltipEl.outerHeight(); + var tooltipWidth = tooltipEl.outerWidth(); + var tooltipVerticalMovement = '0px'; + var tooltipHorizontalMovement = '0px'; + var scaleXFactor = 8; + var scaleYFactor = 8; + var targetTop, targetLeft, newCoordinates; + + if (tooltipPosition === "top") { + // Top Position + targetTop = origin.offset().top - tooltipHeight - margin; + targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + + tooltipVerticalMovement = '-10px'; + backdrop.css({ + bottom: 0, + left: 0, + borderRadius: '14px 14px 0 0', + transformOrigin: '50% 100%', + marginTop: tooltipHeight, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + // Left Position + else if (tooltipPosition === "left") { + targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; + targetLeft = origin.offset().left - tooltipWidth - margin; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + top: '-7px', + right: 0, + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight/2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; + targetLeft = origin.offset().left + originWidth + margin; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + top: '-7px', + left: 0, + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight/2, + marginLeft: '0px' + }); + } + else { + // Bottom Position + targetTop = origin.offset().top + origin.outerHeight() + margin; + targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + top: 0, + left: 0, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + + // Set tooptip css placement + tooltipEl.css({ + top: newCoordinates.y, + left: newCoordinates.x + }); + + // Calculate Scale to fill + scaleXFactor = Math.SQRT2 * tooltipWidth / parseInt(backdrop.css('width')); + scaleYFactor = Math.SQRT2 * tooltipHeight / parseInt(backdrop.css('height')); + + tooltipEl.velocity({ marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false }) + .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false}); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) + .velocity({scaleX: scaleXFactor, scaleY: scaleYFactor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); + }; + + timeoutRef = setTimeout(showTooltip, tooltipDelay); // End Interval + + // Mouse Out + }, + 'mouseleave.tooltip': function(){ + // Reset State + started = false; + clearTimeout(timeoutRef); + + // Animate back + setTimeout(function() { + if (started !== true) { + tooltipEl.velocity({ + opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false}); + backdrop.velocity({opacity: 0, scaleX: 1, scaleY: 1}, { + duration:225, + queue: false, + complete: function(){ + backdrop.css('display', 'none'); + tooltipEl.css('display', 'none'); + started = false;} + }); + } + },225); + } + }); + }); + }; + + var repositionWithinScreen = function(x, y, width, height) { + var newX = x; + var newY = y; + + if (newX < 0) { + newX = 4; + } else if (newX + width > window.innerWidth) { + newX -= newX + width - window.innerWidth; + } + + if (newY < 0) { + newY = 4; + } else if (newY + height > window.innerHeight + $(window).scrollTop) { + newY -= newY + height - window.innerHeight; + } + + return {x: newX, y: newY}; + }; + + $(document).ready(function(){ + $('.tooltipped').tooltip(); + }); +}( jQuery )); +;/*! + * Waves v0.6.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +;(function(window) { + 'use strict'; + + var Waves = Waves || {}; + var $$ = document.querySelectorAll.bind(document); + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + var docElem, win, + box = {top: 0, left: 0}, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function convertStyle(obj) { + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 750, + + show: function(e, element) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = element || this; + + // Create ripple + var ripple = document.createElement('div'); + ripple.className = 'waves-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top); + var relativeX = (e.pageX - pos.left); + var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' waves-notransition'; + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('waves-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function(e) { + TouchHandler.touchup(e); + + var el = this; + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + var ripples = el.getElementsByClassName('waves-ripple'); + if (ripples.length > 0) { + ripple = ripples[ripples.length - 1]; + } else { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 350 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + var style = { + 'top': relativeY+'px', + 'left': relativeX+'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + try { + el.removeChild(ripple); + } catch(e) { + return false; + } + }, Effect.duration); + }, delay); + }, + + // Little hack to make can perform waves effect + wrapInput: function(elements) { + for (var a = 0; a < elements.length; a++) { + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { + continue; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' waves-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + + /** + * Disable mousedown event for 500ms during and after touch + */ + var TouchHandler = { + /* uses an integer rather than bool so there's no issues with + * needing to clear timeouts if another touch event occurred + * within the 500ms. Cannot mouseup between touchstart and + * touchend, nor in the 500ms after touchend. */ + touches: 0, + allowEvent: function(e) { + var allow = true; + + if (e.type === 'touchstart') { + TouchHandler.touches += 1; //push + } else if (e.type === 'touchend' || e.type === 'touchcancel') { + setTimeout(function() { + if (TouchHandler.touches > 0) { + TouchHandler.touches -= 1; //pop after 500ms + } + }, 500); + } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { + allow = false; + } + + return allow; + }, + touchup: function(e) { + TouchHandler.allowEvent(e); + } + }; + + + /** + * Delegated click handler for .waves-effect element. + * returns null when .waves-effect element not in "click tree" + */ + function getWavesEffectElement(e) { + if (TouchHandler.allowEvent(e) === false) { + return null; + } + + var element = null; + var target = e.target || e.srcElement; + + while (target.parentElement !== null) { + if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { + element = target; + break; + } else if (target.classList.contains('waves-effect')) { + element = target; + break; + } + target = target.parentElement; + } + + return element; + } + + /** + * Bubble the click and show effect if .waves-effect elem was found + */ + function showEffect(e) { + var element = getWavesEffectElement(e); + + if (element !== null) { + Effect.show(e, element); + + if ('ontouchstart' in window) { + element.addEventListener('touchend', Effect.hide, false); + element.addEventListener('touchcancel', Effect.hide, false); + } + + element.addEventListener('mouseup', Effect.hide, false); + element.addEventListener('mouseleave', Effect.hide, false); + } + } + + Waves.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + Effect.wrapInput($$('.waves-effect')); + + if ('ontouchstart' in window) { + document.body.addEventListener('touchstart', showEffect, false); + } + + document.body.addEventListener('mousedown', showEffect, false); + }; + + /** + * Attach Waves to an input element (or any element which doesn't + * bubble mouseup/mousedown events). + * Intended to be used with dynamically loaded forms/inputs, or + * where the user doesn't want a delegated click handler. + */ + Waves.attach = function(element) { + //FUTURE: automatically add waves classes and allow users + // to specify them with an options param? Eg. light/classic/button + if (element.tagName.toLowerCase() === 'input') { + Effect.wrapInput([element]); + element = element.parentElement; + } + + if ('ontouchstart' in window) { + element.addEventListener('touchstart', showEffect, false); + } + + element.addEventListener('mousedown', showEffect, false); + }; + + window.Waves = Waves; + + document.addEventListener('DOMContentLoaded', function() { + Waves.displayEffect(); + }, false); + +})(window); +;Materialize.toast = function (message, displayLength, className, completeCallback) { + className = className || ""; + + var container = document.getElementById('toast-container'); + + // Create toast container if it does not exist + if (container === null) { + // create notification container + container = document.createElement('div'); + container.id = 'toast-container'; + document.body.appendChild(container); + } + + // Select and append toast + var newToast = createToast(message); + + // only append toast if message is not undefined + if(message){ + container.appendChild(newToast); + } + + newToast.style.top = '35px'; + newToast.style.opacity = 0; + + // Animate toast in + Vel(newToast, { "top" : "0px", opacity: 1 }, {duration: 300, + easing: 'easeOutCubic', + queue: false}); + + // Allows timer to be pause while being panned + var timeLeft = displayLength; + var counterInterval = setInterval (function(){ + + + if (newToast.parentNode === null) + window.clearInterval(counterInterval); + + // If toast is not being dragged, decrease its time remaining + if (!newToast.classList.contains('panning')) { + timeLeft -= 20; + } + + if (timeLeft <= 0) { + // Animate toast out + Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + // Call the optional callback + if(typeof(completeCallback) === "function") + completeCallback(); + // Remove toast after it times out + this[0].parentNode.removeChild(this[0]); + } + }); + window.clearInterval(counterInterval); + } + }, 20); + + + + function createToast(html) { + + // Create toast + var toast = document.createElement('div'); + toast.classList.add('toast'); + if (className) { + var classes = className.split(' '); + + for (var i = 0, count = classes.length; i < count; i++) { + toast.classList.add(classes[i]); + } + } + // If type of parameter is HTML Element + if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string" +) { + toast.appendChild(html); + } + else if (html instanceof jQuery) { + // Check if it is jQuery object + toast.appendChild(html[0]); + } + else { + // Insert as text; + toast.innerHTML = html; + } + // Bind hammer + var hammerHandler = new Hammer(toast, {prevent_default: false}); + hammerHandler.on('pan', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // Change toast state + if (!toast.classList.contains('panning')){ + toast.classList.add('panning'); + } + + var opacityPercent = 1-Math.abs(deltaX / activationDistance); + if (opacityPercent < 0) + opacityPercent = 0; + + Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + }); + + hammerHandler.on('panend', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // If toast dragged past activation point + if (Math.abs(deltaX) > activationDistance) { + Vel(toast, {marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + if(typeof(completeCallback) === "function") { + completeCallback(); + } + toast.parentNode.removeChild(toast); + } + }); + + } else { + toast.classList.remove('panning'); + // Put toast back into original position + Vel(toast, { left: 0, opacity: 1 }, { duration: 300, + easing: 'easeOutExpo', + queue: false + }); + + } + }); + + return toast; + } +}; +;(function ($) { + + var methods = { + init : function(options) { + var defaults = { + menuWidth: 300, + edge: 'left', + closeOnClick: false + }; + options = $.extend(defaults, options); + + $(this).each(function(){ + var $this = $(this); + var menu_id = $("#"+ $this.attr('data-activates')); + + // Set to width + if (options.menuWidth != 300) { + menu_id.css('width', options.menuWidth); + } + + // Add Touch Area + var dragTarget = $('
'); + $('body').append(dragTarget); + + if (options.edge == 'left') { + menu_id.css('transform', 'translateX(-100%)'); + dragTarget.css({'left': 0}); // Add Touch Area + } + else { + menu_id.addClass('right-aligned') // Change text-alignment to right + .css('transform', 'translateX(100%)'); + dragTarget.css({'right': 0}); // Add Touch Area + } + + // If fixed sidenav, bring menu out + if (menu_id.hasClass('fixed')) { + if (window.innerWidth > 992) { + menu_id.css('transform', 'translateX(0)'); + } + } + + // Window resize to reset on large screens fixed + if (menu_id.hasClass('fixed')) { + $(window).resize( function() { + if (window.innerWidth > 992) { + // Close menu if window is resized bigger than 992 and user has fixed sidenav + if ($('#sidenav-overlay').length !== 0 && menuOut) { + removeMenu(true); + } + else { + // menu_id.removeAttr('style'); + menu_id.css('transform', 'translateX(0%)'); + // menu_id.css('width', options.menuWidth); + } + } + else if (menuOut === false){ + if (options.edge === 'left') { + menu_id.css('transform', 'translateX(-100%)'); + } else { + menu_id.css('transform', 'translateX(100%)'); + } + + } + + }); + } + + // if closeOnClick, then add close event for all a tags in side sideNav + if (options.closeOnClick === true) { + menu_id.on("click.itemclick", "a:not(.collapsible-header)", function(){ + removeMenu(); + }); + } + + function removeMenu(restoreNav) { + panning = false; + menuOut = false; + // Reenable scrolling + $('body').css({ + overflow: '', + width: '' + }); + + $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, + queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + if (options.edge === 'left') { + // Reset phantom div + dragTarget.css({width: '', right: '', left: '0'}); + menu_id.velocity( + {'translateX': '-100%'}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + + }); + } + else { + // Reset phantom div + dragTarget.css({width: '', right: '0', left: ''}); + menu_id.velocity( + {'translateX': '100%'}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + }); + } + } + + + + // Touch Event + var panning = false; + var menuOut = false; + + dragTarget.on('click', function(){ + if (menuOut) { + removeMenu(); + } + }); + + dragTarget.hammer({ + prevent_default: false + }).bind('pan', function(e) { + + if (e.gesture.pointerType == "touch") { + + var direction = e.gesture.direction; + var x = e.gesture.center.x; + var y = e.gesture.center.y; + var velocityX = e.gesture.velocityX; + + // Disable Scrolling + var $body = $('body'); + var oldWidth = $body.innerWidth(); + $body.css('overflow', 'hidden'); + $body.width(oldWidth); + + // If overlay does not exist, create one and if it is clicked, close menu + if ($('#sidenav-overlay').length === 0) { + var overlay = $('
'); + overlay.css('opacity', 0).click( function(){ + removeMenu(); + }); + $('body').append(overlay); + } + + // Keep within boundaries + if (options.edge === 'left') { + if (x > options.menuWidth) { x = options.menuWidth; } + else if (x < 0) { x = 0; } + } + + if (options.edge === 'left') { + // Left Direction + if (x < (options.menuWidth / 2)) { menuOut = false; } + // Right Direction + else if (x >= (options.menuWidth / 2)) { menuOut = true; } + menu_id.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)'); + } + else { + // Left Direction + if (x < (window.innerWidth - options.menuWidth / 2)) { + menuOut = true; + } + // Right Direction + else if (x >= (window.innerWidth - options.menuWidth / 2)) { + menuOut = false; + } + var rightPos = (x - options.menuWidth / 2); + if (rightPos < 0) { + rightPos = 0; + } + + menu_id.css('transform', 'translateX(' + rightPos + 'px)'); + } + + + // Percentage overlay + var overlayPerc; + if (options.edge === 'left') { + overlayPerc = x / options.menuWidth; + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); + } + else { + overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); + } + } + + }).bind('panend', function(e) { + + if (e.gesture.pointerType == "touch") { + var velocityX = e.gesture.velocityX; + var x = e.gesture.center.x; + var leftPos = x - options.menuWidth; + var rightPos = x - options.menuWidth / 2; + if (leftPos > 0 ) { + leftPos = 0; + } + if (rightPos < 0) { + rightPos = 0; + } + panning = false; + + if (options.edge === 'left') { + // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut + if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { + // Return menu to open + if (leftPos !== 0) { + menu_id.velocity({'translateX': [0, leftPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + dragTarget.css({width: '50%', right: 0, left: ''}); + menuOut = true; + } + else if (!menuOut || velocityX > 0.3) { + // Enable Scrolling + $('body').css({ + overflow: '', + width: '' + }); + // Slide menu closed + menu_id.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + dragTarget.css({width: '10px', right: '', left: 0}); + } + } + else { + if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { + // Return menu to open + if (rightPos !== 0) { + menu_id.velocity({'translateX': [0, rightPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + dragTarget.css({width: '50%', right: '', left: 0}); + menuOut = true; + } + else if (!menuOut || velocityX < -0.3) { + // Enable Scrolling + $('body').css({ + overflow: '', + width: '' + }); + + // Slide menu closed + menu_id.velocity({'translateX': [options.menuWidth + 10, rightPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + dragTarget.css({width: '10px', right: 0, left: ''}); + } + } + + } + }); + + $this.click(function() { + if (menuOut === true) { + menuOut = false; + panning = false; + removeMenu(); + } + else { + + // Disable Scrolling + var $body = $('body'); + var oldWidth = $body.innerWidth(); + $body.css('overflow', 'hidden'); + $body.width(oldWidth); + + // Push current drag target on top of DOM tree + $('body').append(dragTarget); + + if (options.edge === 'left') { + dragTarget.css({width: '50%', right: 0, left: ''}); + menu_id.velocity({'translateX': [0, -1 * options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else { + dragTarget.css({width: '50%', right: '', left: 0}); + menu_id.velocity({'translateX': [0, options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + var overlay = $('
'); + overlay.css('opacity', 0) + .click(function(){ + menuOut = false; + panning = false; + removeMenu(); + overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + + }); + $('body').append(overlay); + overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function () { + menuOut = true; + panning = false; + } + }); + } + + return false; + }); + }); + + + }, + show : function() { + this.trigger('click'); + }, + hide : function() { + $('#sidenav-overlay').trigger('click'); + } + }; + + + $.fn.sideNav = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); + } + }; // Plugin end +}( jQuery )); +;/** + * Extend jquery with a scrollspy plugin. + * This watches the window scroll and fires events when elements are scrolled into viewport. + * + * throttle() and getTime() taken from Underscore.js + * https://github.com/jashkenas/underscore + * + * @author Copyright 2013 John Smart + * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE + * @see https://github.com/thesmart + * @version 0.1.2 + */ +(function($) { + + var jWindow = $(window); + var elements = []; + var elementsInView = []; + var isSpying = false; + var ticks = 0; + var unique_id = 1; + var offset = { + top : 0, + right : 0, + bottom : 0, + left : 0, + } + + /** + * Find elements that are within the boundary + * @param {number} top + * @param {number} right + * @param {number} bottom + * @param {number} left + * @return {jQuery} A collection of elements + */ + function findElements(top, right, bottom, left) { + var hits = $(); + $.each(elements, function(i, element) { + if (element.height() > 0) { + var elTop = element.offset().top, + elLeft = element.offset().left, + elRight = elLeft + element.width(), + elBottom = elTop + element.height(); + + var isIntersect = !(elLeft > right || + elRight < left || + elTop > bottom || + elBottom < top); + + if (isIntersect) { + hits.push(element); + } + } + }); + + return hits; + } + + + /** + * Called when the user scrolls the window + */ + function onScroll() { + // unique tick id + ++ticks; + + // viewport rectangle + var top = jWindow.scrollTop(), + left = jWindow.scrollLeft(), + right = left + jWindow.width(), + bottom = top + jWindow.height(); + + // determine which elements are in view +// + 60 accounts for fixed nav + var intersections = findElements(top+offset.top + 200, right+offset.right, bottom+offset.bottom, left+offset.left); + $.each(intersections, function(i, element) { + + var lastTick = element.data('scrollSpy:ticks'); + if (typeof lastTick != 'number') { + // entered into view + element.triggerHandler('scrollSpy:enter'); + } + + // update tick id + element.data('scrollSpy:ticks', ticks); + }); + + // determine which elements are no longer in view + $.each(elementsInView, function(i, element) { + var lastTick = element.data('scrollSpy:ticks'); + if (typeof lastTick == 'number' && lastTick !== ticks) { + // exited from view + element.triggerHandler('scrollSpy:exit'); + element.data('scrollSpy:ticks', null); + } + }); + + // remember elements in view for next tick + elementsInView = intersections; + } + + /** + * Called when window is resized + */ + function onWinSize() { + jWindow.trigger('scrollSpy:winSize'); + } + + /** + * Get time in ms + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @type {function} + * @return {number} + */ + var getTime = (Date.now || function () { + return new Date().getTime(); + }); + + /** + * Returns a function, that, when invoked, will only be triggered at most once + * during a given window of time. Normally, the throttled function will run + * as much as it can, without ever going more than once per `wait` duration; + * but if you'd like to disable the execution on the leading edge, pass + * `{leading: false}`. To disable execution on the trailing edge, ditto. + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @param {function} func + * @param {number} wait + * @param {Object=} options + * @returns {Function} + */ + function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function () { + previous = options.leading === false ? 0 : getTime(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function () { + var now = getTime(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + /** + * Enables ScrollSpy using a selector + * @param {jQuery|string} selector The elements collection, or a selector + * @param {Object=} options Optional. + throttle : number -> scrollspy throttling. Default: 100 ms + offsetTop : number -> offset from top. Default: 0 + offsetRight : number -> offset from right. Default: 0 + offsetBottom : number -> offset from bottom. Default: 0 + offsetLeft : number -> offset from left. Default: 0 + * @returns {jQuery} + */ + $.scrollSpy = function(selector, options) { + var defaults = { + throttle: 100, + scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll + }; + options = $.extend(defaults, options); + + var visible = []; + selector = $(selector); + selector.each(function(i, element) { + elements.push($(element)); + $(element).data("scrollSpy:id", i); + // Smooth scroll to section + $('a[href="#' + $(element).attr('id') + '"]').click(function(e) { + e.preventDefault(); + var offset = $(this.hash).offset().top + 1; + $('html, body').animate({ scrollTop: offset - options.scrollOffset }, {duration: 400, queue: false, easing: 'easeOutCubic'}); + }); + }); + + offset.top = options.offsetTop || 0; + offset.right = options.offsetRight || 0; + offset.bottom = options.offsetBottom || 0; + offset.left = options.offsetLeft || 0; + + var throttledScroll = throttle(onScroll, options.throttle || 100); + var readyScroll = function(){ + $(document).ready(throttledScroll); + }; + + if (!isSpying) { + jWindow.on('scroll', readyScroll); + jWindow.on('resize', readyScroll); + isSpying = true; + } + + // perform a scan once, after current execution context, and after dom is ready + setTimeout(readyScroll, 0); + + + selector.on('scrollSpy:enter', function() { + visible = $.grep(visible, function(value) { + return value.height() != 0; + }); + + var $this = $(this); + + if (visible[0]) { + $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); + if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) { + visible.unshift($(this)); + } + else { + visible.push($(this)); + } + } + else { + visible.push($(this)); + } + + + $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); + }); + selector.on('scrollSpy:exit', function() { + visible = $.grep(visible, function(value) { + return value.height() != 0; + }); + + if (visible[0]) { + $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); + var $this = $(this); + visible = $.grep(visible, function(value) { + return value.attr('id') != $this.attr('id'); + }); + if (visible[0]) { // Check if empty + $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); + } + } + }); + + return selector; + }; + + /** + * Listen for window resize events + * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms + * @returns {jQuery} $(window) + */ + $.winSizeSpy = function(options) { + $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls + options = options || { + throttle: 100 + }; + return jWindow.on('resize', throttle(onWinSize, options.throttle || 100)); + }; + + /** + * Enables ScrollSpy on a collection of elements + * e.g. $('.scrollSpy').scrollSpy() + * @param {Object=} options Optional. + throttle : number -> scrollspy throttling. Default: 100 ms + offsetTop : number -> offset from top. Default: 0 + offsetRight : number -> offset from right. Default: 0 + offsetBottom : number -> offset from bottom. Default: 0 + offsetLeft : number -> offset from left. Default: 0 + * @returns {jQuery} + */ + $.fn.scrollSpy = function(options) { + return $.scrollSpy($(this), options); + }; + +})(jQuery); +;(function ($) { + $(document).ready(function() { + + // Function to update labels of text fields + Materialize.updateTextFields = function() { + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + $(input_selector).each(function(index, element) { + if ($(element).val().length > 0 || element.autofocus ||$(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) { + $(this).siblings('label').addClass('active'); + } + else { + $(this).siblings('label').removeClass('active'); + } + }); + }; + + // Text based inputs + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + + // Add active if form auto complete + $(document).on('change', input_selector, function () { + if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { + $(this).siblings('label').addClass('active'); + } + validate_field($(this)); + }); + + // Add active if input element has been pre-populated on document ready + $(document).ready(function() { + Materialize.updateTextFields(); + }); + + // HTML DOM FORM RESET handling + $(document).on('reset', function(e) { + var formReset = $(e.target); + if (formReset.is('form')) { + formReset.find(input_selector).removeClass('valid').removeClass('invalid'); + formReset.find(input_selector).each(function () { + if ($(this).attr('value') === '') { + $(this).siblings('label').removeClass('active'); + } + }); + + // Reset select + formReset.find('select.initialized').each(function () { + var reset_text = formReset.find('option[selected]').text(); + formReset.siblings('input.select-dropdown').val(reset_text); + }); + } + }); + + // Add active when element has focus + $(document).on('focus', input_selector, function () { + $(this).siblings('label, .prefix').addClass('active'); + }); + + $(document).on('blur', input_selector, function () { + var $inputElement = $(this); + var selector = ".prefix"; + + if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { + selector += ", label"; + } + + $inputElement.siblings(selector).removeClass('active'); + + validate_field($inputElement); + }); + + window.validate_field = function(object) { + var hasLength = object.attr('length') !== undefined; + var lenAttr = parseInt(object.attr('length')); + var len = object.val().length; + + if (object.val().length === 0 && object[0].validity.badInput === false) { + if (object.hasClass('validate')) { + object.removeClass('valid'); + object.removeClass('invalid'); + } + } + else { + if (object.hasClass('validate')) { + // Check for character counter attributes + if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) { + object.removeClass('invalid'); + object.addClass('valid'); + } + else { + object.removeClass('valid'); + object.addClass('invalid'); + } + } + } + }; + + // Radio and Checkbox focus class + var radio_checkbox = 'input[type=radio], input[type=checkbox]'; + $(document).on('keyup.radio', radio_checkbox, function(e) { + // TAB, check if tabbing to radio or checkbox. + if (e.which === 9) { + $(this).addClass('tabbed'); + var $this = $(this); + $this.one('blur', function(e) { + + $(this).removeClass('tabbed'); + }); + return; + } + }); + + // Textarea Auto Resize + var hiddenDiv = $('.hiddendiv').first(); + if (!hiddenDiv.length) { + hiddenDiv = $('
'); + $('body').append(hiddenDiv); + } + var text_area_selector = '.materialize-textarea'; + + function textareaAutoResize($textarea) { + // Set font properties of hiddenDiv + + var fontFamily = $textarea.css('font-family'); + var fontSize = $textarea.css('font-size'); + var lineHeight = $textarea.css('line-height'); + + if (fontSize) { hiddenDiv.css('font-size', fontSize); } + if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } + if (lineHeight) { hiddenDiv.css('line-height', lineHeight); } + + if ($textarea.attr('wrap') === "off") { + hiddenDiv.css('overflow-wrap', "normal") + .css('white-space', "pre"); + } + + hiddenDiv.text($textarea.val() + '\n'); + var content = hiddenDiv.html().replace(/\n/g, '
'); + hiddenDiv.html(content); + + + // When textarea is hidden, width goes crazy. + // Approximate with half of window size + + if ($textarea.is(':visible')) { + hiddenDiv.css('width', $textarea.width()); + } + else { + hiddenDiv.css('width', $(window).width()/2); + } + + $textarea.css('height', hiddenDiv.height()); + } + + $(text_area_selector).each(function () { + var $textarea = $(this); + if ($textarea.val().length) { + textareaAutoResize($textarea); + } + }); + + $('body').on('keyup keydown autoresize', text_area_selector, function () { + textareaAutoResize($(this)); + }); + + // File Input Path + $(document).on('change', '.file-field input[type="file"]', function () { + var file_field = $(this).closest('.file-field'); + var path_input = file_field.find('input.file-path'); + var files = $(this)[0].files; + var file_names = []; + for (var i = 0; i < files.length; i++) { + file_names.push(files[i].name); + } + path_input.val(file_names.join(", ")); + path_input.trigger('change'); + }); + + /**************** + * Range Input * + ****************/ + + var range_type = 'input[type=range]'; + var range_mousedown = false; + var left; + + $(range_type).each(function () { + var thumb = $(''); + $(this).after(thumb); + }); + + var range_wrapper = '.range-field'; + $(document).on('change', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + thumb.find('.value').html($(this).val()); + }); + + $(document).on('input mousedown touchstart', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + var width = $(this).outerWidth(); + + // If thumb indicator does not exist yet, create it + if (thumb.length <= 0) { + thumb = $(''); + $(this).after(thumb); + } + + // Set indicator value + thumb.find('.value').html($(this).val()); + + range_mousedown = true; + $(this).addClass('active'); + + if (!thumb.hasClass('active')) { + thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); + } + + if (e.type !== 'input') { + if(e.pageX === undefined || e.pageX === null){//mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + left = e.pageX - $(this).offset().left; + } + if (left < 0) { + left = 0; + } + else if (left > width) { + left = width; + } + thumb.addClass('active').css('left', left); + } + + thumb.find('.value').html($(this).val()); + }); + + $(document).on('mouseup touchend', range_wrapper, function() { + range_mousedown = false; + $(this).removeClass('active'); + }); + + $(document).on('mousemove touchmove', range_wrapper, function(e) { + var thumb = $(this).children('.thumb'); + var left; + if (range_mousedown) { + if (!thumb.hasClass('active')) { + thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); + } + if (e.pageX === undefined || e.pageX === null) { //mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + left = e.pageX - $(this).offset().left; + } + var width = $(this).outerWidth(); + + if (left < 0) { + left = 0; + } + else if (left > width) { + left = width; + } + thumb.addClass('active').css('left', left); + thumb.find('.value').html(thumb.siblings(range_type).val()); + } + }); + + $(document).on('mouseout touchleave', range_wrapper, function() { + if (!range_mousedown) { + + var thumb = $(this).children('.thumb'); + + if (thumb.hasClass('active')) { + thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 }); + } + thumb.removeClass('active'); + } + }); + + /************************** + * Auto complete plugin * + *************************/ + $.fn.autocomplete = function (options) { + // Defaults + var defaults = { + data: {} + }; + + options = $.extend(defaults, options); + + return this.each(function() { + var $input = $(this); + var data = options.data, + $inputDiv = $input.closest('.input-field'); // Div to append on + + // Check if data isn't empty + if (!$.isEmptyObject(data)) { + // Create autocomplete element + var $autocomplete = $(''); + + // Append autocomplete element + if ($inputDiv.length) { + $inputDiv.append($autocomplete); // Set ul in body + } else { + $input.after($autocomplete); + } + + var highlight = function(string, $el) { + var img = $el.find('img'); + var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""), + matchEnd = matchStart + string.length - 1, + beforeMatch = $el.text().slice(0, matchStart), + matchText = $el.text().slice(matchStart, matchEnd + 1), + afterMatch = $el.text().slice(matchEnd + 1); + $el.html("" + beforeMatch + "" + matchText + "" + afterMatch + ""); + if (img.length) { + $el.prepend(img); + } + }; + + // Perform search + $input.on('keyup', function (e) { + // Capture Enter + if (e.which === 13) { + $autocomplete.find('li').first().click(); + return; + } + + var val = $input.val().toLowerCase(); + $autocomplete.empty(); + + // Check if the input isn't empty + if (val !== '') { + for(var key in data) { + if (data.hasOwnProperty(key) && + key.toLowerCase().indexOf(val) !== -1 && + key.toLowerCase() !== val) { + var autocompleteOption = $('
  • '); + if(!!data[key]) { + autocompleteOption.append(''+ key +''); + } else { + autocompleteOption.append(''+ key +''); + } + $autocomplete.append(autocompleteOption); + + highlight(val, autocompleteOption); + } + } + } + }); + + // Set input value + $autocomplete.on('click', 'li', function () { + $input.val($(this).text().trim()); + $autocomplete.empty(); + }); + } + }); + }; + + }); // End of $(document).ready + + /******************* + * Select Plugin * + ******************/ + $.fn.material_select = function (callback) { + $(this).each(function(){ + var $select = $(this); + + if ($select.hasClass('browser-default')) { + return; // Continue to next (return false breaks out of entire loop) + } + + var multiple = $select.attr('multiple') ? true : false, + lastID = $select.data('select-id'); // Tear down structure if Select needs to be rebuilt + + if (lastID) { + $select.parent().find('span.caret').remove(); + $select.parent().find('input').remove(); + + $select.unwrap(); + $('ul#select-options-'+lastID).remove(); + } + + // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. + if(callback === 'destroy') { + $select.data('select-id', null).removeClass('initialized'); + return; + } + + var uniqueID = Materialize.guid(); + $select.data('select-id', uniqueID); + var wrapper = $('
    '); + wrapper.addClass($select.attr('class')); + var options = $(''), + selectChildren = $select.children('option, optgroup'), + valuesSelected = [], + optionsHover = false; + + var label = $select.find('option:selected').html() || $select.find('option:first').html() || ""; + + // Function that renders and appends the option taking into + // account type and possible image icon. + var appendOptionWithIcon = function(select, option, type) { + // Add disabled attr if disabled + var disabledClass = (option.is(':disabled')) ? 'disabled ' : ''; + var optgroupClass = (type === 'optgroup-option') ? 'optgroup-option ' : ''; + + // add icons + var icon_url = option.data('icon'); + var classes = option.attr('class'); + if (!!icon_url) { + var classString = ''; + if (!!classes) classString = ' class="' + classes + '"'; + + // Check for multiple type. + if (type === 'multiple') { + options.append($('
  • ' + option.html() + '
  • ')); + } else { + options.append($('
  • ' + option.html() + '
  • ')); + } + return true; + } + + // Check for multiple type. + if (type === 'multiple') { + options.append($('
  • ' + option.html() + '
  • ')); + } else { + options.append($('
  • ' + option.html() + '
  • ')); + } + }; + + /* Create dropdown structure. */ + if (selectChildren.length) { + selectChildren.each(function() { + if ($(this).is('option')) { + // Direct descendant option. + if (multiple) { + appendOptionWithIcon($select, $(this), 'multiple'); + + } else { + appendOptionWithIcon($select, $(this)); + } + } else if ($(this).is('optgroup')) { + // Optgroup. + var selectOptions = $(this).children('option'); + options.append($('
  • ' + $(this).attr('label') + '
  • ')); + + selectOptions.each(function() { + appendOptionWithIcon($select, $(this), 'optgroup-option'); + }); + } + }); + } + + options.find('li:not(.optgroup)').each(function (i) { + $(this).click(function (e) { + // Check if option element is disabled + if (!$(this).hasClass('disabled') && !$(this).hasClass('optgroup')) { + var selected = true; + + if (multiple) { + $('input[type="checkbox"]', this).prop('checked', function(i, v) { return !v; }); + selected = toggleEntryFromArray(valuesSelected, $(this).index(), $select); + $newSelect.trigger('focus'); + } else { + options.find('li').removeClass('active'); + $(this).toggleClass('active'); + $newSelect.val($(this).text()); + } + + activateOption(options, $(this)); + $select.find('option').eq(i).prop('selected', selected); + // Trigger onchange() event + $select.trigger('change'); + if (typeof callback !== 'undefined') callback(); + } + + e.stopPropagation(); + }); + }); + + // Wrap Elements + $select.wrap(wrapper); + // Add Select Display Element + var dropdownIcon = $(''); + if ($select.is(':disabled')) + dropdownIcon.addClass('disabled'); + + // escape double quotes + var sanitizedLabelHtml = label.replace(/"/g, '"'); + + var $newSelect = $(''); + $select.before($newSelect); + $newSelect.before(dropdownIcon); + + $newSelect.after(options); + // Check if section element is disabled + if (!$select.is(':disabled')) { + $newSelect.dropdown({'hover': false, 'closeOnClick': false}); + } + + // Copy tabindex + if ($select.attr('tabindex')) { + $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); + } + + $select.addClass('initialized'); + + $newSelect.on({ + 'focus': function (){ + if ($('ul.select-dropdown').not(options[0]).is(':visible')) { + $('input.select-dropdown').trigger('close'); + } + if (!options.is(':visible')) { + $(this).trigger('open', ['focus']); + var label = $(this).val(); + var selectedOption = options.find('li').filter(function() { + return $(this).text().toLowerCase() === label.toLowerCase(); + })[0]; + activateOption(options, selectedOption); + } + }, + 'click': function (e){ + e.stopPropagation(); + } + }); + + $newSelect.on('blur', function() { + if (!multiple) { + $(this).trigger('close'); + } + options.find('li.selected').removeClass('selected'); + }); + + options.hover(function() { + optionsHover = true; + }, function () { + optionsHover = false; + }); + + $(window).on({ + 'click': function () { + multiple && (optionsHover || $newSelect.trigger('close')); + } + }); + + // Add initial multiple selections. + if (multiple) { + $select.find("option:selected:not(:disabled)").each(function () { + var index = $(this).index(); + + toggleEntryFromArray(valuesSelected, index, $select); + options.find("li").eq(index).find(":checkbox").prop("checked", true); + }); + } + + // Make option as selected and scroll to selected position + var activateOption = function(collection, newOption) { + if (newOption) { + collection.find('li.selected').removeClass('selected'); + var option = $(newOption); + option.addClass('selected'); + options.scrollTo(option); + } + }; + + // Allow user to search by typing + // this array is cleared after 1 second + var filterQuery = [], + onKeyDown = function(e){ + // TAB - switch to another input + if(e.which == 9){ + $newSelect.trigger('close'); + return; + } + + // ARROW DOWN WHEN SELECT IS CLOSED - open select options + if(e.which == 40 && !options.is(':visible')){ + $newSelect.trigger('open'); + return; + } + + // ENTER WHEN SELECT IS CLOSED - submit form + if(e.which == 13 && !options.is(':visible')){ + return; + } + + e.preventDefault(); + + // CASE WHEN USER TYPE LETTERS + var letter = String.fromCharCode(e.which).toLowerCase(), + nonLetters = [9,13,27,38,40]; + if (letter && (nonLetters.indexOf(e.which) === -1)) { + filterQuery.push(letter); + + var string = filterQuery.join(''), + newOption = options.find('li').filter(function() { + return $(this).text().toLowerCase().indexOf(string) === 0; + })[0]; + + if (newOption) { + activateOption(options, newOption); + } + } + + // ENTER - select option and close when select options are opened + if (e.which == 13) { + var activeOption = options.find('li.selected:not(.disabled)')[0]; + if(activeOption){ + $(activeOption).trigger('click'); + if (!multiple) { + $newSelect.trigger('close'); + } + } + } + + // ARROW DOWN - move to next not disabled option + if (e.which == 40) { + if (options.find('li.selected').length) { + newOption = options.find('li.selected').next('li:not(.disabled)')[0]; + } else { + newOption = options.find('li:not(.disabled)')[0]; + } + activateOption(options, newOption); + } + + // ESC - close options + if (e.which == 27) { + $newSelect.trigger('close'); + } + + // ARROW UP - move to previous not disabled option + if (e.which == 38) { + newOption = options.find('li.selected').prev('li:not(.disabled)')[0]; + if(newOption) + activateOption(options, newOption); + } + + // Automaticaly clean filter query so user can search again by starting letters + setTimeout(function(){ filterQuery = []; }, 1000); + }; + + $newSelect.on('keydown', onKeyDown); + }); + + function toggleEntryFromArray(entriesArray, entryIndex, select) { + var index = entriesArray.indexOf(entryIndex), + notAdded = index === -1; + + if (notAdded) { + entriesArray.push(entryIndex); + } else { + entriesArray.splice(index, 1); + } + + select.siblings('ul.dropdown-content').find('li').eq(entryIndex).toggleClass('active'); + + // use notAdded instead of true (to detect if the option is selected or not) + select.find('option').eq(entryIndex).prop('selected', notAdded); + setValueToInput(entriesArray, select); + + return notAdded; + } + + function setValueToInput(entriesArray, select) { + var value = ''; + + for (var i = 0, count = entriesArray.length; i < count; i++) { + var text = select.find('option').eq(entriesArray[i]).text(); + + i === 0 ? value += text : value += ', ' + text; + } + + if (value === '') { + value = select.find('option:disabled').eq(0).text(); + } + + select.siblings('input.select-dropdown').val(value); + } + }; + +}( jQuery )); +;(function ($) { + + var methods = { + + init : function(options) { + var defaults = { + indicators: true, + height: 400, + transition: 500, + interval: 6000 + }; + options = $.extend(defaults, options); + + return this.each(function() { + + // For each slider, we want to keep track of + // which slide is active and its associated content + var $this = $(this); + var $slider = $this.find('ul.slides').first(); + var $slides = $slider.find('> li'); + var $active_index = $slider.find('.active').index(); + var $active, $indicators, $interval; + if ($active_index != -1) { $active = $slides.eq($active_index); } + + // Transitions the caption depending on alignment + function captionTransition(caption, duration) { + if (caption.hasClass("center-align")) { + caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("right-align")) { + caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("left-align")) { + caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); + } + } + + // This function will transition the slide to any index of the next slide + function moveToSlide(index) { + // Wrap around indices. + if (index >= $slides.length) index = 0; + else if (index < 0) index = $slides.length -1; + + $active_index = $slider.find('.active').index(); + + // Only do if index changes + if ($active_index != index) { + $active = $slides.eq($active_index); + $caption = $active.find('.caption'); + + $active.removeClass('active'); + $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', + complete: function() { + $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); + } }); + captionTransition($caption, options.transition); + + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).removeClass('active'); + } + + $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).addClass('active'); + + + // Update indicators + if (options.indicators) { + $indicators.eq(index).addClass('active'); + } + } + } + + // Set height of slider + // If fullscreen, do nothing + if (!$this.hasClass('fullscreen')) { + if (options.indicators) { + // Add height if indicators are present + $this.height(options.height + 40); + } + else { + $this.height(options.height); + } + $slider.height(options.height); + } + + + // Set initial positions of captions + $slides.find('.caption').each(function () { + captionTransition($(this), 0); + }); + + // Move img src into background-image + $slides.find('img').each(function () { + var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; + if ($(this).attr('src') !== placeholderBase64) { + $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); + $(this).attr('src', placeholderBase64); + } + }); + + // dynamically add indicators + if (options.indicators) { + $indicators = $('
      '); + $slides.each(function( index ) { + var $indicator = $('
    • '); + + // Handle clicks on indicators + $indicator.click(function () { + var $parent = $slider.parent(); + var curr_index = $parent.find($(this)).index(); + moveToSlide(curr_index); + + // reset interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + $indicators.append($indicator); + }); + $this.append($indicators); + $indicators = $this.find('ul.indicators').find('li.indicator-item'); + } + + if ($active) { + $active.show(); + } + else { + $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + + $active_index = 0; + $active = $slides.eq($active_index); + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).addClass('active'); + } + } + + // Adjust height to current slide + $active.find('img').each(function() { + $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + }); + + // auto scroll + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + moveToSlide($active_index + 1); + + }, options.transition + options.interval + ); + + + // HammerJS, Swipe navigation + + // Touch Event + var panning = false; + var swipeLeft = false; + var swipeRight = false; + + $this.hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + + // reset interval + clearInterval($interval); + + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $curr_slide = $slider.find('.active'); + $curr_slide.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { + swipeRight = true; + } + // Swipe Right + else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { + swipeLeft = true; + } + + // Make Slide Behind active slide visible + var next_slide; + if (swipeLeft) { + next_slide = $curr_slide.next(); + if (next_slide.length === 0) { + next_slide = $slides.first(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + if (swipeRight) { + next_slide = $curr_slide.prev(); + if (next_slide.length === 0) { + next_slide = $slides.last(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + + } + + }).bind('panend', function(e) { + if (e.gesture.pointerType === "touch") { + + $curr_slide = $slider.find('.active'); + panning = false; + curr_index = $slider.find('.active').index(); + + if (!swipeRight && !swipeLeft || $slides.length <=1) { + // Return to original spot + $curr_slide.velocity({ translateX: 0 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else if (swipeLeft) { + moveToSlide(curr_index + 1); + $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + else if (swipeRight) { + moveToSlide(curr_index - 1); + $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + swipeLeft = false; + swipeRight = false; + + // Restart interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + } + }); + + $this.on('sliderPause', function() { + clearInterval($interval); + }); + + $this.on('sliderStart', function() { + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + + $this.on('sliderNext', function() { + $active_index = $slider.find('.active').index(); + moveToSlide($active_index + 1); + }); + + $this.on('sliderPrev', function() { + $active_index = $slider.find('.active').index(); + moveToSlide($active_index - 1); + }); + + }); + + + + }, + pause : function() { + $(this).trigger('sliderPause'); + }, + start : function() { + $(this).trigger('sliderStart'); + }, + next : function() { + $(this).trigger('sliderNext'); + }, + prev : function() { + $(this).trigger('sliderPrev'); + } + }; + + + $.fn.slider = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; // Plugin end +}( jQuery )); +;(function ($) { + $(document).ready(function() { + + $(document).on('click.card', '.card', function (e) { + if ($(this).find('> .card-reveal').length) { + if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { + // Make Reveal animate down and display none + $(this).find('.card-reveal').velocity( + {translateY: 0}, { + duration: 225, + queue: false, + easing: 'easeInOutQuad', + complete: function() { $(this).css({ display: 'none'}); } + } + ); + } + else if ($(e.target).is($('.card .activator')) || + $(e.target).is($('.card .activator i')) ) { + $(e.target).closest('.card').css('overflow', 'hidden'); + $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); + } + } + }); + + }); +}( jQuery ));;(function ($) { + var chipsHandleEvents = false; + var materialChipsDefaults = { + data: [], + placeholder: '', + secondaryPlaceholder: '', + }; + + $(document).ready(function(){ + // Handle removal of static chips. + $(document).on('click', '.chip .close', function(e){ + var $chips = $(this).closest('.chips'); + if ($chips.data('initialized')) { + return; + } + $(this).closest('.chip').remove(); + }); + }); + + $.fn.material_chip = function (options) { + var self = this; + this.$el = $(this); + this.$document = $(document); + this.SELS = { + CHIPS: '.chips', + CHIP: '.chip', + INPUT: 'input', + DELETE: '.material-icons', + SELECTED_CHIP: '.selected', + }; + + if ('data' === options) { + return this.$el.data('chips'); + } + + if ('options' === options) { + return this.$el.data('options'); + } + + this.$el.data('options', $.extend({}, materialChipsDefaults, options)); + + // Initialize + this.init = function() { + var i = 0; + var chips; + self.$el.each(function(){ + var $chips = $(this); + if ($chips.data('initialized')) { + // Prevent double initialization. + return; + } + var options = $chips.data('options'); + if (!options.data || !options.data instanceof Array) { + options.data = []; + } + $chips.data('chips', options.data); + $chips.data('index', i); + $chips.data('initialized', true); + + if (!$chips.hasClass(self.SELS.CHIPS)) { + $chips.addClass('chips'); + } + + self.chips($chips); + i++; + }); + }; + + this.handleEvents = function(){ + var SELS = self.SELS; + + self.$document.on('click', SELS.CHIPS, function(e){ + $(e.target).find(SELS.INPUT).focus(); + }); + + self.$document.on('click', SELS.CHIP, function(e){ + $(SELS.CHIP).removeClass('selected'); + $(this).toggleClass('selected'); + }); + + self.$document.on('keydown', function(e){ + if ($(e.target).is('input, textarea')) { + return; + } + + // delete + var $chip = self.$document.find(SELS.CHIP + SELS.SELECTED_CHIP); + var $chips = $chip.closest(SELS.CHIPS); + var length = $chip.siblings(SELS.CHIP).length; + var index; + + if (!$chip.length) { + return; + } + + if (e.which === 8 || e.which === 46) { + e.preventDefault(); + var chipsIndex = $chips.data('index'); + + index = $chip.index(); + self.deleteChip(chipsIndex, index, $chips); + + var selectIndex = null; + if ((index + 1) < length) { + selectIndex = index; + } else if (index === length || (index + 1) === length) { + selectIndex = length - 1; + } + + if (selectIndex < 0) selectIndex = null; + + if (null !== selectIndex) { + self.selectChip(chipsIndex, selectIndex, $chips); + } + if (!length) $chips.find('input').focus(); + + // left + } else if (e.which === 37) { + index = $chip.index() - 1; + if (index < 0) { + return; + } + $(SELS.CHIP).removeClass('selected'); + self.selectChip($chips.data('index'), index, $chips); + + // right + } else if (e.which === 39) { + index = $chip.index() + 1; + $(SELS.CHIP).removeClass('selected'); + if (index > length) { + $chips.find('input').focus(); + return; + } + self.selectChip($chips.data('index'), index, $chips); + } + }); + + self.$document.on('focusin', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ + $(e.target).closest(SELS.CHIPS).addClass('focus'); + $(SELS.CHIP).removeClass('selected'); + }); + + self.$document.on('focusout', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ + $(e.target).closest(SELS.CHIPS).removeClass('focus'); + }); + + self.$document.on('keydown', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ + var $target = $(e.target); + var $chips = $target.closest(SELS.CHIPS); + var chipsIndex = $chips.data('index'); + var chipsLength = $chips.children(SELS.CHIP).length; + + // enter + if (13 === e.which) { + e.preventDefault(); + self.addChip(chipsIndex, {tag: $target.val()}, $chips); + $target.val(''); + return; + } + + // delete or left + if ((8 === e.keyCode || 37 === e.keyCode) && '' === $target.val() && chipsLength) { + self.selectChip(chipsIndex, chipsLength - 1, $chips); + $target.blur(); + return; + } + }); + + self.$document.on('click', SELS.CHIPS + ' ' + SELS.DELETE, function(e) { + var $target = $(e.target); + var $chips = $target.closest(SELS.CHIPS); + var $chip = $target.closest(SELS.CHIP); + e.stopPropagation(); + self.deleteChip( + $chips.data('index'), + $chip.index(), + $chips + ); + $chips.find('input').focus(); + }); + }; + + this.chips = function($chips) { + var html = ''; + var options = $chips.data('options'); + $chips.data('chips').forEach(function(elem){ + html += self.renderChip(elem); + }); + html += ''; + $chips.html(html); + self.setPlaceholder($chips); + }; + + this.renderChip = function(elem) { + if (!elem.tag) return; + + var html = '
      ' + elem.tag; + if (elem.image) { + html += ' '; + } + html += 'close'; + html += '
      '; + return html; + }; + + this.setPlaceholder = function($chips) { + var options = $chips.data('options'); + if ($chips.data('chips').length && options.placeholder) { + $chips.find('input').prop('placeholder', options.placeholder); + } else if (!$chips.data('chips').length && options.secondaryPlaceholder) { + $chips.find('input').prop('placeholder', options.secondaryPlaceholder); + } + }; + + this.isValid = function($chips, elem) { + var chips = $chips.data('chips'); + var exists = false; + for (var i=0; i < chips.length; i++) { + if (chips[i].tag === elem.tag) { + exists = true; + return; + } + } + return '' !== elem.tag && !exists; + }; + + this.addChip = function(chipsIndex, elem, $chips) { + if (!self.isValid($chips, elem)) { + return; + } + var options = $chips.data('options'); + var chipHtml = self.renderChip(elem); + $chips.data('chips').push(elem); + $(chipHtml).insertBefore($chips.find('input')); + $chips.trigger('chip.add', elem); + self.setPlaceholder($chips); + }; + + this.deleteChip = function(chipsIndex, chipIndex, $chips) { + var chip = $chips.data('chips')[chipIndex]; + $chips.find('.chip').eq(chipIndex).remove(); + $chips.data('chips').splice(chipIndex, 1); + $chips.trigger('chip.delete', chip); + self.setPlaceholder($chips); + }; + + this.selectChip = function(chipsIndex, chipIndex, $chips) { + var $chip = $chips.find('.chip').eq(chipIndex); + if ($chip && false === $chip.hasClass('selected')) { + $chip.addClass('selected'); + $chips.trigger('chip.select', $chips.data('chips')[chipIndex]); + } + }; + + this.getChipsElement = function(index, $chips) { + return $chips.eq(index); + }; + + // init + this.init(); + + if (!chipsHandleEvents) { + this.handleEvents(); + chipsHandleEvents = true; + } + }; +}( jQuery ));;(function ($) { + $.fn.pushpin = function (options) { + // Defaults + var defaults = { + top: 0, + bottom: Infinity, + offset: 0 + }; + + // Remove pushpin event and classes + if (options === "remove") { + this.each(function () { + if (id = $(this).data('pushpin-id')) { + $(window).off('scroll.' + id); + $(this).removeData('pushpin-id').removeClass('pin-top pinned pin-bottom').removeAttr('style'); + } + }); + return false; + } + + options = $.extend(defaults, options); + + + $index = 0; + return this.each(function() { + var $uniqueId = Materialize.guid(), + $this = $(this), + $original_offset = $(this).offset().top; + + function removePinClasses(object) { + object.removeClass('pin-top'); + object.removeClass('pinned'); + object.removeClass('pin-bottom'); + } + + function updateElements(objects, scrolled) { + objects.each(function () { + // Add position fixed (because its between top and bottom) + if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { + removePinClasses($(this)); + $(this).css('top', options.offset); + $(this).addClass('pinned'); + } + + // Add pin-top (when scrolled position is above top) + if (scrolled < options.top && !$(this).hasClass('pin-top')) { + removePinClasses($(this)); + $(this).css('top', 0); + $(this).addClass('pin-top'); + } + + // Add pin-bottom (when scrolled position is below bottom) + if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { + removePinClasses($(this)); + $(this).addClass('pin-bottom'); + $(this).css('top', options.bottom - $original_offset); + } + }); + } + + $(this).data('pushpin-id', $uniqueId); + updateElements($this, $(window).scrollTop()); + $(window).on('scroll.' + $uniqueId, function () { + var $scrolled = $(window).scrollTop() + options.offset; + updateElements($this, $scrolled); + }); + + }); + + }; +}( jQuery ));;(function ($) { + $(document).ready(function() { + + // jQuery reverse + $.fn.reverse = [].reverse; + + // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs! + $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle)', function(e) { + var $this = $(this); + openFABMenu($this); + }); + $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle)', function(e) { + var $this = $(this); + closeFABMenu($this); + }); + + // Toggle-on-click behaviour. + $(document).on('click.fixedActionBtn', '.fixed-action-btn.click-to-toggle > a', function(e) { + var $this = $(this); + var $menu = $this.parent(); + if ($menu.hasClass('active')) { + closeFABMenu($menu); + } else { + openFABMenu($menu); + } + }); + + }); + + $.fn.extend({ + openFAB: function() { + openFABMenu($(this)); + }, + closeFAB: function() { + closeFABMenu($(this)); + } + }); + + + var openFABMenu = function (btn) { + $this = btn; + if ($this.hasClass('active') === false) { + + // Get direction option + var horizontal = $this.hasClass('horizontal'); + var offsetY, offsetX; + + if (horizontal === true) { + offsetX = 40; + } else { + offsetY = 40; + } + + $this.addClass('active'); + $this.find('ul .btn-floating').velocity( + { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, + { duration: 0 }); + + var time = 0; + $this.find('ul .btn-floating').reverse().each( function () { + $(this).velocity( + { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'}, + { duration: 80, delay: time }); + time += 40; + }); + } + }; + + var closeFABMenu = function (btn) { + $this = btn; + // Get direction option + var horizontal = $this.hasClass('horizontal'); + var offsetY, offsetX; + + if (horizontal === true) { + offsetX = 40; + } else { + offsetY = 40; + } + + $this.removeClass('active'); + var time = 0; + $this.find('ul .btn-floating').velocity("stop", true); + $this.find('ul .btn-floating').velocity( + { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, + { duration: 80 } + ); + }; + + +}( jQuery )); +;(function ($) { + // Image transition function + Materialize.fadeInImage = function(selectorOrEl) { + var element; + if (typeof(selectorOrEl) === 'string') { + element = $(selectorOrEl); + } else if (typeof(selectorOrEl) === 'object') { + element = selectorOrEl; + } else { + return; + } + element.css({opacity: 0}); + $(element).velocity({opacity: 1}, { + duration: 650, + queue: false, + easing: 'easeOutSine' + }); + $(element).velocity({opacity: 1}, { + duration: 1300, + queue: false, + easing: 'swing', + step: function(now, fx) { + fx.start = 100; + var grayscale_setting = now/100; + var brightness_setting = 150 - (100 - now)/1.75; + + if (brightness_setting < 100) { + brightness_setting = 100; + } + if (now >= 0) { + $(this).css({ + "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", + "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" + }); + } + } + }); + }; + + // Horizontal staggered list + Materialize.showStaggeredList = function(selectorOrEl) { + var element; + if (typeof(selectorOrEl) === 'string') { + element = $(selectorOrEl); + } else if (typeof(selectorOrEl) === 'object') { + element = selectorOrEl; + } else { + return; + } + var time = 0; + element.find('li').velocity( + { translateX: "-100px"}, + { duration: 0 }); + + element.find('li').each(function() { + $(this).velocity( + { opacity: "1", translateX: "0"}, + { duration: 800, delay: time, easing: [60, 10] }); + time += 120; + }); + }; + + + $(document).ready(function() { + // Hardcoded .staggered-list scrollFire + // var staggeredListOptions = []; + // $('ul.staggered-list').each(function (i) { + + // var label = 'scrollFire-' + i; + // $(this).addClass(label); + // staggeredListOptions.push( + // {selector: 'ul.staggered-list.' + label, + // offset: 200, + // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); + // }); + // scrollFire(staggeredListOptions); + + // HammerJS, Swipe navigation + + // Touch Event + var swipeLeft = false; + var swipeRight = false; + + + // Dismissible Collections + $('.dismissable').each(function() { + $(this).hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + var $this = $(this); + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $this.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { + swipeLeft = true; + } + + // Swipe Right + if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { + swipeRight = true; + } + } + }).bind('panend', function(e) { + // Reset if collection is moved back into original position + if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { + swipeRight = false; + swipeLeft = false; + } + + if (e.gesture.pointerType === "touch") { + var $this = $(this); + if (swipeLeft || swipeRight) { + var fullWidth; + if (swipeLeft) { fullWidth = $this.innerWidth(); } + else { fullWidth = -1 * $this.innerWidth(); } + + $this.velocity({ translateX: fullWidth, + }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: + function() { + $this.css('border', 'none'); + $this.velocity({ height: 0, padding: 0, + }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: + function() { $this.remove(); } + }); + } + }); + } + else { + $this.velocity({ translateX: 0, + }, {duration: 100, queue: false, easing: 'easeOutQuad'}); + } + swipeLeft = false; + swipeRight = false; + } + }); + + }); + + + // time = 0 + // // Vertical Staggered list + // $('ul.staggered-list.vertical li').velocity( + // { translateY: "100px"}, + // { duration: 0 }); + + // $('ul.staggered-list.vertical li').each(function() { + // $(this).velocity( + // { opacity: "1", translateY: "0"}, + // { duration: 800, delay: time, easing: [60, 25] }); + // time += 120; + // }); + + // // Fade in and Scale + // $('.fade-in.scale').velocity( + // { scaleX: .4, scaleY: .4, translateX: -600}, + // { duration: 0}); + // $('.fade-in').each(function() { + // $(this).velocity( + // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, + // { duration: 800, easing: [60, 10] }); + // }); + }); +}( jQuery )); +;(function($) { + + // Input: Array of JSON objects {selector, offset, callback} + + Materialize.scrollFire = function(options) { + + var didScroll = false; + + window.addEventListener("scroll", function() { + didScroll = true; + }); + + // Rate limit to 100ms + setInterval(function() { + if(didScroll) { + didScroll = false; + + var windowScroll = window.pageYOffset + window.innerHeight; + + for (var i = 0 ; i < options.length; i++) { + // Get options from each line + var value = options[i]; + var selector = value.selector, + offset = value.offset, + callback = value.callback; + + var currentElement = document.querySelector(selector); + if ( currentElement !== null) { + var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; + + if (windowScroll > (elementOffset + offset)) { + if (value.done !== true) { + if (typeof(callback) === 'function') { + callback.call(this, currentElement); + } else if (typeof(callback) === 'string') { + var callbackFunc = new Function(callback); + callbackFunc(currentElement); + } + value.done = true; + } + } + } + } + } + }, 100); + }; + +})(jQuery); +;/*! + * pickadate.js v3.5.0, 2014/04/13 + * By Amsul, http://amsul.ca + * Hosted on http://amsul.github.io/pickadate.js + * Licensed under MIT + */ + +(function ( factory ) { + + // AMD. + if ( typeof define == 'function' && define.amd ) + define( 'picker', ['jquery'], factory ) + + // Node.js/browserify. + else if ( typeof exports == 'object' ) + module.exports = factory( require('jquery') ) + + // Browser globals. + else this.Picker = factory( jQuery ) + +}(function( $ ) { + +var $window = $( window ) +var $document = $( document ) +var $html = $( document.documentElement ) + + +/** + * The picker constructor that creates a blank picker. + */ +function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) { + + // If there’s no element, return the picker constructor. + if ( !ELEMENT ) return PickerConstructor + + + var + IS_DEFAULT_THEME = false, + + + // The state of the picker. + STATE = { + id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ) + }, + + + // Merge the defaults and options passed. + SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {}, + + + // Merge the default classes with the settings classes. + CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ), + + + // The element node wrapper into a jQuery object. + $ELEMENT = $( ELEMENT ), + + + // Pseudo picker constructor. + PickerInstance = function() { + return this.start() + }, + + + // The picker prototype. + P = PickerInstance.prototype = { + + constructor: PickerInstance, + + $node: $ELEMENT, + + + /** + * Initialize everything + */ + start: function() { + + // If it’s already started, do nothing. + if ( STATE && STATE.start ) return P + + + // Update the picker states. + STATE.methods = {} + STATE.start = true + STATE.open = false + STATE.type = ELEMENT.type + + + // Confirm focus state, convert into text input to remove UA stylings, + // and set as readonly to prevent keyboard popup. + ELEMENT.autofocus = ELEMENT == getActiveElement() + ELEMENT.readOnly = !SETTINGS.editable + ELEMENT.id = ELEMENT.id || STATE.id + if ( ELEMENT.type != 'text' ) { + ELEMENT.type = 'text' + } + + + // Create a new picker component with the settings. + P.component = new COMPONENT(P, SETTINGS) + + + // Create the picker root with a holder and then prepare it. + P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') ) + prepareElementRoot() + + + // If there’s a format for the hidden input element, create the element. + if ( SETTINGS.formatSubmit ) { + prepareElementHidden() + } + + + // Prepare the input element. + prepareElement() + + + // Insert the root as specified in the settings. + if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root ) + else $ELEMENT.after( P.$root ) + + + // Bind the default component and settings events. + P.on({ + start: P.component.onStart, + render: P.component.onRender, + stop: P.component.onStop, + open: P.component.onOpen, + close: P.component.onClose, + set: P.component.onSet + }).on({ + start: SETTINGS.onStart, + render: SETTINGS.onRender, + stop: SETTINGS.onStop, + open: SETTINGS.onOpen, + close: SETTINGS.onClose, + set: SETTINGS.onSet + }) + + + // Once we’re all set, check the theme in use. + IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] ) + + + // If the element has autofocus, open the picker. + if ( ELEMENT.autofocus ) { + P.open() + } + + + // Trigger queued the “start” and “render” events. + return P.trigger( 'start' ).trigger( 'render' ) + }, //start + + + /** + * Render a new picker + */ + render: function( entireComponent ) { + + // Insert a new component holder in the root or box. + if ( entireComponent ) P.$root.html( createWrappedComponent() ) + else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) ) + + // Trigger the queued “render” events. + return P.trigger( 'render' ) + }, //render + + + /** + * Destroy everything + */ + stop: function() { + + // If it’s already stopped, do nothing. + if ( !STATE.start ) return P + + // Then close the picker. + P.close() + + // Remove the hidden field. + if ( P._hidden ) { + P._hidden.parentNode.removeChild( P._hidden ) + } + + // Remove the root. + P.$root.remove() + + // Remove the input class, remove the stored data, and unbind + // the events (after a tick for IE - see `P.close`). + $ELEMENT.removeClass( CLASSES.input ).removeData( NAME ) + setTimeout( function() { + $ELEMENT.off( '.' + STATE.id ) + }, 0) + + // Restore the element state + ELEMENT.type = STATE.type + ELEMENT.readOnly = false + + // Trigger the queued “stop” events. + P.trigger( 'stop' ) + + // Reset the picker states. + STATE.methods = {} + STATE.start = false + + return P + }, //stop + + + /** + * Open up the picker + */ + open: function( dontGiveFocus ) { + + // If it’s already open, do nothing. + if ( STATE.open ) return P + + // Add the “active” class. + $ELEMENT.addClass( CLASSES.active ) + aria( ELEMENT, 'expanded', true ) + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So add the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 + setTimeout( function() { + + // Add the “opened” class to the picker root. + P.$root.addClass( CLASSES.opened ) + aria( P.$root[0], 'hidden', false ) + + }, 0 ) + + // If we have to give focus, bind the element and doc events. + if ( dontGiveFocus !== false ) { + + // Set it as open. + STATE.open = true + + // Prevent the page from scrolling. + if ( IS_DEFAULT_THEME ) { + $html. + css( 'overflow', 'hidden' ). + css( 'padding-right', '+=' + getScrollbarWidth() ) + } + + // Pass focus to the root element’s jQuery object. + // * Workaround for iOS8 to bring the picker’s root into view. + P.$root.eq(0).focus() + + // Bind the document events. + $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) { + + var target = event.target + + // If the target of the event is not the element, close the picker picker. + // * Don’t worry about clicks or focusins on the root because those don’t bubble up. + // Also, for Firefox, a click on an `option` element bubbles up directly + // to the doc. So make sure the target wasn't the doc. + // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, + // which causes the picker to unexpectedly close when right-clicking it. So make + // sure the event wasn’t a right-click. + if ( target != ELEMENT && target != document && event.which != 3 ) { + + // If the target was the holder that covers the screen, + // keep the element focused to maintain tabindex. + P.close( target === P.$root.children()[0] ) + } + + }).on( 'keydown.' + STATE.id, function( event ) { + + var + // Get the keycode. + keycode = event.keyCode, + + // Translate that to a selection change. + keycodeToMove = P.component.key[ keycode ], + + // Grab the target. + target = event.target + + + // On escape, close the picker and give focus. + if ( keycode == 27 ) { + P.close( true ) + } + + + // Check if there is a key movement or “enter” keypress on the element. + else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) { + + // Prevent the default action to stop page movement. + event.preventDefault() + + // Trigger the key movement action. + if ( keycodeToMove ) { + PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] ) + } + + // On “enter”, if the highlighted item isn’t disabled, set the value and close. + else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) { + P.set( 'select', P.component.item.highlight ).close() + } + } + + + // If the target is within the root and “enter” is pressed, + // prevent the default action and trigger a click on the target instead. + else if ( $.contains( P.$root[0], target ) && keycode == 13 ) { + event.preventDefault() + target.click() + } + }) + } + + // Trigger the queued “open” events. + return P.trigger( 'open' ) + }, //open + + + /** + * Close the picker + */ + close: function( giveFocus ) { + + // If we need to give focus, do it before changing states. + if ( giveFocus ) { + // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| + // The focus is triggered *after* the close has completed - causing it + // to open again. So unbind and rebind the event at the next tick. + P.$root.off( 'focus.toOpen' ).eq(0).focus() + setTimeout( function() { + P.$root.on( 'focus.toOpen', handleFocusToOpenEvent ) + }, 0 ) + } + + // Remove the “active” class. + $ELEMENT.removeClass( CLASSES.active ) + aria( ELEMENT, 'expanded', false ) + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So remove the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 + setTimeout( function() { + + // Remove the “opened” and “focused” class from the picker root. + P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused ) + aria( P.$root[0], 'hidden', true ) + + }, 0 ) + + // If it’s already closed, do nothing more. + if ( !STATE.open ) return P + + // Set it as closed. + STATE.open = false + + // Allow the page to scroll. + if ( IS_DEFAULT_THEME ) { + $html. + css( 'overflow', '' ). + css( 'padding-right', '-=' + getScrollbarWidth() ) + } + + // Unbind the document events. + $document.off( '.' + STATE.id ) + + // Trigger the queued “close” events. + return P.trigger( 'close' ) + }, //close + + + /** + * Clear the values + */ + clear: function( options ) { + return P.set( 'clear', null, options ) + }, //clear + + + /** + * Set something + */ + set: function( thing, value, options ) { + + var thingItem, thingValue, + thingIsObject = $.isPlainObject( thing ), + thingObject = thingIsObject ? thing : {} + + // Make sure we have usable options. + options = thingIsObject && $.isPlainObject( value ) ? value : options || {} + + if ( thing ) { + + // If the thing isn’t an object, make it one. + if ( !thingIsObject ) { + thingObject[ thing ] = value + } + + // Go through the things of items to set. + for ( thingItem in thingObject ) { + + // Grab the value of the thing. + thingValue = thingObject[ thingItem ] + + // First, if the item exists and there’s a value, set it. + if ( thingItem in P.component.item ) { + if ( thingValue === undefined ) thingValue = null + P.component.set( thingItem, thingValue, options ) + } + + // Then, check to update the element value and broadcast a change. + if ( thingItem == 'select' || thingItem == 'clear' ) { + $ELEMENT. + val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ). + trigger( 'change' ) + } + } + + // Render a new picker. + P.render() + } + + // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. + return options.muted ? P : P.trigger( 'set', thingObject ) + }, //set + + + /** + * Get something + */ + get: function( thing, format ) { + + // Make sure there’s something to get. + thing = thing || 'value' + + // If a picker state exists, return that. + if ( STATE[ thing ] != null ) { + return STATE[ thing ] + } + + // Return the submission value, if that. + if ( thing == 'valueSubmit' ) { + if ( P._hidden ) { + return P._hidden.value + } + thing = 'value' + } + + // Return the value, if that. + if ( thing == 'value' ) { + return ELEMENT.value + } + + // Check if a component item exists, return that. + if ( thing in P.component.item ) { + if ( typeof format == 'string' ) { + var thingValue = P.component.get( thing ) + return thingValue ? + PickerConstructor._.trigger( + P.component.formats.toString, + P.component, + [ format, thingValue ] + ) : '' + } + return P.component.get( thing ) + } + }, //get + + + + /** + * Bind events on the things. + */ + on: function( thing, method, internal ) { + + var thingName, thingMethod, + thingIsObject = $.isPlainObject( thing ), + thingObject = thingIsObject ? thing : {} + + if ( thing ) { + + // If the thing isn’t an object, make it one. + if ( !thingIsObject ) { + thingObject[ thing ] = method + } + + // Go through the things to bind to. + for ( thingName in thingObject ) { + + // Grab the method of the thing. + thingMethod = thingObject[ thingName ] + + // If it was an internal binding, prefix it. + if ( internal ) { + thingName = '_' + thingName + } + + // Make sure the thing methods collection exists. + STATE.methods[ thingName ] = STATE.methods[ thingName ] || [] + + // Add the method to the relative method collection. + STATE.methods[ thingName ].push( thingMethod ) + } + } + + return P + }, //on + + + + /** + * Unbind events on the things. + */ + off: function() { + var i, thingName, + names = arguments; + for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) { + thingName = names[i] + if ( thingName in STATE.methods ) { + delete STATE.methods[thingName] + } + } + return P + }, + + + /** + * Fire off method events. + */ + trigger: function( name, data ) { + var _trigger = function( name ) { + var methodList = STATE.methods[ name ] + if ( methodList ) { + methodList.map( function( method ) { + PickerConstructor._.trigger( method, P, [ data ] ) + }) + } + } + _trigger( '_' + name ) + _trigger( name ) + return P + } //trigger + } //PickerInstance.prototype + + + /** + * Wrap the picker holder components together. + */ + function createWrappedComponent() { + + // Create a picker wrapper holder + return PickerConstructor._.node( 'div', + + // Create a picker wrapper node + PickerConstructor._.node( 'div', + + // Create a picker frame + PickerConstructor._.node( 'div', + + // Create a picker box node + PickerConstructor._.node( 'div', + + // Create the components nodes. + P.component.nodes( STATE.open ), + + // The picker box class + CLASSES.box + ), + + // Picker wrap class + CLASSES.wrap + ), + + // Picker frame class + CLASSES.frame + ), + + // Picker holder class + CLASSES.holder + ) //endreturn + } //createWrappedComponent + + + + /** + * Prepare the input element with all bindings. + */ + function prepareElement() { + + $ELEMENT. + + // Store the picker data by component name. + data(NAME, P). + + // Add the “input” class name. + addClass(CLASSES.input). + + // Remove the tabindex. + attr('tabindex', -1). + + // If there’s a `data-value`, update the value of the element. + val( $ELEMENT.data('value') ? + P.get('select', SETTINGS.format) : + ELEMENT.value + ) + + + // Only bind keydown events if the element isn’t editable. + if ( !SETTINGS.editable ) { + + $ELEMENT. + + // On focus/click, focus onto the root to open it up. + on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) { + event.preventDefault() + P.$root.eq(0).focus() + }). + + // Handle keyboard event based on the picker being opened or not. + on( 'keydown.' + STATE.id, handleKeydownEvent ) + } + + + // Update the aria attributes. + aria(ELEMENT, { + haspopup: true, + expanded: false, + readonly: false, + owns: ELEMENT.id + '_root' + }) + } + + + /** + * Prepare the root picker element with all bindings. + */ + function prepareElementRoot() { + + P.$root. + + on({ + + // For iOS8. + keydown: handleKeydownEvent, + + // When something within the root is focused, stop from bubbling + // to the doc and remove the “focused” state from the root. + focusin: function( event ) { + P.$root.removeClass( CLASSES.focused ) + event.stopPropagation() + }, + + // When something within the root holder is clicked, stop it + // from bubbling to the doc. + 'mousedown click': function( event ) { + + var target = event.target + + // Make sure the target isn’t the root holder so it can bubble up. + if ( target != P.$root.children()[ 0 ] ) { + + event.stopPropagation() + + // * For mousedown events, cancel the default action in order to + // prevent cases where focus is shifted onto external elements + // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120). + // Also, for Firefox, don’t prevent action on the `option` element. + if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) { + + event.preventDefault() + + // Re-focus onto the root so that users can click away + // from elements focused within the picker. + P.$root.eq(0).focus() + } + } + } + }). + + // Add/remove the “target” class on focus and blur. + on({ + focus: function() { + $ELEMENT.addClass( CLASSES.target ) + }, + blur: function() { + $ELEMENT.removeClass( CLASSES.target ) + } + }). + + // Open the picker and adjust the root “focused” state + on( 'focus.toOpen', handleFocusToOpenEvent ). + + // If there’s a click on an actionable element, carry out the actions. + on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() { + + var $target = $( this ), + targetData = $target.data(), + targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ), + + // * For IE, non-focusable elements can be active elements as well + // (http://stackoverflow.com/a/2684561). + activeElement = getActiveElement() + activeElement = activeElement && ( activeElement.type || activeElement.href ) + + // If it’s disabled or nothing inside is actively focused, re-focus the element. + if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) { + P.$root.eq(0).focus() + } + + // If something is superficially changed, update the `highlight` based on the `nav`. + if ( !targetDisabled && targetData.nav ) { + P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } ) + } + + // If something is picked, set `select` then close with focus. + else if ( !targetDisabled && 'pick' in targetData ) { + P.set( 'select', targetData.pick ) + } + + // If a “clear” button is pressed, empty the values and close with focus. + else if ( targetData.clear ) { + P.clear().close( true ) + } + + else if ( targetData.close ) { + P.close( true ) + } + + }) //P.$root + + aria( P.$root[0], 'hidden', true ) + } + + + /** + * Prepare the hidden input element along with all bindings. + */ + function prepareElementHidden() { + + var name + + if ( SETTINGS.hiddenName === true ) { + name = ELEMENT.name + ELEMENT.name = '' + } + else { + name = [ + typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '', + typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' + ] + name = name[0] + ELEMENT.name + name[1] + } + + P._hidden = $( + '' + )[0] + + $ELEMENT. + + // If the value changes, update the hidden input with the correct format. + on('change.' + STATE.id, function() { + P._hidden.value = ELEMENT.value ? + P.get('select', SETTINGS.formatSubmit) : + '' + }) + + + // Insert the hidden input as specified in the settings. + if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) + else $ELEMENT.after( P._hidden ) + } + + + // For iOS8. + function handleKeydownEvent( event ) { + + var keycode = event.keyCode, + + // Check if one of the delete keys was pressed. + isKeycodeDelete = /^(8|46)$/.test(keycode) + + // For some reason IE clears the input value on “escape”. + if ( keycode == 27 ) { + P.close() + return false + } + + // Check if `space` or `delete` was pressed or the picker is closed with a key movement. + if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) { + + // Prevent it from moving the page and bubbling to doc. + event.preventDefault() + event.stopPropagation() + + // If `delete` was pressed, clear the values and close the picker. + // Otherwise open the picker. + if ( isKeycodeDelete ) { P.clear().close() } + else { P.open() } + } + } + + + // Separated for IE + function handleFocusToOpenEvent( event ) { + + // Stop the event from propagating to the doc. + event.stopPropagation() + + // If it’s a focus event, add the “focused” class to the root. + if ( event.type == 'focus' ) { + P.$root.addClass( CLASSES.focused ) + } + + // And then finally open the picker. + P.open() + } + + + // Return a new picker instance. + return new PickerInstance() +} //PickerConstructor + + + +/** + * The default classes and prefix to use for the HTML classes. + */ +PickerConstructor.klasses = function( prefix ) { + prefix = prefix || 'picker' + return { + + picker: prefix, + opened: prefix + '--opened', + focused: prefix + '--focused', + + input: prefix + '__input', + active: prefix + '__input--active', + target: prefix + '__input--target', + + holder: prefix + '__holder', + + frame: prefix + '__frame', + wrap: prefix + '__wrap', + + box: prefix + '__box' + } +} //PickerConstructor.klasses + + + +/** + * Check if the default theme is being used. + */ +function isUsingDefaultTheme( element ) { + + var theme, + prop = 'position' + + // For IE. + if ( element.currentStyle ) { + theme = element.currentStyle[prop] + } + + // For normal browsers. + else if ( window.getComputedStyle ) { + theme = getComputedStyle( element )[prop] + } + + return theme == 'fixed' +} + + + +/** + * Get the width of the browser’s scrollbar. + * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js + */ +function getScrollbarWidth() { + + if ( $html.height() <= $window.height() ) { + return 0 + } + + var $outer = $( '
      ' ). + appendTo( 'body' ) + + // Get the width without scrollbars. + var widthWithoutScroll = $outer[0].offsetWidth + + // Force adding scrollbars. + $outer.css( 'overflow', 'scroll' ) + + // Add the inner div. + var $inner = $( '
      ' ).appendTo( $outer ) + + // Get the width with scrollbars. + var widthWithScroll = $inner[0].offsetWidth + + // Remove the divs. + $outer.remove() + + // Return the difference between the widths. + return widthWithoutScroll - widthWithScroll +} + + + +/** + * PickerConstructor helper methods. + */ +PickerConstructor._ = { + + /** + * Create a group of nodes. Expects: + * ` + { + min: {Integer}, + max: {Integer}, + i: {Integer}, + node: {String}, + item: {Function} + } + * ` + */ + group: function( groupObject ) { + + var + // Scope for the looped object + loopObjectScope, + + // Create the nodes list + nodesList = '', + + // The counter starts from the `min` + counter = PickerConstructor._.trigger( groupObject.min, groupObject ) + + + // Loop from the `min` to `max`, incrementing by `i` + for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) { + + // Trigger the `item` function within scope of the object + loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] ) + + // Splice the subgroup and create nodes out of the sub nodes + nodesList += PickerConstructor._.node( + groupObject.node, + loopObjectScope[ 0 ], // the node + loopObjectScope[ 1 ], // the classes + loopObjectScope[ 2 ] // the attributes + ) + } + + // Return the list of nodes + return nodesList + }, //group + + + /** + * Create a dom node string + */ + node: function( wrapper, item, klass, attribute ) { + + // If the item is false-y, just return an empty string + if ( !item ) return '' + + // If the item is an array, do a join + item = $.isArray( item ) ? item.join( '' ) : item + + // Check for the class + klass = klass ? ' class="' + klass + '"' : '' + + // Check for any attributes + attribute = attribute ? ' ' + attribute : '' + + // Return the wrapped item + return '<' + wrapper + klass + attribute + '>' + item + '' + }, //node + + + /** + * Lead numbers below 10 with a zero. + */ + lead: function( number ) { + return ( number < 10 ? '0': '' ) + number + }, + + + /** + * Trigger a function otherwise return the value. + */ + trigger: function( callback, scope, args ) { + return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback + }, + + + /** + * If the second character is a digit, length is 2 otherwise 1. + */ + digits: function( string ) { + return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1 + }, + + + /** + * Tell if something is a date object. + */ + isDate: function( value ) { + return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() ) + }, + + + /** + * Tell if something is an integer. + */ + isInteger: function( value ) { + return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0 + }, + + + /** + * Create ARIA attribute strings. + */ + ariaAttr: ariaAttr +} //PickerConstructor._ + + + +/** + * Extend the picker with a component and defaults. + */ +PickerConstructor.extend = function( name, Component ) { + + // Extend jQuery. + $.fn[ name ] = function( options, action ) { + + // Grab the component data. + var componentData = this.data( name ) + + // If the picker is requested, return the data object. + if ( options == 'picker' ) { + return componentData + } + + // If the component data exists and `options` is a string, carry out the action. + if ( componentData && typeof options == 'string' ) { + return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] ) + } + + // Otherwise go through each matched element and if the component + // doesn’t exist, create a new picker using `this` element + // and merging the defaults and options with a deep copy. + return this.each( function() { + var $this = $( this ) + if ( !$this.data( name ) ) { + new PickerConstructor( this, name, Component, options ) + } + }) + } + + // Set the defaults. + $.fn[ name ].defaults = Component.defaults +} //PickerConstructor.extend + + + +function aria(element, attribute, value) { + if ( $.isPlainObject(attribute) ) { + for ( var key in attribute ) { + ariaSet(element, key, attribute[key]) + } + } + else { + ariaSet(element, attribute, value) + } +} +function ariaSet(element, attribute, value) { + element.setAttribute( + (attribute == 'role' ? '' : 'aria-') + attribute, + value + ) +} +function ariaAttr(attribute, data) { + if ( !$.isPlainObject(attribute) ) { + attribute = { attribute: data } + } + data = '' + for ( var key in attribute ) { + var attr = (key == 'role' ? '' : 'aria-') + key, + attrVal = attribute[key] + data += attrVal == null ? '' : attr + '="' + attribute[key] + '"' + } + return data +} + +// IE8 bug throws an error for activeElements within iframes. +function getActiveElement() { + try { + return document.activeElement + } catch ( err ) { } +} + + + +// Expose the picker constructor. +return PickerConstructor + + +})); + + +;/*! + * Date picker for pickadate.js v3.5.0 + * http://amsul.github.io/pickadate.js/date.htm + */ + +(function ( factory ) { + + // AMD. + if ( typeof define == 'function' && define.amd ) + define( ['picker', 'jquery'], factory ) + + // Node.js/browserify. + else if ( typeof exports == 'object' ) + module.exports = factory( require('./picker.js'), require('jquery') ) + + // Browser globals. + else factory( Picker, jQuery ) + +}(function( Picker, $ ) { + + +/** + * Globals and constants + */ +var DAYS_IN_WEEK = 7, + WEEKS_IN_CALENDAR = 6, + _ = Picker._ + + + +/** + * The date picker constructor + */ +function DatePicker( picker, settings ) { + + var calendar = this, + element = picker.$node[ 0 ], + elementValue = element.value, + elementDataValue = picker.$node.data( 'value' ), + valueString = elementDataValue || elementValue, + formatString = elementDataValue ? settings.formatSubmit : settings.format, + isRTL = function() { + + return element.currentStyle ? + + // For IE. + element.currentStyle.direction == 'rtl' : + + // For normal browsers. + getComputedStyle( picker.$root[0] ).direction == 'rtl' + } + + calendar.settings = settings + calendar.$node = picker.$node + + // The queue of methods that will be used to build item objects. + calendar.queue = { + min: 'measure create', + max: 'measure create', + now: 'now create', + select: 'parse create validate', + highlight: 'parse navigate create validate', + view: 'parse create validate viewset', + disable: 'deactivate', + enable: 'activate' + } + + // The component's item object. + calendar.item = {} + + calendar.item.clear = null + calendar.item.disable = ( settings.disable || [] ).slice( 0 ) + calendar.item.enable = -(function( collectionDisabled ) { + return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1 + })( calendar.item.disable ) + + calendar. + set( 'min', settings.min ). + set( 'max', settings.max ). + set( 'now' ) + + // When there’s a value, set the `select`, which in turn + // also sets the `highlight` and `view`. + if ( valueString ) { + calendar.set( 'select', valueString, { format: formatString }) + } + + // If there’s no value, default to highlighting “today”. + else { + calendar. + set( 'select', null ). + set( 'highlight', calendar.item.now ) + } + + + // The keycode to movement mapping. + calendar.key = { + 40: 7, // Down + 38: -7, // Up + 39: function() { return isRTL() ? -1 : 1 }, // Right + 37: function() { return isRTL() ? 1 : -1 }, // Left + go: function( timeChange ) { + var highlightedObject = calendar.item.highlight, + targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange ) + calendar.set( + 'highlight', + targetDate, + { interval: timeChange } + ) + this.render() + } + } + + + // Bind some picker events. + picker. + on( 'render', function() { + picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() { + var value = this.value + if ( value ) { + picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] ) + picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' ) + } + }) + picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() { + var value = this.value + if ( value ) { + picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] ) + picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' ) + } + }) + }, 1 ). + on( 'open', function() { + var includeToday = '' + if ( calendar.disabled( calendar.get('now') ) ) { + includeToday = ':not(.' + settings.klass.buttonToday + ')' + } + picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false ) + }, 1 ). + on( 'close', function() { + picker.$root.find( 'button, select' ).attr( 'disabled', true ) + }, 1 ) + +} //DatePicker + + +/** + * Set a datepicker item object. + */ +DatePicker.prototype.set = function( type, value, options ) { + + var calendar = this, + calendarItem = calendar.item + + // If the value is `null` just set it immediately. + if ( value === null ) { + if ( type == 'clear' ) type = 'select' + calendarItem[ type ] = value + return calendar + } + + // Otherwise go through the queue of methods, and invoke the functions. + // Update this as the time unit, and set the final value as this item. + // * In the case of `enable`, keep the queue but set `disable` instead. + // And in the case of `flip`, keep the queue but set `enable` instead. + calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) { + value = calendar[ method ]( type, value, options ) + return value + }).pop() + + // Check if we need to cascade through more updates. + if ( type == 'select' ) { + calendar.set( 'highlight', calendarItem.select, options ) + } + else if ( type == 'highlight' ) { + calendar.set( 'view', calendarItem.highlight, options ) + } + else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) { + if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) { + calendar.set( 'select', calendarItem.select, options ) + } + if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) { + calendar.set( 'highlight', calendarItem.highlight, options ) + } + } + + return calendar +} //DatePicker.prototype.set + + +/** + * Get a datepicker item object. + */ +DatePicker.prototype.get = function( type ) { + return this.item[ type ] +} //DatePicker.prototype.get + + +/** + * Create a picker date object. + */ +DatePicker.prototype.create = function( type, value, options ) { + + var isInfiniteValue, + calendar = this + + // If there’s no value, use the type as the value. + value = value === undefined ? type : value + + + // If it’s infinity, update the value. + if ( value == -Infinity || value == Infinity ) { + isInfiniteValue = value + } + + // If it’s an object, use the native date object. + else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { + value = value.obj + } + + // If it’s an array, convert it into a date and make sure + // that it’s a valid date – otherwise default to today. + else if ( $.isArray( value ) ) { + value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) + value = _.isDate( value ) ? value : calendar.create().obj + } + + // If it’s a number or date object, make a normalized date. + else if ( _.isInteger( value ) || _.isDate( value ) ) { + value = calendar.normalize( new Date( value ), options ) + } + + // If it’s a literal true or any other case, set it to now. + else /*if ( value === true )*/ { + value = calendar.now( type, value, options ) + } + + // Return the compiled object. + return { + year: isInfiniteValue || value.getFullYear(), + month: isInfiniteValue || value.getMonth(), + date: isInfiniteValue || value.getDate(), + day: isInfiniteValue || value.getDay(), + obj: isInfiniteValue || value, + pick: isInfiniteValue || value.getTime() + } +} //DatePicker.prototype.create + + +/** + * Create a range limit object using an array, date object, + * literal “true”, or integer relative to another time. + */ +DatePicker.prototype.createRange = function( from, to ) { + + var calendar = this, + createDate = function( date ) { + if ( date === true || $.isArray( date ) || _.isDate( date ) ) { + return calendar.create( date ) + } + return date + } + + // Create objects if possible. + if ( !_.isInteger( from ) ) { + from = createDate( from ) + } + if ( !_.isInteger( to ) ) { + to = createDate( to ) + } + + // Create relative dates. + if ( _.isInteger( from ) && $.isPlainObject( to ) ) { + from = [ to.year, to.month, to.date + from ]; + } + else if ( _.isInteger( to ) && $.isPlainObject( from ) ) { + to = [ from.year, from.month, from.date + to ]; + } + + return { + from: createDate( from ), + to: createDate( to ) + } +} //DatePicker.prototype.createRange + + +/** + * Check if a date unit falls within a date range object. + */ +DatePicker.prototype.withinRange = function( range, dateUnit ) { + range = this.createRange(range.from, range.to) + return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick +} + + +/** + * Check if two date range objects overlap. + */ +DatePicker.prototype.overlapRanges = function( one, two ) { + + var calendar = this + + // Convert the ranges into comparable dates. + one = calendar.createRange( one.from, one.to ) + two = calendar.createRange( two.from, two.to ) + + return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) || + calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to ) +} + + +/** + * Get the date today. + */ +DatePicker.prototype.now = function( type, value, options ) { + value = new Date() + if ( options && options.rel ) { + value.setDate( value.getDate() + options.rel ) + } + return this.normalize( value, options ) +} + + +/** + * Navigate to next/prev month. + */ +DatePicker.prototype.navigate = function( type, value, options ) { + + var targetDateObject, + targetYear, + targetMonth, + targetDate, + isTargetArray = $.isArray( value ), + isTargetObject = $.isPlainObject( value ), + viewsetObject = this.item.view/*, + safety = 100*/ + + + if ( isTargetArray || isTargetObject ) { + + if ( isTargetObject ) { + targetYear = value.year + targetMonth = value.month + targetDate = value.date + } + else { + targetYear = +value[0] + targetMonth = +value[1] + targetDate = +value[2] + } + + // If we’re navigating months but the view is in a different + // month, navigate to the view’s year and month. + if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) { + targetYear = viewsetObject.year + targetMonth = viewsetObject.month + } + + // Figure out the expected target year and month. + targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 ) + targetYear = targetDateObject.getFullYear() + targetMonth = targetDateObject.getMonth() + + // If the month we’re going to doesn’t have enough days, + // keep decreasing the date until we reach the month’s last date. + while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) { + targetDate -= 1 + /*safety -= 1 + if ( !safety ) { + throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.' + }*/ + } + + value = [ targetYear, targetMonth, targetDate ] + } + + return value +} //DatePicker.prototype.navigate + + +/** + * Normalize a date by setting the hours to midnight. + */ +DatePicker.prototype.normalize = function( value/*, options*/ ) { + value.setHours( 0, 0, 0, 0 ) + return value +} + + +/** + * Measure the range of dates. + */ +DatePicker.prototype.measure = function( type, value/*, options*/ ) { + + var calendar = this + + // If it’s anything false-y, remove the limits. + if ( !value ) { + value = type == 'min' ? -Infinity : Infinity + } + + // If it’s a string, parse it. + else if ( typeof value == 'string' ) { + value = calendar.parse( type, value ) + } + + // If it's an integer, get a date relative to today. + else if ( _.isInteger( value ) ) { + value = calendar.now( type, value, { rel: value } ) + } + + return value +} ///DatePicker.prototype.measure + + +/** + * Create a viewset object based on navigation. + */ +DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) { + return this.create([ dateObject.year, dateObject.month, 1 ]) +} + + +/** + * Validate a date as enabled and shift if needed. + */ +DatePicker.prototype.validate = function( type, dateObject, options ) { + + var calendar = this, + + // Keep a reference to the original date. + originalDateObject = dateObject, + + // Make sure we have an interval. + interval = options && options.interval ? options.interval : 1, + + // Check if the calendar enabled dates are inverted. + isFlippedBase = calendar.item.enable === -1, + + // Check if we have any enabled dates after/before now. + hasEnabledBeforeTarget, hasEnabledAfterTarget, + + // The min & max limits. + minLimitObject = calendar.item.min, + maxLimitObject = calendar.item.max, + + // Check if we’ve reached the limit during shifting. + reachedMin, reachedMax, + + // Check if the calendar is inverted and at least one weekday is enabled. + hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) { + + // If there’s a date, check where it is relative to the target. + if ( $.isArray( value ) ) { + var dateTime = calendar.create( value ).pick + if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true + else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true + } + + // Return only integers for enabled weekdays. + return _.isInteger( value ) + }).length/*, + + safety = 100*/ + + + + // Cases to validate for: + // [1] Not inverted and date disabled. + // [2] Inverted and some dates enabled. + // [3] Not inverted and out of range. + // + // Cases to **not** validate for: + // • Navigating months. + // • Not inverted and date enabled. + // • Inverted and all dates disabled. + // • ..and anything else. + if ( !options || !options.nav ) if ( + /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) || + /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) || + /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) ) + ) { + + + // When inverted, flip the direction if there aren’t any enabled weekdays + // and there are no enabled dates in the direction of the interval. + if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) { + interval *= -1 + } + + + // Keep looping until we reach an enabled date. + while ( /*safety &&*/ calendar.disabled( dateObject ) ) { + + /*safety -= 1 + if ( !safety ) { + throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.' + }*/ + + + // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval. + if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) { + dateObject = originalDateObject + interval = interval > 0 ? 1 : -1 + } + + + // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit. + if ( dateObject.pick <= minLimitObject.pick ) { + reachedMin = true + interval = 1 + dateObject = calendar.create([ + minLimitObject.year, + minLimitObject.month, + minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1) + ]) + } + else if ( dateObject.pick >= maxLimitObject.pick ) { + reachedMax = true + interval = -1 + dateObject = calendar.create([ + maxLimitObject.year, + maxLimitObject.month, + maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1) + ]) + } + + + // If we’ve reached both limits, just break out of the loop. + if ( reachedMin && reachedMax ) { + break + } + + + // Finally, create the shifted date using the interval and keep looping. + dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) + } + + } //endif + + + // Return the date object settled on. + return dateObject +} //DatePicker.prototype.validate + + +/** + * Check if a date is disabled. + */ +DatePicker.prototype.disabled = function( dateToVerify ) { + + var + calendar = this, + + // Filter through the disabled dates to check if this is one. + isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) { + + // If the date is a number, match the weekday with 0index and `firstDay` check. + if ( _.isInteger( dateToDisable ) ) { + return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7 + } + + // If it’s an array or a native JS date, create and match the exact date. + if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) { + return dateToVerify.pick === calendar.create( dateToDisable ).pick + } + + // If it’s an object, match a date within the “from” and “to” range. + if ( $.isPlainObject( dateToDisable ) ) { + return calendar.withinRange( dateToDisable, dateToVerify ) + } + }) + + // If this date matches a disabled date, confirm it’s not inverted. + isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) { + return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' || + $.isPlainObject( dateToDisable ) && dateToDisable.inverted + }).length + + // Check the calendar “enabled” flag and respectively flip the + // disabled state. Then also check if it’s beyond the min/max limits. + return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch || + dateToVerify.pick < calendar.item.min.pick || + dateToVerify.pick > calendar.item.max.pick + +} //DatePicker.prototype.disabled + + +/** + * Parse a string into a usable type. + */ +DatePicker.prototype.parse = function( type, value, options ) { + + var calendar = this, + parsingObject = {} + + // If it’s already parsed, we’re good. + if ( !value || typeof value != 'string' ) { + return value + } + + // We need a `.format` to parse the value with. + if ( !( options && options.format ) ) { + options = options || {} + options.format = calendar.settings.format + } + + // Convert the format into an array and then map through it. + calendar.formats.toArray( options.format ).map( function( label ) { + + var + // Grab the formatting label. + formattingLabel = calendar.formats[ label ], + + // The format length is from the formatting label function or the + // label length without the escaping exclamation (!) mark. + formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length + + // If there's a format label, split the value up to the format length. + // Then add it to the parsing object with appropriate label. + if ( formattingLabel ) { + parsingObject[ label ] = value.substr( 0, formatLength ) + } + + // Update the value as the substring from format length to end. + value = value.substr( formatLength ) + }) + + // Compensate for month 0index. + return [ + parsingObject.yyyy || parsingObject.yy, + +( parsingObject.mm || parsingObject.m ) - 1, + parsingObject.dd || parsingObject.d + ] +} //DatePicker.prototype.parse + + +/** + * Various formats to display the object in. + */ +DatePicker.prototype.formats = (function() { + + // Return the length of the first word in a collection. + function getWordLengthFromCollection( string, collection, dateObject ) { + + // Grab the first word from the string. + var word = string.match( /\w+/ )[ 0 ] + + // If there's no month index, add it to the date object + if ( !dateObject.mm && !dateObject.m ) { + dateObject.m = collection.indexOf( word ) + 1 + } + + // Return the length of the word. + return word.length + } + + // Get the length of the first word in a string. + function getFirstWordLength( string ) { + return string.match( /\w+/ )[ 0 ].length + } + + return { + + d: function( string, dateObject ) { + + // If there's string, then get the digits length. + // Otherwise return the selected date. + return string ? _.digits( string ) : dateObject.date + }, + dd: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected date with a leading zero. + return string ? 2 : _.lead( dateObject.date ) + }, + ddd: function( string, dateObject ) { + + // If there's a string, then get the length of the first word. + // Otherwise return the short selected weekday. + return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ] + }, + dddd: function( string, dateObject ) { + + // If there's a string, then get the length of the first word. + // Otherwise return the full selected weekday. + return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ] + }, + m: function( string, dateObject ) { + + // If there's a string, then get the length of the digits + // Otherwise return the selected month with 0index compensation. + return string ? _.digits( string ) : dateObject.month + 1 + }, + mm: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected month with 0index and leading zero. + return string ? 2 : _.lead( dateObject.month + 1 ) + }, + mmm: function( string, dateObject ) { + + var collection = this.settings.monthsShort + + // If there's a string, get length of the relevant month from the short + // months collection. Otherwise return the selected month from that collection. + return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] + }, + mmmm: function( string, dateObject ) { + + var collection = this.settings.monthsFull + + // If there's a string, get length of the relevant month from the full + // months collection. Otherwise return the selected month from that collection. + return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] + }, + yy: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected year by slicing out the first 2 digits. + return string ? 2 : ( '' + dateObject.year ).slice( 2 ) + }, + yyyy: function( string, dateObject ) { + + // If there's a string, then the length is always 4. + // Otherwise return the selected year. + return string ? 4 : dateObject.year + }, + + // Create an array by splitting the formatting string passed. + toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) }, + + // Format an object into a string using the formatting options. + toString: function ( formatString, itemObject ) { + var calendar = this + return calendar.formats.toArray( formatString ).map( function( label ) { + return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' ) + }).join( '' ) + } + } +})() //DatePicker.prototype.formats + + + + +/** + * Check if two date units are the exact. + */ +DatePicker.prototype.isDateExact = function( one, two ) { + + var calendar = this + + // When we’re working with weekdays, do a direct comparison. + if ( + ( _.isInteger( one ) && _.isInteger( two ) ) || + ( typeof one == 'boolean' && typeof two == 'boolean' ) + ) { + return one === two + } + + // When we’re working with date representations, compare the “pick” value. + if ( + ( _.isDate( one ) || $.isArray( one ) ) && + ( _.isDate( two ) || $.isArray( two ) ) + ) { + return calendar.create( one ).pick === calendar.create( two ).pick + } + + // When we’re working with range objects, compare the “from” and “to”. + if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { + return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to ) + } + + return false +} + + +/** + * Check if two date units overlap. + */ +DatePicker.prototype.isDateOverlap = function( one, two ) { + + var calendar = this, + firstDay = calendar.settings.firstDay ? 1 : 0 + + // When we’re working with a weekday index, compare the days. + if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) { + one = one % 7 + firstDay + return one === calendar.create( two ).day + 1 + } + if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) { + two = two % 7 + firstDay + return two === calendar.create( one ).day + 1 + } + + // When we’re working with range objects, check if the ranges overlap. + if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { + return calendar.overlapRanges( one, two ) + } + + return false +} + + +/** + * Flip the “enabled” state. + */ +DatePicker.prototype.flipEnable = function(val) { + var itemObject = this.item + itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1) +} + + +/** + * Mark a collection of dates as “disabled”. + */ +DatePicker.prototype.deactivate = function( type, datesToDisable ) { + + var calendar = this, + disabledItems = calendar.item.disable.slice(0) + + + // If we’re flipping, that’s all we need to do. + if ( datesToDisable == 'flip' ) { + calendar.flipEnable() + } + + else if ( datesToDisable === false ) { + calendar.flipEnable(1) + disabledItems = [] + } + + else if ( datesToDisable === true ) { + calendar.flipEnable(-1) + disabledItems = [] + } + + // Otherwise go through the dates to disable. + else { + + datesToDisable.map(function( unitToDisable ) { + + var matchFound + + // When we have disabled items, check for matches. + // If something is matched, immediately break out. + for ( var index = 0; index < disabledItems.length; index += 1 ) { + if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) { + matchFound = true + break + } + } + + // If nothing was found, add the validated unit to the collection. + if ( !matchFound ) { + if ( + _.isInteger( unitToDisable ) || + _.isDate( unitToDisable ) || + $.isArray( unitToDisable ) || + ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to ) + ) { + disabledItems.push( unitToDisable ) + } + } + }) + } + + // Return the updated collection. + return disabledItems +} //DatePicker.prototype.deactivate + + +/** + * Mark a collection of dates as “enabled”. + */ +DatePicker.prototype.activate = function( type, datesToEnable ) { + + var calendar = this, + disabledItems = calendar.item.disable, + disabledItemsCount = disabledItems.length + + // If we’re flipping, that’s all we need to do. + if ( datesToEnable == 'flip' ) { + calendar.flipEnable() + } + + else if ( datesToEnable === true ) { + calendar.flipEnable(1) + disabledItems = [] + } + + else if ( datesToEnable === false ) { + calendar.flipEnable(-1) + disabledItems = [] + } + + // Otherwise go through the disabled dates. + else { + + datesToEnable.map(function( unitToEnable ) { + + var matchFound, + disabledUnit, + index, + isExactRange + + // Go through the disabled items and try to find a match. + for ( index = 0; index < disabledItemsCount; index += 1 ) { + + disabledUnit = disabledItems[index] + + // When an exact match is found, remove it from the collection. + if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) { + matchFound = disabledItems[index] = null + isExactRange = true + break + } + + // When an overlapped match is found, add the “inverted” state to it. + else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) { + if ( $.isPlainObject( unitToEnable ) ) { + unitToEnable.inverted = true + matchFound = unitToEnable + } + else if ( $.isArray( unitToEnable ) ) { + matchFound = unitToEnable + if ( !matchFound[3] ) matchFound.push( 'inverted' ) + } + else if ( _.isDate( unitToEnable ) ) { + matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] + } + break + } + } + + // If a match was found, remove a previous duplicate entry. + if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) { + if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) { + disabledItems[index] = null + break + } + } + + // In the event that we’re dealing with an exact range of dates, + // make sure there are no “inverted” dates because of it. + if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) { + if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) { + disabledItems[index] = null + break + } + } + + // If something is still matched, add it into the collection. + if ( matchFound ) { + disabledItems.push( matchFound ) + } + }) + } + + // Return the updated collection. + return disabledItems.filter(function( val ) { return val != null }) +} //DatePicker.prototype.activate + + +/** + * Create a string for the nodes in the picker. + */ +DatePicker.prototype.nodes = function( isOpen ) { + + var + calendar = this, + settings = calendar.settings, + calendarItem = calendar.item, + nowObject = calendarItem.now, + selectedObject = calendarItem.select, + highlightedObject = calendarItem.highlight, + viewsetObject = calendarItem.view, + disabledCollection = calendarItem.disable, + minLimitObject = calendarItem.min, + maxLimitObject = calendarItem.max, + + + // Create the calendar table head using a copy of weekday labels collection. + // * We do a copy so we don't mutate the original array. + tableHead = (function( collection, fullCollection ) { + + // If the first day should be Monday, move Sunday to the end. + if ( settings.firstDay ) { + collection.push( collection.shift() ) + fullCollection.push( fullCollection.shift() ) + } + + // Create and return the table head group. + return _.node( + 'thead', + _.node( + 'tr', + _.group({ + min: 0, + max: DAYS_IN_WEEK - 1, + i: 1, + node: 'th', + item: function( counter ) { + return [ + collection[ counter ], + settings.klass.weekdays, + 'scope=col title="' + fullCollection[ counter ] + '"' + ] + } + }) + ) + ) //endreturn + + // Materialize modified + })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead + + + // Create the nav for next/prev month. + createMonthNav = function( next ) { + + // Otherwise, return the created month tag. + return _.node( + 'div', + ' ', + settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + ( + + // If the focused month is outside the range, disabled the button. + ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || + ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? + ' ' + settings.klass.navDisabled : '' + ), + 'data-nav=' + ( next || -1 ) + ' ' + + _.ariaAttr({ + role: 'button', + controls: calendar.$node[0].id + '_table' + }) + ' ' + + 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"' + ) //endreturn + }, //createMonthNav + + + // Create the month label. + //Materialize modified + createMonthLabel = function(override) { + + var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull + + // Materialize modified + if (override == "short_months") { + monthsCollection = settings.monthsShort; + } + + // If there are months to select, add a dropdown menu. + if ( settings.selectMonths && override == undefined) { + + return _.node( 'select', + _.group({ + min: 0, + max: 11, + i: 1, + node: 'option', + item: function( loopedMonth ) { + + return [ + + // The looped month and no classes. + monthsCollection[ loopedMonth ], 0, + + // Set the value and selected index. + 'value=' + loopedMonth + + ( viewsetObject.month == loopedMonth ? ' selected' : '' ) + + ( + ( + ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) || + ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ) + ) ? + ' disabled' : '' + ) + ] + } + }), + settings.klass.selectMonth + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelMonthSelect + '"' + ) + } + + // Materialize modified + if (override == "short_months") + if (selectedObject != null) + return _.node( 'div', monthsCollection[ selectedObject.month ] ); + else return _.node( 'div', monthsCollection[ viewsetObject.month ] ); + + // If there's a need for a month selector + return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month ) + }, //createMonthLabel + + + // Create the year label. + // Materialize modified + createYearLabel = function(override) { + + var focusedYear = viewsetObject.year, + + // If years selector is set to a literal "true", set it to 5. Otherwise + // divide in half to get half before and half after focused year. + numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 ) + + // If there are years to select, add a dropdown menu. + if ( numberYears ) { + + var + minYear = minLimitObject.year, + maxYear = maxLimitObject.year, + lowestYear = focusedYear - numberYears, + highestYear = focusedYear + numberYears + + // If the min year is greater than the lowest year, increase the highest year + // by the difference and set the lowest year to the min year. + if ( minYear > lowestYear ) { + highestYear += minYear - lowestYear + lowestYear = minYear + } + + // If the max year is less than the highest year, decrease the lowest year + // by the lower of the two: available and needed years. Then set the + // highest year to the max year. + if ( maxYear < highestYear ) { + + var availableYears = lowestYear - minYear, + neededYears = highestYear - maxYear + + lowestYear -= availableYears > neededYears ? neededYears : availableYears + highestYear = maxYear + } + + if ( settings.selectYears && override == undefined ) { + return _.node( 'select', + _.group({ + min: lowestYear, + max: highestYear, + i: 1, + node: 'option', + item: function( loopedYear ) { + return [ + + // The looped year and no classes. + loopedYear, 0, + + // Set the value and selected index. + 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' ) + ] + } + }), + settings.klass.selectYear + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelYearSelect + '"' + ) + } + } + + // Materialize modified + if (override == "raw") + return _.node( 'div', focusedYear ) + + // Otherwise just return the year focused + return _.node( 'div', focusedYear, settings.klass.year ) + } //createYearLabel + + + // Materialize modified + createDayLabel = function() { + if (selectedObject != null) + return _.node( 'div', selectedObject.date) + else return _.node( 'div', nowObject.date) + } + createWeekdayLabel = function() { + var display_day; + + if (selectedObject != null) + display_day = selectedObject.day; + else + display_day = nowObject.day; + var weekday = settings.weekdaysFull[ display_day ] + return weekday + } + + + // Create and return the entire calendar. +return _.node( + // Date presentation View + 'div', + _.node( + 'div', + createWeekdayLabel(), + "picker__weekday-display" + )+ + _.node( + // Div for short Month + 'div', + createMonthLabel("short_months"), + settings.klass.month_display + )+ + _.node( + // Div for Day + 'div', + createDayLabel() , + settings.klass.day_display + )+ + _.node( + // Div for Year + 'div', + createYearLabel("raw") , + settings.klass.year_display + ), + settings.klass.date_display + )+ + // Calendar container + _.node('div', + _.node('div', + ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) + + createMonthNav() + createMonthNav( 1 ), + settings.klass.header + ) + _.node( + 'table', + tableHead + + _.node( + 'tbody', + _.group({ + min: 0, + max: WEEKS_IN_CALENDAR - 1, + i: 1, + node: 'tr', + item: function( rowCounter ) { + + // If Monday is the first day and the month starts on Sunday, shift the date back a week. + var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0 + + return [ + _.group({ + min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index + max: function() { + return this.min + DAYS_IN_WEEK - 1 + }, + i: 1, + node: 'td', + item: function( targetDate ) { + + // Convert the time date from a relative date to a target date. + targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ]) + + var isSelected = selectedObject && selectedObject.pick == targetDate.pick, + isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, + isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, + formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) + + return [ + _.node( + 'div', + targetDate.date, + (function( klasses ) { + + // Add the `infocus` or `outfocus` classes based on month in view. + klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus ) + + // Add the `today` class if needed. + if ( nowObject.pick == targetDate.pick ) { + klasses.push( settings.klass.now ) + } + + // Add the `selected` class if something's selected and the time matches. + if ( isSelected ) { + klasses.push( settings.klass.selected ) + } + + // Add the `highlighted` class if something's highlighted and the time matches. + if ( isHighlighted ) { + klasses.push( settings.klass.highlighted ) + } + + // Add the `disabled` class if something's disabled and the object matches. + if ( isDisabled ) { + klasses.push( settings.klass.disabled ) + } + + return klasses.join( ' ' ) + })([ settings.klass.day ]), + 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ + role: 'gridcell', + label: formattedDate, + selected: isSelected && calendar.$node.val() === formattedDate ? true : null, + activedescendant: isHighlighted ? true : null, + disabled: isDisabled ? true : null + }) + ), + '', + _.ariaAttr({ role: 'presentation' }) + ] //endreturn + } + }) + ] //endreturn + } + }) + ), + settings.klass.table, + 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ + role: 'grid', + controls: calendar.$node[0].id, + readonly: true + }) + ) + , settings.klass.calendar_container) // end calendar + + + + + // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. + _.node( + 'div', + _.node( 'button', settings.today, "btn-flat picker__today", + 'type=button data-pick=' + nowObject.pick + + ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id }) ) + + _.node( 'button', settings.clear, "btn-flat picker__clear", + 'type=button data-clear=1' + + ( isOpen ? '' : ' disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id }) ) + + _.node('button', settings.close, "btn-flat picker__close", + 'type=button data-close=true ' + + ( isOpen ? '' : ' disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id }) ), + settings.klass.footer + ) //endreturn +} //DatePicker.prototype.nodes + + + + +/** + * The date picker defaults. + */ +DatePicker.defaults = (function( prefix ) { + + return { + + // The title label to use for the month nav buttons + labelMonthNext: 'Next month', + labelMonthPrev: 'Previous month', + + // The title label to use for the dropdown selectors + labelMonthSelect: 'Select a month', + labelYearSelect: 'Select a year', + + // Months and weekdays + monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], + monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], + weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], + weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], + + // Materialize modified + weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ], + + // Today and clear + today: 'Today', + clear: 'Clear', + close: 'Close', + + // The format to show on the `input` element + format: 'd mmmm, yyyy', + + // Classes + klass: { + + table: prefix + 'table', + + header: prefix + 'header', + + + // Materialize Added klasses + date_display: prefix + 'date-display', + day_display: prefix + 'day-display', + month_display: prefix + 'month-display', + year_display: prefix + 'year-display', + calendar_container: prefix + 'calendar-container', + // end + + + + navPrev: prefix + 'nav--prev', + navNext: prefix + 'nav--next', + navDisabled: prefix + 'nav--disabled', + + month: prefix + 'month', + year: prefix + 'year', + + selectMonth: prefix + 'select--month', + selectYear: prefix + 'select--year', + + weekdays: prefix + 'weekday', + + day: prefix + 'day', + disabled: prefix + 'day--disabled', + selected: prefix + 'day--selected', + highlighted: prefix + 'day--highlighted', + now: prefix + 'day--today', + infocus: prefix + 'day--infocus', + outfocus: prefix + 'day--outfocus', + + footer: prefix + 'footer', + + buttonClear: prefix + 'button--clear', + buttonToday: prefix + 'button--today', + buttonClose: prefix + 'button--close' + } + } +})( Picker.klasses().picker + '__' ) + + + + + +/** + * Extend the picker to add the date picker. + */ +Picker.extend( 'pickadate', DatePicker ) + + +})); + + +;(function ($) { + + $.fn.characterCounter = function(){ + return this.each(function(){ + var $input = $(this); + var $counterElement = $input.parent().find('span[class="character-counter"]'); + + // character counter has already been added appended to the parent container + if ($counterElement.length) { + return; + } + + var itHasLengthAttribute = $input.attr('length') !== undefined; + + if(itHasLengthAttribute){ + $input.on('input', updateCounter); + $input.on('focus', updateCounter); + $input.on('blur', removeCounterElement); + + addCounterElement($input); + } + + }); + }; + + function updateCounter(){ + var maxLength = +$(this).attr('length'), + actualLength = +$(this).val().length, + isValidLength = actualLength <= maxLength; + + $(this).parent().find('span[class="character-counter"]') + .html( actualLength + '/' + maxLength); + + addInputStyle(isValidLength, $(this)); + } + + function addCounterElement($input) { + var $counterElement = $input.parent().find('span[class="character-counter"]'); + + if ($counterElement.length) { + return; + } + + $counterElement = $('') + .addClass('character-counter') + .css('float','right') + .css('font-size','12px') + .css('height', 1); + + $input.parent().append($counterElement); + } + + function removeCounterElement(){ + $(this).parent().find('span[class="character-counter"]').html(''); + } + + function addInputStyle(isValidLength, $input){ + var inputHasInvalidClass = $input.hasClass('invalid'); + if (isValidLength && inputHasInvalidClass) { + $input.removeClass('invalid'); + } + else if(!isValidLength && !inputHasInvalidClass){ + $input.removeClass('valid'); + $input.addClass('invalid'); + } + } + + $(document).ready(function(){ + $('input, textarea').characterCounter(); + }); + +}( jQuery )); +;(function ($) { + + var methods = { + + init : function(options) { + var defaults = { + time_constant: 200, // ms + dist: -100, // zoom scale TODO: make this more intuitive as an option + shift: 0, // spacing for center image + padding: 0, // Padding between non center items + full_width: false, // Change to full width styles + indicators: false, // Toggle indicators + no_wrap: false // Don't wrap around and cycle through items. + }; + options = $.extend(defaults, options); + + return this.each(function() { + + var images, offset, center, pressed, dim, count, + reference, referenceY, amplitude, target, velocity, + xform, frame, timestamp, ticker, dragged, vertical_dragged; + var $indicators = $('
        '); + + + // Initialize + var view = $(this); + var showIndicators = view.attr('data-indicators') || options.indicators; + + // Don't double initialize. + if (view.hasClass('initialized')) { + // Redraw carousel. + $(this).trigger('carouselNext', [0.000001]); + return true; + } + + + // Options + if (options.full_width) { + options.dist = 0; + var firstImage = view.find('.carousel-item img').first(); + if (firstImage.length) { + imageHeight = firstImage.load(function(){ + view.css('height', $(this).height()); + }); + } else { + imageHeight = view.find('.carousel-item').first().height(); + view.css('height', imageHeight); + } + + // Offset fixed items when indicators. + if (showIndicators) { + view.find('.carousel-fixed-item').addClass('with-indicators'); + } + } + + + view.addClass('initialized'); + pressed = false; + offset = target = 0; + images = []; + item_width = view.find('.carousel-item').first().innerWidth(); + dim = item_width * 2 + options.padding; + + view.find('.carousel-item').each(function (i) { + images.push($(this)[0]); + if (showIndicators) { + var $indicator = $('
      • '); + + // Add active to first by default. + if (i === 0) { + $indicator.addClass('active'); + } + + // Handle clicks on indicators. + $indicator.click(function () { + var index = $(this).index(); + cycleTo(index); + }); + $indicators.append($indicator); + } + }); + + if (showIndicators) { + view.append($indicators); + } + count = images.length; + + + function setupEvents() { + if (typeof window.ontouchstart !== 'undefined') { + view[0].addEventListener('touchstart', tap); + view[0].addEventListener('touchmove', drag); + view[0].addEventListener('touchend', release); + } + view[0].addEventListener('mousedown', tap); + view[0].addEventListener('mousemove', drag); + view[0].addEventListener('mouseup', release); + view[0].addEventListener('mouseleave', release); + view[0].addEventListener('click', click); + } + + function xpos(e) { + // touch event + if (e.targetTouches && (e.targetTouches.length >= 1)) { + return e.targetTouches[0].clientX; + } + + // mouse event + return e.clientX; + } + + function ypos(e) { + // touch event + if (e.targetTouches && (e.targetTouches.length >= 1)) { + return e.targetTouches[0].clientY; + } + + // mouse event + return e.clientY; + } + + function wrap(x) { + return (x >= count) ? (x % count) : (x < 0) ? wrap(count + (x % count)) : x; + } + + function scroll(x) { + var i, half, delta, dir, tween, el, alignment, xTranslation; + + offset = (typeof x === 'number') ? x : offset; + center = Math.floor((offset + dim / 2) / dim); + delta = offset - center * dim; + dir = (delta < 0) ? 1 : -1; + tween = -dir * delta * 2 / dim; + half = count >> 1; + + if (!options.full_width) { + alignment = 'translateX(' + (view[0].clientWidth - item_width) / 2 + 'px) '; + alignment += 'translateY(' + (view[0].clientHeight - item_width) / 2 + 'px)'; + } else { + alignment = 'translateX(0)'; + } + + // Set indicator active + if (showIndicators) { + var diff = (center % count); + var activeIndicator = $indicators.find('.indicator-item.active'); + if (activeIndicator.index() !== diff) { + activeIndicator.removeClass('active'); + $indicators.find('.indicator-item').eq(diff).addClass('active'); + } + } + + // center + // Don't show wrapped items. + if (!options.no_wrap || (center >= 0 && center < count)) { + el = images[wrap(center)]; + el.style[xform] = alignment + + ' translateX(' + (-delta / 2) + 'px)' + + ' translateX(' + (dir * options.shift * tween * i) + 'px)' + + ' translateZ(' + (options.dist * tween) + 'px)'; + el.style.zIndex = 0; + if (options.full_width) { tweenedOpacity = 1; } + else { tweenedOpacity = 1 - 0.2 * tween; } + el.style.opacity = tweenedOpacity; + el.style.display = 'block'; + } + + for (i = 1; i <= half; ++i) { + // right side + if (options.full_width) { + zTranslation = options.dist; + tweenedOpacity = (i === half && delta < 0) ? 1 - tween : 1; + } else { + zTranslation = options.dist * (i * 2 + tween * dir); + tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir); + } + // Don't show wrapped items. + if (!options.no_wrap || center + i < count) { + el = images[wrap(center + i)]; + el.style[xform] = alignment + + ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' + + ' translateZ(' + zTranslation + 'px)'; + el.style.zIndex = -i; + el.style.opacity = tweenedOpacity; + el.style.display = 'block'; + } + + + // left side + if (options.full_width) { + zTranslation = options.dist; + tweenedOpacity = (i === half && delta > 0) ? 1 - tween : 1; + } else { + zTranslation = options.dist * (i * 2 - tween * dir); + tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir); + } + // Don't show wrapped items. + if (!options.no_wrap || center - i >= 0) { + el = images[wrap(center - i)]; + el.style[xform] = alignment + + ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' + + ' translateZ(' + zTranslation + 'px)'; + el.style.zIndex = -i; + el.style.opacity = tweenedOpacity; + el.style.display = 'block'; + } + } + + // center + // Don't show wrapped items. + if (!options.no_wrap || (center >= 0 && center < count)) { + el = images[wrap(center)]; + el.style[xform] = alignment + + ' translateX(' + (-delta / 2) + 'px)' + + ' translateX(' + (dir * options.shift * tween) + 'px)' + + ' translateZ(' + (options.dist * tween) + 'px)'; + el.style.zIndex = 0; + if (options.full_width) { tweenedOpacity = 1; } + else { tweenedOpacity = 1 - 0.2 * tween; } + el.style.opacity = tweenedOpacity; + el.style.display = 'block'; + } + } + + function track() { + var now, elapsed, delta, v; + + now = Date.now(); + elapsed = now - timestamp; + timestamp = now; + delta = offset - frame; + frame = offset; + + v = 1000 * delta / (1 + elapsed); + velocity = 0.8 * v + 0.2 * velocity; + } + + function autoScroll() { + var elapsed, delta; + + if (amplitude) { + elapsed = Date.now() - timestamp; + delta = amplitude * Math.exp(-elapsed / options.time_constant); + if (delta > 2 || delta < -2) { + scroll(target - delta); + requestAnimationFrame(autoScroll); + } else { + scroll(target); + } + } + } + + function click(e) { + // Disable clicks if carousel was dragged. + if (dragged) { + e.preventDefault(); + e.stopPropagation(); + return false; + + } else if (!options.full_width) { + var clickedIndex = $(e.target).closest('.carousel-item').index(); + var diff = (center % count) - clickedIndex; + + // Disable clicks if carousel was shifted by click + if (diff !== 0) { + e.preventDefault(); + e.stopPropagation(); + } + cycleTo(clickedIndex); + } + } + + function cycleTo(n) { + var diff = (center % count) - n; + + // Account for wraparound. + if (!options.no_wrap) { + if (diff < 0) { + if (Math.abs(diff + count) < Math.abs(diff)) { diff += count; } + + } else if (diff > 0) { + if (Math.abs(diff - count) < diff) { diff -= count; } + } + } + + // Call prev or next accordingly. + if (diff < 0) { + view.trigger('carouselNext', [Math.abs(diff)]); + + } else if (diff > 0) { + view.trigger('carouselPrev', [diff]); + } + } + + function tap(e) { + pressed = true; + dragged = false; + vertical_dragged = false; + reference = xpos(e); + referenceY = ypos(e); + + velocity = amplitude = 0; + frame = offset; + timestamp = Date.now(); + clearInterval(ticker); + ticker = setInterval(track, 100); + + } + + function drag(e) { + var x, delta, deltaY; + if (pressed) { + x = xpos(e); + y = ypos(e); + delta = reference - x; + deltaY = Math.abs(referenceY - y); + if (deltaY < 30 && !vertical_dragged) { + // If vertical scrolling don't allow dragging. + if (delta > 2 || delta < -2) { + dragged = true; + reference = x; + scroll(offset + delta); + } + + } else if (dragged) { + // If dragging don't allow vertical scroll. + e.preventDefault(); + e.stopPropagation(); + return false; + + } else { + // Vertical scrolling. + vertical_dragged = true; + } + } + + if (dragged) { + // If dragging don't allow vertical scroll. + e.preventDefault(); + e.stopPropagation(); + return false; + } + } + + function release(e) { + if (pressed) { + pressed = false; + } else { + return; + } + + clearInterval(ticker); + target = offset; + if (velocity > 10 || velocity < -10) { + amplitude = 0.9 * velocity; + target = offset + amplitude; + } + target = Math.round(target / dim) * dim; + + // No wrap of items. + if (options.no_wrap) { + if (target >= dim * (count - 1)) { + target = dim * (count - 1); + } else if (target < 0) { + target = 0; + } + } + amplitude = target - offset; + timestamp = Date.now(); + requestAnimationFrame(autoScroll); + + if (dragged) { + e.preventDefault(); + e.stopPropagation(); + } + return false; + } + + xform = 'transform'; + ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) { + var e = prefix + 'Transform'; + if (typeof document.body.style[e] !== 'undefined') { + xform = e; + return false; + } + return true; + }); + + + + window.onresize = scroll; + + setupEvents(); + scroll(offset); + + $(this).on('carouselNext', function(e, n) { + if (n === undefined) { + n = 1; + } + target = offset + dim * n; + if (offset !== target) { + amplitude = target - offset; + timestamp = Date.now(); + requestAnimationFrame(autoScroll); + } + }); + + $(this).on('carouselPrev', function(e, n) { + if (n === undefined) { + n = 1; + } + target = offset - dim * n; + if (offset !== target) { + amplitude = target - offset; + timestamp = Date.now(); + requestAnimationFrame(autoScroll); + } + }); + + $(this).on('carouselSet', function(e, n) { + if (n === undefined) { + n = 0; + } + cycleTo(n); + }); + + }); + + + + }, + next : function(n) { + $(this).trigger('carouselNext', [n]); + }, + prev : function(n) { + $(this).trigger('carouselPrev', [n]); + }, + set : function(n) { + $(this).trigger('carouselSet', [n]); + } + }; + + + $.fn.carousel = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.carousel' ); + } + }; // Plugin end +}( jQuery )); \ No newline at end of file diff --git a/public_html/js/materialize.min.js b/public_html/js/materialize.min.js new file mode 100644 index 0000000..1a2cf1a --- /dev/null +++ b/public_html/js/materialize.min.js @@ -0,0 +1,10 @@ +/*! + * Materialize v0.97.7 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +if("undefined"==typeof jQuery){var jQuery;jQuery="function"==typeof require?$=require("jquery"):$}jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),hb?-.5*(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*(2*Math.PI)/g))+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*(2*Math.PI)/g)*.5+d+c},easeInBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),(b/=e/2)<1?d/2*(b*b*(((f*=1.525)+1)*b-f))+c:d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*(7.5625*b*b)+c:2/2.75>b?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:2.5/2.75>b?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(a,b,c,d,e){return e/2>b?.5*jQuery.easing.easeInBounce(a,2*b,0,d,e)+c:.5*jQuery.easing.easeOutBounce(a,2*b-e,0,d,e)+.5*d+c}}),jQuery.extend(jQuery.easing,{easeInOutMaterial:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:d/4*((b-=2)*b*b+2)+c}}),jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(a){function b(a){var b=a.length,d=c.type(a);return"function"===d||c.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return null!=a&&a==a.window},c.type=function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return void 0===b||f.call(a,b)},c.each=function(a,c,d){var e,f=0,g=a.length,h=b(a);if(d){if(h)for(;g>f&&(e=c.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=c.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=c.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=c.call(a[f],f,a[f]),e===!1)break;return a},c.data=function(a,b,e){if(void 0===e){var f=a[c.expando],g=f&&d[f];if(void 0===b)return g;if(g&&b in g)return g[b]}else if(void 0!==b){var f=a[c.expando]||(a[c.expando]=++c.uuid);return d[f]=d[f]||{},d[f][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&c.each(b,function(a,b){delete f[b]})},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{},h[e]=c.extend(k,g,d)):void 0!==d&&(h[e]=d));return h},c.queue=function(a,d,e){function f(a,c){var d=c||[];return null!=a&&(b(Object(a))?!function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}if(a){d=(d||"fx")+"queue";var g=c.data(a,d);return e?(!g||c.isArray(e)?g=c.data(a,d,f(e)):g.push(e),g):g||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function a(){for(var a=this.offsetParent||document;a&&"html"===!a.nodeType.toLowerCase&&"static"===a.style.position;)a=a.offsetParent;return a||document}var b=this[0],a=a.apply(b),d=this.offset(),e=/^(?:body|html)$/i.test(a.nodeName)?{top:0,left:0}:c(a).offset();return d.top-=parseFloat(b.style.marginTop)||0,d.left-=parseFloat(b.style.marginLeft)||0,a.style&&(e.top+=parseFloat(a.style.borderTopWidth)||0,e.left+=parseFloat(a.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;ie;++e){var f=j(c,a,d);if(0===f)return c;var g=i(c,a,d)-b;c-=g/f}return c}function l(){for(var b=0;t>b;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g;while(Math.abs(f)>r&&++h=q?k(b,h):0==i?h:m(b,c,c+u)}function o(){y=!0,(a!=c||d!=e)&&l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;4>w;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function j(a,b){var c=a;return p.isString(a)?t.Easings[a]||(c=!1):c=p.isArray(a)&&1===a.length?h.apply(null,a):p.isArray(a)&&2===a.length?u.apply(null,a.concat([b])):p.isArray(a)&&4===a.length?i.apply(null,a):!1,c===!1&&(c=t.Easings[t.defaults.easing]?t.defaults.easing:s),c}function k(a){if(a){var b=(new Date).getTime(),c=t.State.calls.length;c>1e4&&(t.State.calls=e(t.State.calls));for(var f=0;c>f;f++)if(t.State.calls[f]){var h=t.State.calls[f],i=h[0],j=h[2],n=h[3],o=!!n,q=null;n||(n=t.State.calls[f][3]=b-16);for(var r=Math.min((b-n)/j.duration,1),s=0,u=i.length;u>s;s++){var w=i[s],y=w.element;if(g(y)){var z=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var A=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(A,function(a,b){v.setPropertyValue(y,"display",b)})}v.setPropertyValue(y,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&v.setPropertyValue(y,"visibility",j.visibility);for(var B in w)if("element"!==B){var C,D=w[B],E=p.isString(D.easing)?t.Easings[D.easing]:D.easing;if(1===r)C=D.endValue;else{var F=D.endValue-D.startValue;if(C=D.startValue+F*E(r,j,F),!o&&C===D.currentValue)continue}if(D.currentValue=C,"tween"===B)q=C;else{if(v.Hooks.registered[B]){var G=v.Hooks.getRoot(B),H=g(y).rootPropertyValueCache[G];H&&(D.rootPropertyValue=H)}var I=v.setPropertyValue(y,B,D.currentValue+(0===parseFloat(C)?"":D.unitType),D.rootPropertyValue,D.scrollData);v.Hooks.registered[B]&&(g(y).rootPropertyValueCache[G]=v.Normalizations.registered[G]?v.Normalizations.registered[G]("extract",null,I[1]):I[1]),"transform"===I[0]&&(z=!0)}}j.mobileHA&&g(y).transformCache.translate3d===d&&(g(y).transformCache.translate3d="(0px, 0px, 0px)",z=!0),z&&v.flushTransformCache(y)}}j.display!==d&&"none"!==j.display&&(t.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(t.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],r,Math.max(0,n+j.duration-b),n,q),1===r&&l(f)}}t.State.isTicking&&x(k)}function l(a,b){if(!t.State.calls[a])return!1;for(var c=t.State.calls[a][0],e=t.State.calls[a][1],f=t.State.calls[a][2],h=t.State.calls[a][4],i=!1,j=0,k=c.length;k>j;j++){var l=c[j].element;if(b||f.loop||("none"===f.display&&v.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&v.setPropertyValue(l,"visibility",f.visibility)),f.loop!==!0&&(m.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(m.queue(l)[1]))&&g(l)){g(l).isAnimating=!1,g(l).rootPropertyValueCache={};var n=!1;m.each(v.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=g(l).transformCache[b];g(l).transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete g(l).transformCache[b])}),f.mobileHA&&(n=!0,delete g(l).transformCache.translate3d),n&&v.flushTransformCache(l),v.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(o){setTimeout(function(){throw o},1)}h&&f.loop!==!0&&h(e),g(l)&&f.loop===!0&&!b&&(m.each(g(l).tweensContainer,function(a,b){/^rotate/.test(a)&&360===parseFloat(b.endValue)&&(b.endValue=0,b.startValue=360),/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),t(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&m.dequeue(l,f.queue)}t.State.calls[a]=!1;for(var p=0,q=t.State.calls.length;q>p;p++)if(t.State.calls[p]!==!1){i=!0;break}i===!1&&(t.State.isTicking=!1,delete t.State.calls,t.State.calls=[])}var m,n=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="",b.getElementsByTagName("span").length)return b=null,a}return d}(),o=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),p={isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isNodeList:function(a){return"object"==typeof a&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a))&&a.length!==d&&(0===a.length||"object"==typeof a[0]&&a[0].nodeType>0)},isWrapped:function(a){return a&&(a.jquery||b.Zepto&&b.Zepto.zepto.isZ(a))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)return!1;return!0}},q=!1;if(a.fn&&a.fn.jquery?(m=a,q=!0):m=b.Velocity.Utilities,8>=n&&!q)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=n)return void(jQuery.fn.velocity=jQuery.fn.animate);var r=400,s="swing",t={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:m,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:r,easing:s,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(a){m.data(a,"velocity",{isSVG:p.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};b.pageYOffset!==d?(t.State.scrollAnchor=b,t.State.scrollPropertyLeft="pageXOffset",t.State.scrollPropertyTop="pageYOffset"):(t.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,t.State.scrollPropertyLeft="scrollLeft",t.State.scrollPropertyTop="scrollTop");var u=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0,l=1e-4,m=.016;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*m):g=m;h=c(h||i,g),j.push(1+h.x),k+=16,Math.abs(h.x)>l&&Math.abs(h.v)>l;);return f?function(a){return j[a*(j.length-1)|0]}:k}}();t.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},m.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){t.Easings[b[0]]=i.apply(null,b[1])});var v=t.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a=n)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){9>=n||t.State.isGingerbread||(v.Lists.transformsBase=v.Lists.transformsBase.concat(v.Lists.transforms3D));for(var a=0;ae&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[b]="("+e+")"),g(c).transformCache[b]}}}();for(var a=0;a=n||3!==f.split(" ").length||(f+=" 1"),f;case"inject":return 8>=n?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(8>=n?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(n||t.State.isAndroid&&!t.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(t.State.prefixMatches[a])return[t.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;d>c;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),p.isString(t.State.prefixElement.style[e]))return t.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(c,function(a,b,c,d){return b+b+c+c+d+d}),b=d.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return 0==a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"block"},addClass:function(a,b){a.classList?a.classList.add(b):a.className+=(a.className.length?" ":"")+b},removeClass:function(a,b){a.classList?a.classList.remove(b):a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(a,c,e,f){function h(a,c){function e(){j&&v.setPropertyValue(a,"display","none")}var i=0;if(8>=n)i=m.css(a,c);else{var j=!1;if(/^(width|height)$/.test(c)&&0===v.getPropertyValue(a,"display")&&(j=!0,v.setPropertyValue(a,"display",v.Values.getDisplayType(a))),!f){if("height"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(v.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(v.getPropertyValue(a,"paddingBottom"))||0);return e(),k}if("width"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(v.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(v.getPropertyValue(a,"paddingRight"))||0);return e(),l}}var o;o=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),"borderColor"===c&&(c="borderTopColor"),i=9===n&&"filter"===c?o.getPropertyValue(c):o[c],(""===i||null===i)&&(i=a.style[c]),e()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(c)){var p=h(a,"position");("fixed"===p||"absolute"===p&&/top|left/i.test(c))&&(i=m(a).position()[c]+"px")}return i}var i;if(v.Hooks.registered[c]){var j=c,k=v.Hooks.getRoot(j);e===d&&(e=v.getPropertyValue(a,v.Names.prefixCheck(k)[0])),v.Normalizations.registered[k]&&(e=v.Normalizations.registered[k]("extract",a,e)),i=v.Hooks.extractValue(j,e)}else if(v.Normalizations.registered[c]){var l,o;l=v.Normalizations.registered[c]("name",a),"transform"!==l&&(o=h(a,v.Names.prefixCheck(l)[0]),v.Values.isCSSNullValue(o)&&v.Hooks.templates[c]&&(o=v.Hooks.templates[c][1])),i=v.Normalizations.registered[c]("extract",a,o)}if(!/^[\d-]/.test(i))if(g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(p){i=0}else i=a.getAttribute(c);else i=h(a,v.Names.prefixCheck(c)[0]);return v.Values.isCSSNullValue(i)&&(i=0),t.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(v.Normalizations.registered[c]&&"transform"===v.Normalizations.registered[c]("name",a))v.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(v.Hooks.registered[c]){var i=c,j=v.Hooks.getRoot(c);e=e||v.getPropertyValue(a,j),d=v.Hooks.injectValue(i,d,e),c=j}if(v.Normalizations.registered[c]&&(d=v.Normalizations.registered[c]("inject",a,d),c=v.Normalizations.registered[c]("name",a)),h=v.Names.prefixCheck(c)[0],8>=n)try{a.style[h]=d}catch(k){t.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d;t.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){function b(b){return parseFloat(v.getPropertyValue(a,b))}var c="";if((n||t.State.isAndroid&&!t.State.isChrome)&&g(a).isSVG){var d={translate:[b("translateX"),b("translateY")],skewX:[b("skewX")],skewY:[b("skewY")],scale:1!==b("scale")?[b("scale"),b("scale")]:[b("scaleX"),b("scaleY")],rotate:[b("rotateZ"),0,0]};m.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),d[a]&&(c+=a+"("+d[a].join(" ")+") ",delete d[a])})}else{var e,f;m.each(g(a).transformCache,function(b){return e=g(a).transformCache[b],"transformPerspective"===b?(f=e,!0):(9===n&&"rotateZ"===b&&(b="rotate"),void(c+=b+e+" "))}),f&&(c="perspective"+f+" "+c)}v.setPropertyValue(a,"transform",c)}};v.Hooks.register(),v.Normalizations.register(),t.hook=function(a,b,c){var e=d;return a=f(a),m.each(a,function(a,f){if(g(f)===d&&t.init(f),c===d)e===d&&(e=t.CSS.getPropertyValue(f,b));else{var h=t.CSS.setPropertyValue(f,b,c);"transform"===h[0]&&t.CSS.flushTransformCache(f),e=h}}),e};var w=function(){function a(){return h?B.promise||null:i}function e(){function a(a){function l(a,b){var c=d,e=d,g=d;return p.isArray(a)?(c=a[0],!p.isArray(a[1])&&/^[\d-]/.test(a[1])||p.isFunction(a[1])||v.RegEx.isHex.test(a[1])?g=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],h.duration),a[2]!==d&&(g=a[2]))):c=a,b||(e=e||h.easing),p.isFunction(c)&&(c=c.call(f,y,x)),p.isFunction(g)&&(g=g.call(f,y,x)),[c||0,e,g]}function n(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=v.Values.getUnitType(a)),[d,c]}function r(){var a={myParent:f.parentNode||c.body,position:v.getPropertyValue(f,"position"),fontSize:v.getPropertyValue(f,"fontSize")},d=a.position===I.lastPosition&&a.myParent===I.lastParent,e=a.fontSize===I.lastFontSize;I.lastParent=a.myParent,I.lastPosition=a.position,I.lastFontSize=a.fontSize;var h=100,i={};if(e&&d)i.emToPx=I.lastEmToPx,i.percentToPxWidth=I.lastPercentToPxWidth,i.percentToPxHeight=I.lastPercentToPxHeight;else{var j=g(f).isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");t.init(j),a.myParent.appendChild(j),m.each(["overflow","overflowX","overflowY"],function(a,b){t.CSS.setPropertyValue(j,b,"hidden")}),t.CSS.setPropertyValue(j,"position",a.position),t.CSS.setPropertyValue(j,"fontSize",a.fontSize),t.CSS.setPropertyValue(j,"boxSizing","content-box"),m.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){t.CSS.setPropertyValue(j,b,h+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",h+"em"),i.percentToPxWidth=I.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/h,i.percentToPxHeight=I.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/h,i.emToPx=I.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/h,a.myParent.removeChild(j)}return null===I.remToPx&&(I.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===I.vwToPx&&(I.vwToPx=parseFloat(b.innerWidth)/100,I.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=I.remToPx,i.vwToPx=I.vwToPx,i.vhToPx=I.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),f),i}if(h.begin&&0===y)try{h.begin.call(o,o)}catch(u){setTimeout(function(){throw u},1)}if("scroll"===C){var w,z,A,D=/^x$/i.test(h.axis)?"Left":"Top",E=parseFloat(h.offset)||0;h.container?p.isWrapped(h.container)||p.isNode(h.container)?(h.container=h.container[0]||h.container,w=h.container["scroll"+D],A=w+m(f).position()[D.toLowerCase()]+E):h.container=null:(w=t.State.scrollAnchor[t.State["scrollProperty"+D]],z=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===D?"Top":"Left")]],A=m(f).offset()[D.toLowerCase()]+E),i={scroll:{rootPropertyValue:!1,startValue:w,currentValue:w,endValue:A,unitType:"",easing:h.easing,scrollData:{container:h.container,direction:D,alternateValue:z}},element:f},t.debug&&console.log("tweensContainer (scroll): ",i.scroll,f)}else if("reverse"===C){if(!g(f).tweensContainer)return void m.dequeue(f,h.queue);"none"===g(f).opts.display&&(g(f).opts.display="auto"),"hidden"===g(f).opts.visibility&&(g(f).opts.visibility="visible"),g(f).opts.loop=!1,g(f).opts.begin=null,g(f).opts.complete=null,s.easing||delete h.easing,s.duration||delete h.duration,h=m.extend({},g(f).opts,h);var F=m.extend(!0,{},g(f).tweensContainer);for(var G in F)if("element"!==G){var H=F[G].startValue;F[G].startValue=F[G].currentValue=F[G].endValue,F[G].endValue=H,p.isEmptyObject(s)||(F[G].easing=h.easing),t.debug&&console.log("reverse tweensContainer ("+G+"): "+JSON.stringify(F[G]),f)}i=F}else if("start"===C){var F;g(f).tweensContainer&&g(f).isAnimating===!0&&(F=g(f).tweensContainer),m.each(q,function(a,b){if(RegExp("^"+v.Lists.colors.join("$|^")+"$").test(a)){var c=l(b,!0),e=c[0],f=c[1],g=c[2];if(v.RegEx.isHex.test(e)){for(var h=["Red","Green","Blue"],i=v.Values.hexToRgb(e),j=g?v.Values.hexToRgb(g):d,k=0;kL;L++){var M={delay:E.delay,progress:E.progress};L===K-1&&(M.display=E.display,M.visibility=E.visibility,M.complete=E.complete),w(o,"reverse",M)}return a()}};t=m.extend(w,t),t.animate=w;var x=b.requestAnimationFrame||o;return t.State.isMobile||c.hidden===d||c.addEventListener("visibilitychange",function(){c.hidden?(x=function(a){return setTimeout(function(){a(!0)},16)},k()):x=b.requestAnimationFrame||o}),a.Velocity=t,a!==b&&(a.fn.velocity=w,a.fn.velocity.defaults=t.defaults),m.each(["Down","Up"],function(a,b){t.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j=i.begin,k=i.complete,l={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},n={};i.display===d&&(i.display="Down"===b?"inline"===t.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){j&&j.call(g,g);for(var c in l){n[c]=a.style[c];var d=t.CSS.getPropertyValue(a,c);l[c]="Down"===b?[d,0]:[0,d]}n.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in n)a.style[b]=n[b];k&&k.call(g,g),h&&h.resolver(g)},t(a,l,i)}}),m.each(["In","Out"],function(a,b){t.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j={opacity:"In"===b?1:0},k=i.complete;i.complete=e!==f-1?i.begin=null:function(){k&&k.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),t(this,j,i)}}),t}(window.jQuery||window.Zepto||window,window,document)})),!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===ya||f.eventType===Aa)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ba&&(i>xa||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Ca:ma(a)>=ma(b)?a>0?Da:Ea:b>0?Fa:Ga}function I(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],La)-J(a[1],a[0],La)}function L(a,b){return I(b[0],b[1],La)/I(a[0],a[1],La)}function M(){this.evEl=Na,this.evWin=Oa,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Ra,this.evWin=Sa,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ua,this.evWin=Va,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Aa|Ba)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xa,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(ya|za)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===ya)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Aa|Ba)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Ta={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Ua="touchstart",Va="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Ta[a.type];if(b===ya&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Aa|Ba)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}});var Wa={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Xa="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wa[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==ta,e=c.pointerType==va;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Aa|Ba)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Ya=v(ja.style,"touchAction"),Za=Ya!==d,$a="compute",_a="auto",ab="manipulation",bb="none",cb="pan-x",db="pan-y";T.prototype={set:function(a){a==$a&&(a=this.compute()),Za&&(this.manager.element.style[Ya]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Za){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bb),f=q(d,db),g=q(d,cb);return e||f&&c&Ha||g&&c&Ia?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var eb=1,fb=2,gb=4,hb=8,ib=hb,jb=16,kb=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hb>d&&b(!0),b(),d>=hb&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kb)},canEmit:function(){for(var a=0;af?Da:Ea,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ca:0>g?Fa:Ga,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fb||!(this.state&fb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(aa,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_a]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Aa|Ba)&&!f)this.reset();else if(a.eventType&ya)this.reset(),this._timer=e(function(){this.state=ib,this.tryEmit()},b.time,this);else if(a.eventType&Aa)return ib;return kb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ib&&(a&&a.eventType&Aa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),j(ba,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fb)}}),j(ca,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Ha|Ia,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ha|Ia)?b=a.velocity:c&Ha?b=a.velocityX:c&Ia&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&ma(b)>this.options.velocity&&a.eventType&Aa},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(da,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ab]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance li > .collapsible-header"),b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}),h.not(b).removeClass("active").parent().removeClass("active"),h.not(b).parent().children(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function d(b){b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function e(a){var b=f(a);return b.length>0}function f(a){return a.closest("li > .collapsible-header")}var g=a(this),h=a(this).find("> li > .collapsible-header"),i=g.data("collapsible");g.off("click.collapse","> li > .collapsible-header"),h.off("click.collapse"),g.on("click.collapse","> li > .collapsible-header",function(g){var h=a(this),j=a(g.target);e(j)&&(j=f(j)),j.toggleClass("active"),b.accordion||"accordion"===i||void 0===i?c(j):(d(j),h.hasClass("active")&&d(h))});var h=g.find("> li > .collapsible-header");b.accordion||"accordion"===i||void 0===i?c(h.filter(".active").first()):h.filter(".active").each(function(){d(a(this))})})},a(document).ready(function(){a(".collapsible").collapsible()})}(jQuery),function(a){a.fn.scrollTo=function(b){return a(this).scrollTop(a(this).scrollTop()-a(this).offset().top+a(b).offset().top),this},a.fn.dropdown=function(b){var c={inDuration:300,outDuration:225,constrain_width:!0,hover:!1,gutter:0,belowOrigin:!1,alignment:"left",stopPropagation:!1};return"open"===b?(this.each(function(){a(this).trigger("open")}),!1):"close"===b?(this.each(function(){a(this).trigger("close")}),!1):void this.each(function(){function b(){void 0!==f.data("induration")&&(g.inDuration=f.data("induration")),void 0!==f.data("outduration")&&(g.outDuration=f.data("outduration")),void 0!==f.data("constrainwidth")&&(g.constrain_width=f.data("constrainwidth")),void 0!==f.data("hover")&&(g.hover=f.data("hover")),void 0!==f.data("gutter")&&(g.gutter=f.data("gutter")),void 0!==f.data("beloworigin")&&(g.belowOrigin=f.data("beloworigin")),void 0!==f.data("alignment")&&(g.alignment=f.data("alignment")),void 0!==f.data("stoppropagation")&&(g.stopPropagation=f.data("stoppropagation"))}function d(c){"focus"===c&&(h=!0),b(),i.addClass("active"),f.addClass("active"),g.constrain_width===!0?i.css("width",f.outerWidth()):i.css("white-space","nowrap");var d=window.innerHeight,e=f.innerHeight(),j=f.offset().left,k=f.offset().top-a(window).scrollTop(),l=g.alignment,m=0,n=0,o=0;g.belowOrigin===!0&&(o=e);var p=0,q=0,r=f.parent();if(r.is("body")||(r[0].scrollHeight>r[0].clientHeight&&(p=r[0].scrollTop),r[0].scrollWidth>r[0].clientWidth&&(q=r[0].scrollLeft)),j+i.innerWidth()>a(window).width()?l="right":j-i.innerWidth()+f.innerWidth()<0&&(l="left"),k+i.innerHeight()>d)if(k+e-i.innerHeight()<0){var s=d-k-o;i.css("max-height",s)}else o||(o+=e),o-=i.innerHeight();if("left"===l)m=g.gutter,n=f.position().left+m;else if("right"===l){var t=f.position().left+f.outerWidth()-i.outerWidth();m=-g.gutter,n=t+m}i.css({position:"absolute",top:f.position().top+o+p,left:n+q}),i.stop(!0,!0).css("opacity",0).slideDown({queue:!1,duration:g.inDuration,easing:"easeOutCubic",complete:function(){a(this).css("height","")}}).animate({opacity:1},{queue:!1,duration:g.inDuration,easing:"easeOutSine"})}function e(){h=!1,i.fadeOut(g.outDuration),i.removeClass("active"),f.removeClass("active"),setTimeout(function(){i.css("max-height","")},g.outDuration)}var f=a(this),g=a.extend({},c,g),h=!1,i=a("#"+f.attr("data-activates"));if(b(),f.after(i),g.hover){var j=!1;f.unbind("click."+f.attr("id")),f.on("mouseenter",function(a){j===!1&&(d(),j=!0)}),f.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-content").is(i)||(i.stop(!0,!0),e(),j=!1)}),i.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-button").is(f)||(i.stop(!0,!0),e(),j=!1)})}else f.unbind("click."+f.attr("id")),f.bind("click."+f.attr("id"),function(b){h||(f[0]!=b.currentTarget||f.hasClass("active")||0!==a(b.target).closest(".dropdown-content").length?f.hasClass("active")&&(e(),a(document).unbind("click."+i.attr("id")+" touchstart."+i.attr("id"))):(b.preventDefault(),g.stopPropagation&&b.stopPropagation(),d("click")),i.hasClass("active")&&a(document).bind("click."+i.attr("id")+" touchstart."+i.attr("id"),function(b){i.is(b.target)||f.is(b.target)||f.find(b.target).length||(e(),a(document).unbind("click."+i.attr("id")+" touchstart."+i.attr("id")))}))});f.on("open",function(a,b){d(b)}),f.on("close",e)})},a(document).ready(function(){a(".dropdown-button").dropdown()})}(jQuery),function(a){var b=0,c=0,d=function(){return c++,"materialize-lean-overlay-"+c};a.fn.extend({openModal:function(c){var e=a("body"),f=e.innerWidth();e.css("overflow","hidden"),e.width(f);var g={opacity:.5,in_duration:350,out_duration:250,ready:void 0,complete:void 0,dismissible:!0,starting_top:"4%",ending_top:"10%"},h=a(this);if(!h.hasClass("open")){var i=d(),j=a('
        ');lStack=++b,j.attr("id",i).css("z-index",1e3+2*lStack),h.data("overlay-id",i).css("z-index",1e3+2*lStack+1),h.addClass("open"),a("body").append(j),c=a.extend(g,c),c.dismissible&&(j.click(function(){h.closeModal(c)}),a(document).on("keyup.leanModal"+i,function(a){27===a.keyCode&&h.closeModal(c)})),h.find(".modal-close").on("click.close",function(a){h.closeModal(c)}),j.css({display:"block",opacity:0}),h.css({display:"block",opacity:0}),j.velocity({opacity:c.opacity},{duration:c.in_duration,queue:!1,ease:"easeOutCubic"}),h.data("associated-overlay",j[0]),h.hasClass("bottom-sheet")?h.velocity({bottom:"0",opacity:1},{duration:c.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready()}}):(a.Velocity.hook(h,"scaleX",.7),h.css({top:c.starting_top}),h.velocity({top:c.ending_top,opacity:1,scaleX:"1"},{duration:c.in_duration,queue:!1,ease:"easeOutCubic", +complete:function(){"function"==typeof c.ready&&c.ready()}}))}}}),a.fn.extend({closeModal:function(c){var d={out_duration:250,complete:void 0},e=a(this),f=e.data("overlay-id"),g=a("#"+f);e.removeClass("open"),c=a.extend(d,c),a("body").css({overflow:"",width:""}),e.find(".modal-close").off("click.close"),a(document).off("keyup.leanModal"+f),g.velocity({opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutQuart"}),e.hasClass("bottom-sheet")?e.velocity({bottom:"-100%",opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutCubic",complete:function(){g.css({display:"none"}),"function"==typeof c.complete&&c.complete(),g.remove(),b--}}):e.velocity({top:c.starting_top,opacity:0,scaleX:.7},{duration:c.out_duration,complete:function(){a(this).css("display","none"),"function"==typeof c.complete&&c.complete(),g.remove(),b--}})}}),a.fn.extend({leanModal:function(b){return this.each(function(){var c={starting_top:"4%"},d=a.extend(c,b);a(this).click(function(b){d.starting_top=(a(this).offset().top-a(window).scrollTop())/1.15;var c=a(this).attr("href")||"#"+a(this).data("target");a(c).openModal(d),b.preventDefault()})})}})}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){f=!1;var b=i.parent(".material-placeholder"),d=(window.innerWidth,window.innerHeight,i.data("width")),g=i.data("height");i.velocity("stop",!0),a("#materialbox-overlay").velocity("stop",!0),a(".materialbox-caption").velocity("stop",!0),a("#materialbox-overlay").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){e=!1,a(this).remove()}}),i.velocity({width:d,height:g,left:0,top:0},{duration:h,queue:!1,easing:"easeOutQuad"}),a(".materialbox-caption").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){b.css({height:"",width:"",position:"",top:"",left:""}),i.css({height:"",top:"",left:"",width:"","max-width":"",position:"","z-index":""}),i.removeClass("active"),f=!0,a(this).remove(),c&&c.css("overflow","")}})}if(!a(this).hasClass("initialized")){a(this).addClass("initialized");var c,d,e=!1,f=!0,g=275,h=200,i=a(this),j=a("
        ").addClass("material-placeholder");i.wrap(j),i.on("click",function(){var h=i.parent(".material-placeholder"),j=window.innerWidth,k=window.innerHeight,l=i.width(),m=i.height();if(f===!1)return b(),!1;if(e&&f===!0)return b(),!1;f=!1,i.addClass("active"),e=!0,h.css({width:h[0].getBoundingClientRect().width,height:h[0].getBoundingClientRect().height,position:"relative",top:0,left:0}),c=void 0,d=h[0].parentNode;for(;null!==d&&!a(d).is(document);){var n=a(d);"visible"!==n.css("overflow")&&(n.css("overflow","visible"),c=void 0===c?n:c.add(n)),d=d.parentNode}i.css({position:"absolute","z-index":1e3}).data("width",l).data("height",m);var o=a('
        ').css({opacity:0}).click(function(){f===!0&&b()});if(i.before(o),o.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"}),""!==i.data("caption")){var p=a('
        ');p.text(i.data("caption")),a("body").append(p),p.css({display:"inline"}),p.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"})}var q=0,r=l/j,s=m/k,t=0,u=0;r>s?(q=m/l,t=.9*j,u=.9*j*q):(q=l/m,t=.9*k*q,u=.9*k),i.hasClass("responsive-img")?i.velocity({"max-width":t,width:l},{duration:0,queue:!1,complete:function(){i.css({left:0,top:0}).velocity({height:u,width:t,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-t/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-u/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}}):i.css("left",0).css("top",0).velocity({height:u,width:t,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-t/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-u/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}),a(window).scroll(function(){e&&b()}),a(document).keyup(function(a){27===a.keyCode&&f===!0&&e&&b()})}})},a(document).ready(function(){a(".materialboxed").materialbox()})}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(c){function d(c){var d;d=601>b?e.height()>0?e.height():e.children("img").height():e.height()>0?e.height():500;var f=e.children("img").first(),g=f.height(),h=g-d,i=e.offset().top+d,j=e.offset().top,k=a(window).scrollTop(),l=window.innerHeight,m=k+l,n=(m-j)/(d+l),o=Math.round(h*n);c&&f.css("display","block"),i>k&&k+l>j&&f.css("transform","translate3D(-50%,"+o+"px, 0)")}var e=a(this);e.addClass("parallax"),e.children("img").one("load",function(){d(!0)}).each(function(){this.complete&&a(this).load()}),a(window).scroll(function(){b=a(window).width(),d(!1)}),a(window).resize(function(){b=a(window).width(),d(!1)})})}}(jQuery),function(a){var b={init:function(b){var c={onShow:null};return b=a.extend(c,b),this.each(function(){var c=a(this);a(window).width();c.width("100%");var d,e,f=c.find("li.tab a"),g=c.width(),h=Math.max(g,c[0].scrollWidth)/f.length,i=0;d=a(f.filter('[href="'+location.hash+'"]')),0===d.length&&(d=a(this).find("li.tab a.active").first()),0===d.length&&(d=a(this).find("li.tab a").first()),d.addClass("active"),i=f.index(d),0>i&&(i=0),void 0!==d[0]&&(e=a(d[0].hash)),c.append('
        ');var j=c.find(".indicator");c.is(":visible")&&(j.css({right:g-(i+1)*h}),j.css({left:i*h})),a(window).resize(function(){g=c.width(),h=Math.max(g,c[0].scrollWidth)/f.length,0>i&&(i=0),0!==h&&0!==g&&(j.css({right:g-(i+1)*h}),j.css({left:i*h}))}),f.not(d).each(function(){a(this.hash).hide()}),c.on("click","a",function(k){if(a(this).parent().hasClass("disabled"))return void k.preventDefault();if(!a(this).attr("target")){g=c.width(),h=Math.max(g,c[0].scrollWidth)/f.length,d.removeClass("active"),void 0!==e&&e.hide(),d=a(this),e=a(this.hash),f=c.find("li.tab a"),d.addClass("active");var l=i;i=f.index(a(this)),0>i&&(i=0),void 0!==e&&(e.show(),"function"==typeof b.onShow&&b.onShow.call(this,e)),i-l>=0?(j.velocity({right:g-(i+1)*h},{duration:300,queue:!1,easing:"easeOutQuad"}),j.velocity({left:i*h},{duration:300,queue:!1,easing:"easeOutQuad",delay:90})):(j.velocity({left:i*h},{duration:300,queue:!1,easing:"easeOutQuad"}),j.velocity({right:g-(i+1)*h},{duration:300,queue:!1,easing:"easeOutQuad",delay:90})),k.preventDefault()}})})},select_tab:function(a){this.find('a[href="#'+a+'"]').trigger("click")}};a.fn.tabs=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)},a(document).ready(function(){a("ul.tabs").tabs()})}(jQuery),function(a){a.fn.tooltip=function(c){var d=5,e={delay:350,tooltip:"",position:"bottom",html:!1};return"remove"===c?(this.each(function(){a("#"+a(this).attr("data-tooltip-id")).remove(),a(this).off("mouseenter.tooltip mouseleave.tooltip")}),!1):(c=a.extend(e,c),this.each(function(){var e=Materialize.guid(),f=a(this);f.attr("data-tooltip-id",e);var g,h,i,j,k,l,m=function(){g=f.attr("data-html")?"true"===f.attr("data-html"):c.html,h=f.attr("data-delay"),h=void 0===h||""===h?c.delay:h,i=f.attr("data-position"),i=void 0===i||""===i?c.position:i,j=f.attr("data-tooltip"),j=void 0===j||""===j?c.tooltip:j};m();var n=function(){var b=a('
        ');return j=g?a("").html(j):a("").text(j),b.append(j).appendTo(a("body")).attr("id",e),l=a('
        '),l.appendTo(b),b};k=n(),f.off("mouseenter.tooltip mouseleave.tooltip");var o,p=!1;f.on({"mouseenter.tooltip":function(a){var c=function(){m(),p=!0,k.velocity("stop"),l.velocity("stop"),k.css({display:"block",left:"0px",top:"0px"});var a,c,e,g=f.outerWidth(),h=f.outerHeight(),j=k.outerHeight(),n=k.outerWidth(),o="0px",q="0px",r=8,s=8;"top"===i?(a=f.offset().top-j-d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="-10px",l.css({bottom:0,left:0,borderRadius:"14px 14px 0 0",transformOrigin:"50% 100%",marginTop:j,marginLeft:n/2-l.width()/2})):"left"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left-n-d,e=b(c,a,n,j),q="-10px",l.css({top:"-7px",right:0,width:"14px",height:"14px",borderRadius:"14px 0 0 14px",transformOrigin:"95% 50%",marginTop:j/2,marginLeft:n})):"right"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left+g+d,e=b(c,a,n,j),q="+10px",l.css({top:"-7px",left:0,width:"14px",height:"14px",borderRadius:"0 14px 14px 0",transformOrigin:"5% 50%",marginTop:j/2,marginLeft:"0px"})):(a=f.offset().top+f.outerHeight()+d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="+10px",l.css({top:0,left:0,marginLeft:n/2-l.width()/2})),k.css({top:e.y,left:e.x}),r=Math.SQRT2*n/parseInt(l.css("width")),s=Math.SQRT2*j/parseInt(l.css("height")),k.velocity({marginTop:o,marginLeft:q},{duration:350,queue:!1}).velocity({opacity:1},{duration:300,delay:50,queue:!1}),l.css({display:"block"}).velocity({opacity:1},{duration:55,delay:0,queue:!1}).velocity({scaleX:r,scaleY:s},{duration:300,delay:0,queue:!1,easing:"easeInOutQuad"})};o=setTimeout(c,h)},"mouseleave.tooltip":function(){p=!1,clearTimeout(o),setTimeout(function(){p!==!0&&(k.velocity({opacity:0,marginTop:0,marginLeft:0},{duration:225,queue:!1}),l.velocity({opacity:0,scaleX:1,scaleY:1},{duration:225,queue:!1,complete:function(){l.css("display","none"),k.css("display","none"),p=!1}}))},225)}})}))};var b=function(b,c,d,e){var f=b,g=c;return 0>f?f=4:f+d>window.innerWidth&&(f-=f+d-window.innerWidth),0>g?g=4:g+e>window.innerHeight+a(window).scrollTop&&(g-=g+e-window.innerHeight),{x:f,y:g}};a(document).ready(function(){a(".tooltipped").tooltip()})}(jQuery),function(a){"use strict";function b(a){return null!==a&&a===a.window}function c(a){return b(a)?a:9===a.nodeType&&a.defaultView}function d(a){var b,d,e={top:0,left:0},f=a&&a.ownerDocument;return b=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=c(f),{top:e.top+d.pageYOffset-b.clientTop,left:e.left+d.pageXOffset-b.clientLeft}}function e(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function f(a){if(k.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||-1===c.className.indexOf("waves-effect"))){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function g(b){var c=f(b);null!==c&&(j.show(b,c),"ontouchstart"in a&&(c.addEventListener("touchend",j.hide,!1),c.addEventListener("touchcancel",j.hide,!1)),c.addEventListener("mouseup",j.hide,!1),c.addEventListener("mouseleave",j.hide,!1))}var h=h||{},i=document.querySelectorAll.bind(document),j={duration:750,show:function(a,b){if(2===a.button)return!1;var c=b||this,f=document.createElement("div");f.className="waves-ripple",c.appendChild(f);var g=d(c),h=a.pageY-g.top,i=a.pageX-g.left,k="scale("+c.clientWidth/100*10+")";"touches"in a&&(h=a.touches[0].pageY-g.top,i=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",i),f.setAttribute("data-y",h);var l={top:h+"px",left:i+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",e(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=j.duration+"ms",l["-moz-transition-duration"]=j.duration+"ms",l["-o-transition-duration"]=j.duration+"ms",l["transition-duration"]=j.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f.setAttribute("style",e(l))},hide:function(a){k.touchup(a);var b=this,c=(1.4*b.clientWidth,null),d=b.getElementsByClassName("waves-ripple");if(!(d.length>0))return!1;c=d[d.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),i=Date.now()-Number(c.getAttribute("data-hold")),l=350-i;0>l&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":j.duration+"ms","-moz-transition-duration":j.duration+"ms","-o-transition-duration":j.duration+"ms","transition-duration":j.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",e(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},j.duration)},l)},wrapInput:function(a){for(var b=0;b0&&(k.touches-=1)},500):"mousedown"===a.type&&k.touches>0&&(b=!1),b},touchup:function(a){k.allowEvent(a)}};h.displayEffect=function(b){b=b||{},"duration"in b&&(j.duration=b.duration),j.wrapInput(i(".waves-effect")),"ontouchstart"in a&&document.body.addEventListener("touchstart",g,!1),document.body.addEventListener("mousedown",g,!1)},h.attach=function(b){"input"===b.tagName.toLowerCase()&&(j.wrapInput([b]),b=b.parentElement),"ontouchstart"in a&&b.addEventListener("touchstart",g,!1),b.addEventListener("mousedown",g,!1)},a.Waves=h,document.addEventListener("DOMContentLoaded",function(){h.displayEffect()},!1)}(window),Materialize.toast=function(a,b,c,d){function e(a){var b=document.createElement("div");if(b.classList.add("toast"),c)for(var e=c.split(" "),f=0,g=e.length;g>f;f++)b.classList.add(e[f]);("object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&null!==a&&1===a.nodeType&&"string"==typeof a.nodeName)?b.appendChild(a):a instanceof jQuery?b.appendChild(a[0]):b.innerHTML=a;var h=new Hammer(b,{prevent_default:!1});return h.on("pan",function(a){var c=a.deltaX,d=80;b.classList.contains("panning")||b.classList.add("panning");var e=1-Math.abs(c/d);0>e&&(e=0),Vel(b,{left:c,opacity:e},{duration:50,queue:!1,easing:"easeOutQuad"})}),h.on("panend",function(a){var c=a.deltaX,e=80;Math.abs(c)>e?Vel(b,{marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),b.parentNode.removeChild(b)}}):(b.classList.remove("panning"),Vel(b,{left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}c=c||"";var f=document.getElementById("toast-container");null===f&&(f=document.createElement("div"),f.id="toast-container",document.body.appendChild(f));var g=e(a);a&&f.appendChild(g),g.style.top="35px",g.style.opacity=0,Vel(g,{top:"0px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var h=b,i=setInterval(function(){null===g.parentNode&&window.clearInterval(i),g.classList.contains("panning")||(h-=20),0>=h&&(Vel(g,{opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),this[0].parentNode.removeChild(this[0])}}),window.clearInterval(i))},20)},function(a){var b={init:function(b){var c={menuWidth:300,edge:"left",closeOnClick:!1};b=a.extend(c,b),a(this).each(function(){function c(c){g=!1,h=!1,a("body").css({overflow:"",width:""}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),"left"===b.edge?(f.css({width:"",right:"",left:"0"}),e.velocity({translateX:"-100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}})):(f.css({width:"",right:"0",left:""}),e.velocity({translateX:"100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}}))}var d=a(this),e=a("#"+d.attr("data-activates"));300!=b.menuWidth&&e.css("width",b.menuWidth);var f=a('
        ');a("body").append(f),"left"==b.edge?(e.css("transform","translateX(-100%)"),f.css({left:0})):(e.addClass("right-aligned").css("transform","translateX(100%)"),f.css({right:0})),e.hasClass("fixed")&&window.innerWidth>992&&e.css("transform","translateX(0)"),e.hasClass("fixed")&&a(window).resize(function(){window.innerWidth>992?0!==a("#sidenav-overlay").length&&h?c(!0):e.css("transform","translateX(0%)"):h===!1&&("left"===b.edge?e.css("transform","translateX(-100%)"):e.css("transform","translateX(100%)"))}),b.closeOnClick===!0&&e.on("click.itemclick","a:not(.collapsible-header)",function(){c()});var g=!1,h=!1;f.on("click",function(){h&&c()}),f.hammer({prevent_default:!1}).bind("pan",function(d){if("touch"==d.gesture.pointerType){var f=(d.gesture.direction,d.gesture.center.x),g=(d.gesture.center.y,d.gesture.velocityX,a("body")),i=g.innerWidth();if(g.css("overflow","hidden"),g.width(i),0===a("#sidenav-overlay").length){var j=a('
        ');j.css("opacity",0).click(function(){c()}),a("body").append(j)}if("left"===b.edge&&(f>b.menuWidth?f=b.menuWidth:0>f&&(f=0)),"left"===b.edge)f=b.menuWidth/2&&(h=!0),e.css("transform","translateX("+(f-b.menuWidth)+"px)");else{f=window.innerWidth-b.menuWidth/2&&(h=!1);var k=f-b.menuWidth/2;0>k&&(k=0),e.css("transform","translateX("+k+"px)")}var l;"left"===b.edge?(l=f/b.menuWidth,a("#sidenav-overlay").velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"})):(l=Math.abs((f-window.innerWidth)/b.menuWidth),a("#sidenav-overlay").velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(c){if("touch"==c.gesture.pointerType){var d=c.gesture.velocityX,i=c.gesture.center.x,j=i-b.menuWidth,k=i-b.menuWidth/2;j>0&&(j=0),0>k&&(k=0),g=!1,"left"===b.edge?h&&.3>=d||-.5>d?(0!==j&&e.velocity({translateX:[0,j]},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:0,left:""}),h=!0):(!h||d>.3)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[-1*b.menuWidth-10,j]},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:"",left:0})):h&&d>=-.3||d>.5?(0!==k&&e.velocity({translateX:[0,k]},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:"",left:0}),h=!0):(!h||-.3>d)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[b.menuWidth+10,k]},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:0,left:""}))}}),d.click(function(){if(h===!0)h=!1,g=!1,c();else{var d=a("body"),i=d.innerWidth();d.css("overflow","hidden"),d.width(i),a("body").append(f),"left"===b.edge?(f.css({width:"50%",right:0,left:""}),e.velocity({translateX:[0,-1*b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"})):(f.css({width:"50%",right:"",left:0}),e.velocity({translateX:[0,b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"}));var j=a('
        ');j.css("opacity",0).click(function(){h=!1,g=!1,c(),j.velocity({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(j),j.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){h=!0,g=!1}})}return!1})})},show:function(){this.trigger("click")},hide:function(){a("#sidenav-overlay").trigger("click")}};a.fn.sideNav=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.sideNav"):b.init.apply(this,arguments)}}(jQuery),function(a){function b(b,c,d,e){var f=a();return a.each(g,function(a,g){if(g.height()>0){var h=g.offset().top,i=g.offset().left,j=i+g.width(),k=h+g.height(),l=!(i>c||e>j||h>d||b>k);l&&f.push(g)}}),f}function c(){++j;var c=f.scrollTop(),d=f.scrollLeft(),e=d+f.width(),g=c+f.height(),i=b(c+k.top+200,e+k.right,g+k.bottom,d+k.left);a.each(i,function(a,b){var c=b.data("scrollSpy:ticks");"number"!=typeof c&&b.triggerHandler("scrollSpy:enter"),b.data("scrollSpy:ticks",j)}),a.each(h,function(a,b){var c=b.data("scrollSpy:ticks");"number"==typeof c&&c!==j&&(b.triggerHandler("scrollSpy:exit"),b.data("scrollSpy:ticks",null))}),h=i}function d(){f.trigger("scrollSpy:winSize")}function e(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:l(),g=null,f=a.apply(d,e),d=e=null};return function(){var j=l();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}}var f=a(window),g=[],h=[],i=!1,j=0,k={top:0,right:0,bottom:0,left:0},l=Date.now||function(){return(new Date).getTime()};a.scrollSpy=function(b,d){var h={throttle:100,scrollOffset:200};d=a.extend(h,d);var j=[];b=a(b),b.each(function(b,c){g.push(a(c)),a(c).data("scrollSpy:id",b),a('a[href="#'+a(c).attr("id")+'"]').click(function(b){b.preventDefault();var c=a(this.hash).offset().top+1;a("html, body").animate({scrollTop:c-d.scrollOffset},{duration:400,queue:!1,easing:"easeOutCubic"})})}),k.top=d.offsetTop||0,k.right=d.offsetRight||0,k.bottom=d.offsetBottom||0,k.left=d.offsetLeft||0;var l=e(c,d.throttle||100),m=function(){a(document).ready(l)};return i||(f.on("scroll",m),f.on("resize",m),i=!0),setTimeout(m,0),b.on("scrollSpy:enter",function(){j=a.grep(j,function(a){return 0!=a.height()});var b=a(this);j[0]?(a('a[href="#'+j[0].attr("id")+'"]').removeClass("active"),b.data("scrollSpy:id")");e.html(g),b.is(":visible")?e.css("width",b.width()):e.css("width",a(window).width()/2),b.css("height",e.height())}Materialize.updateTextFields=function(){var b="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(b).each(function(b,c){a(c).val().length>0||c.autofocus||void 0!==a(this).attr("placeholder")||a(c)[0].validity.badInput===!0?a(this).siblings("label").addClass("active"):a(this).siblings("label").removeClass("active")})};var c="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(document).on("change",c,function(){(0!==a(this).val().length||void 0!==a(this).attr("placeholder"))&&a(this).siblings("label").addClass("active"),validate_field(a(this))}),a(document).ready(function(){Materialize.updateTextFields()}),a(document).on("reset",function(b){var d=a(b.target);d.is("form")&&(d.find(c).removeClass("valid").removeClass("invalid"),d.find(c).each(function(){""===a(this).attr("value")&&a(this).siblings("label").removeClass("active")}),d.find("select.initialized").each(function(){var a=d.find("option[selected]").text();d.siblings("input.select-dropdown").val(a)}))}),a(document).on("focus",c,function(){a(this).siblings("label, .prefix").addClass("active")}),a(document).on("blur",c,function(){var b=a(this),c=".prefix";0===b.val().length&&b[0].validity.badInput!==!0&&void 0===b.attr("placeholder")&&(c+=", label"),b.siblings(c).removeClass("active"),validate_field(b)}),window.validate_field=function(a){var b=void 0!==a.attr("length"),c=parseInt(a.attr("length")),d=a.val().length;0===a.val().length&&a[0].validity.badInput===!1?a.hasClass("validate")&&(a.removeClass("valid"),a.removeClass("invalid")):a.hasClass("validate")&&(a.is(":valid")&&b&&c>=d||a.is(":valid")&&!b?(a.removeClass("invalid"),a.addClass("valid")):(a.removeClass("valid"),a.addClass("invalid")))};var d="input[type=radio], input[type=checkbox]";a(document).on("keyup.radio",d,function(b){if(9===b.which){a(this).addClass("tabbed");var c=a(this);return void c.one("blur",function(b){a(this).removeClass("tabbed")})}});var e=a(".hiddendiv").first();e.length||(e=a('
        '),a("body").append(e));var f=".materialize-textarea";a(f).each(function(){var c=a(this);c.val().length&&b(c)}),a("body").on("keyup keydown autoresize",f,function(){b(a(this))}),a(document).on("change",'.file-field input[type="file"]',function(){for(var b=a(this).closest(".file-field"),c=b.find("input.file-path"),d=a(this)[0].files,e=[],f=0;f
        ');a(this).after(b)});var j=".range-field";a(document).on("change",h,function(b){var c=a(this).siblings(".thumb");c.find(".value").html(a(this).val())}),a(document).on("input mousedown touchstart",h,function(b){var c=a(this).siblings(".thumb"),d=a(this).outerWidth();c.length<=0&&(c=a(''),a(this).after(c)),c.find(".value").html(a(this).val()),i=!0,a(this).addClass("active"),c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),"input"!==b.type&&(g=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left,0>g?g=0:g>d&&(g=d),c.addClass("active").css("left",g)),c.find(".value").html(a(this).val())}),a(document).on("mouseup touchend",j,function(){i=!1,a(this).removeClass("active")}),a(document).on("mousemove touchmove",j,function(b){var c,d=a(this).children(".thumb");if(i){d.hasClass("active")||d.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),c=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var e=a(this).outerWidth();0>c?c=0:c>e&&(c=e),d.addClass("active").css("left",c),d.find(".value").html(d.siblings(h).val())}}),a(document).on("mouseout touchleave",j,function(){if(!i){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}}),a.fn.autocomplete=function(b){var c={data:{}};return b=a.extend(c,b),this.each(function(){var c=a(this),d=b.data,e=c.closest(".input-field");if(!a.isEmptyObject(d)){var f=a('');e.length?e.append(f):c.after(f);var g=function(a,b){var c=b.find("img"),d=b.text().toLowerCase().indexOf(""+a.toLowerCase()),e=d+a.length-1,f=b.text().slice(0,d),g=b.text().slice(d,e+1),h=b.text().slice(e+1);b.html(""+f+""+g+""+h+""),c.length&&b.prepend(c)};c.on("keyup",function(b){if(13===b.which)return void f.find("li").first().click();var e=c.val().toLowerCase();if(f.empty(),""!==e)for(var h in d)if(d.hasOwnProperty(h)&&-1!==h.toLowerCase().indexOf(e)&&h.toLowerCase()!==e){var i=a("
      • ");d[h]?i.append(''+h+""):i.append(""+h+""),f.append(i),g(e,i)}}),f.on("click","li",function(){c.val(a(this).text().trim()),f.empty()})}})}}),a.fn.material_select=function(b){function c(a,b,c){var e=a.indexOf(b),f=-1===e;return f?a.push(b):a.splice(e,1),c.siblings("ul.dropdown-content").find("li").eq(b).toggleClass("active"),c.find("option").eq(b).prop("selected",f),d(a,c),f}function d(a,b){for(var c="",d=0,e=a.length;e>d;d++){var f=b.find("option").eq(a[d]).text();c+=0===d?f:", "+f}""===c&&(c=b.find("option:disabled").eq(0).text()),b.siblings("input.select-dropdown").val(c)}a(this).each(function(){var d=a(this);if(!d.hasClass("browser-default")){var e=d.attr("multiple")?!0:!1,f=d.data("select-id");if(f&&(d.parent().find("span.caret").remove(),d.parent().find("input").remove(),d.unwrap(),a("ul#select-options-"+f).remove()),"destroy"===b)return void d.data("select-id",null).removeClass("initialized");var g=Materialize.guid();d.data("select-id",g);var h=a('
        ');h.addClass(d.attr("class"));var i=a(''),j=d.children("option, optgroup"),k=[],l=!1,m=d.find("option:selected").html()||d.find("option:first").html()||"",n=function(b,c,d){var e=c.is(":disabled")?"disabled ":"",f="optgroup-option"===d?"optgroup-option ":"",g=c.data("icon"),h=c.attr("class");if(g){var j="";return h&&(j=' class="'+h+'"'),"multiple"===d?i.append(a('
      • "+c.html()+"
      • ")):i.append(a('
      • "+c.html()+"
      • ")),!0}"multiple"===d?i.append(a('
      • "+c.html()+"
      • ")):i.append(a('
      • '+c.html()+"
      • "))};j.length&&j.each(function(){if(a(this).is("option"))e?n(d,a(this),"multiple"):n(d,a(this));else if(a(this).is("optgroup")){var b=a(this).children("option");i.append(a('
      • '+a(this).attr("label")+"
      • ")),b.each(function(){n(d,a(this),"optgroup-option")})}}),i.find("li:not(.optgroup)").each(function(f){a(this).click(function(g){if(!a(this).hasClass("disabled")&&!a(this).hasClass("optgroup")){var h=!0;e?(a('input[type="checkbox"]',this).prop("checked",function(a,b){return!b}),h=c(k,a(this).index(),d),q.trigger("focus")):(i.find("li").removeClass("active"),a(this).toggleClass("active"),q.val(a(this).text())),r(i,a(this)),d.find("option").eq(f).prop("selected",h),d.trigger("change"),"undefined"!=typeof b&&b()}g.stopPropagation()})}),d.wrap(h);var o=a('');d.is(":disabled")&&o.addClass("disabled");var p=m.replace(/"/g,"""),q=a('');d.before(q),q.before(o),q.after(i),d.is(":disabled")||q.dropdown({hover:!1,closeOnClick:!1}),d.attr("tabindex")&&a(q[0]).attr("tabindex",d.attr("tabindex")),d.addClass("initialized"),q.on({focus:function(){if(a("ul.select-dropdown").not(i[0]).is(":visible")&&a("input.select-dropdown").trigger("close"),!i.is(":visible")){a(this).trigger("open",["focus"]);var b=a(this).val(),c=i.find("li").filter(function(){return a(this).text().toLowerCase()===b.toLowerCase()})[0];r(i,c)}},click:function(a){a.stopPropagation()}}),q.on("blur",function(){e||a(this).trigger("close"),i.find("li.selected").removeClass("selected")}),i.hover(function(){l=!0},function(){l=!1}),a(window).on({click:function(){e&&(l||q.trigger("close"))}}),e&&d.find("option:selected:not(:disabled)").each(function(){ +var b=a(this).index();c(k,b,d),i.find("li").eq(b).find(":checkbox").prop("checked",!0)});var r=function(b,c){if(c){b.find("li.selected").removeClass("selected");var d=a(c);d.addClass("selected"),i.scrollTo(d)}},s=[],t=function(b){if(9==b.which)return void q.trigger("close");if(40==b.which&&!i.is(":visible"))return void q.trigger("open");if(13!=b.which||i.is(":visible")){b.preventDefault();var c=String.fromCharCode(b.which).toLowerCase(),d=[9,13,27,38,40];if(c&&-1===d.indexOf(b.which)){s.push(c);var f=s.join(""),g=i.find("li").filter(function(){return 0===a(this).text().toLowerCase().indexOf(f)})[0];g&&r(i,g)}if(13==b.which){var h=i.find("li.selected:not(.disabled)")[0];h&&(a(h).trigger("click"),e||q.trigger("close"))}40==b.which&&(g=i.find("li.selected").length?i.find("li.selected").next("li:not(.disabled)")[0]:i.find("li:not(.disabled)")[0],r(i,g)),27==b.which&&q.trigger("close"),38==b.which&&(g=i.find("li.selected").prev("li:not(.disabled)")[0],g&&r(i,g)),setTimeout(function(){s=[]},1e3)}};q.on("keydown",t)}})}}(jQuery),function(a){var b={init:function(b){var c={indicators:!0,height:400,transition:500,interval:6e3};return b=a.extend(c,b),this.each(function(){function c(a,b){a.hasClass("center-align")?a.velocity({opacity:0,translateY:-100},{duration:b,queue:!1}):a.hasClass("right-align")?a.velocity({opacity:0,translateX:100},{duration:b,queue:!1}):a.hasClass("left-align")&&a.velocity({opacity:0,translateX:-100},{duration:b,queue:!1})}function d(a){a>=j.length?a=0:0>a&&(a=j.length-1),k=i.find(".active").index(),k!=a&&(e=j.eq(k),$caption=e.find(".caption"),e.removeClass("active"),e.velocity({opacity:0},{duration:b.transition,queue:!1,easing:"easeOutQuad",complete:function(){j.not(".active").velocity({opacity:0,translateX:0,translateY:0},{duration:0,queue:!1})}}),c($caption,b.transition),b.indicators&&f.eq(k).removeClass("active"),j.eq(a).velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,delay:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).addClass("active"),b.indicators&&f.eq(a).addClass("active"))}var e,f,g,h=a(this),i=h.find("ul.slides").first(),j=i.find("> li"),k=i.find(".active").index();-1!=k&&(e=j.eq(k)),h.hasClass("fullscreen")||(b.indicators?h.height(b.height+40):h.height(b.height),i.height(b.height)),j.find(".caption").each(function(){c(a(this),0)}),j.find("img").each(function(){var b="data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";a(this).attr("src")!==b&&(a(this).css("background-image","url("+a(this).attr("src")+")"),a(this).attr("src",b))}),b.indicators&&(f=a('
          '),j.each(function(c){var e=a('
        • ');e.click(function(){var c=i.parent(),e=c.find(a(this)).index();d(e),clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),f.append(e)}),h.append(f),f=h.find("ul.indicators").find("li.indicator-item")),e?e.show():(j.first().addClass("active").velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),k=0,e=j.eq(k),b.indicators&&f.eq(k).addClass("active")),e.find("img").each(function(){e.find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,queue:!1,easing:"easeOutQuad"})}),g=setInterval(function(){k=i.find(".active").index(),d(k+1)},b.transition+b.interval);var l=!1,m=!1,n=!1;h.hammer({prevent_default:!1}).bind("pan",function(a){if("touch"===a.gesture.pointerType){clearInterval(g);var b=a.gesture.direction,c=a.gesture.deltaX,d=a.gesture.velocityX;$curr_slide=i.find(".active"),$curr_slide.velocity({translateX:c},{duration:50,queue:!1,easing:"easeOutQuad"}),4===b&&(c>h.innerWidth()/2||-.65>d)?n=!0:2===b&&(c<-1*h.innerWidth()/2||d>.65)&&(m=!0);var e;m&&(e=$curr_slide.next(),0===e.length&&(e=j.first()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"})),n&&(e=$curr_slide.prev(),0===e.length&&(e=j.last()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(a){"touch"===a.gesture.pointerType&&($curr_slide=i.find(".active"),l=!1,curr_index=i.find(".active").index(),!n&&!m||j.length<=1?$curr_slide.velocity({translateX:0},{duration:300,queue:!1,easing:"easeOutQuad"}):m?(d(curr_index+1),$curr_slide.velocity({translateX:-1*h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):n&&(d(curr_index-1),$curr_slide.velocity({translateX:h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})),m=!1,n=!1,clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval))}),h.on("sliderPause",function(){clearInterval(g)}),h.on("sliderStart",function(){clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),h.on("sliderNext",function(){k=i.find(".active").index(),d(k+1)}),h.on("sliderPrev",function(){k=i.find(".active").index(),d(k-1)})})},pause:function(){a(this).trigger("sliderPause")},start:function(){a(this).trigger("sliderStart")},next:function(){a(this).trigger("sliderNext")},prev:function(){a(this).trigger("sliderPrev")}};a.fn.slider=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)}}(jQuery),function(a){a(document).ready(function(){a(document).on("click.card",".card",function(b){a(this).find("> .card-reveal").length&&(a(b.target).is(a(".card-reveal .card-title"))||a(b.target).is(a(".card-reveal .card-title i"))?a(this).find(".card-reveal").velocity({translateY:0},{duration:225,queue:!1,easing:"easeInOutQuad",complete:function(){a(this).css({display:"none"})}}):(a(b.target).is(a(".card .activator"))||a(b.target).is(a(".card .activator i")))&&(a(b.target).closest(".card").css("overflow","hidden"),a(this).find(".card-reveal").css({display:"block"}).velocity("stop",!1).velocity({translateY:"-100%"},{duration:300,queue:!1,easing:"easeInOutQuad"})))})})}(jQuery),function(a){var b=!1,c={data:[],placeholder:"",secondaryPlaceholder:""};a(document).ready(function(){a(document).on("click",".chip .close",function(b){var c=a(this).closest(".chips");c.data("initialized")||a(this).closest(".chip").remove()})}),a.fn.material_chip=function(d){var e=this;return this.$el=a(this),this.$document=a(document),this.SELS={CHIPS:".chips",CHIP:".chip",INPUT:"input",DELETE:".material-icons",SELECTED_CHIP:".selected"},"data"===d?this.$el.data("chips"):"options"===d?this.$el.data("options"):(this.$el.data("options",a.extend({},c,d)),this.init=function(){var b=0;e.$el.each(function(){var c=a(this);if(!c.data("initialized")){var d=c.data("options");(!d.data||!d.data instanceof Array)&&(d.data=[]),c.data("chips",d.data),c.data("index",b),c.data("initialized",!0),c.hasClass(e.SELS.CHIPS)||c.addClass("chips"),e.chips(c),b++}})},this.handleEvents=function(){var b=e.SELS;e.$document.on("click",b.CHIPS,function(c){a(c.target).find(b.INPUT).focus()}),e.$document.on("click",b.CHIP,function(c){a(b.CHIP).removeClass("selected"),a(this).toggleClass("selected")}),e.$document.on("keydown",function(c){if(!a(c.target).is("input, textarea")){var d,f=e.$document.find(b.CHIP+b.SELECTED_CHIP),g=f.closest(b.CHIPS),h=f.siblings(b.CHIP).length;if(f.length)if(8===c.which||46===c.which){c.preventDefault();var i=g.data("index");d=f.index(),e.deleteChip(i,d,g);var j=null;h>d+1?j=d:(d===h||d+1===h)&&(j=h-1),0>j&&(j=null),null!==j&&e.selectChip(i,j,g),h||g.find("input").focus()}else if(37===c.which){if(d=f.index()-1,0>d)return;a(b.CHIP).removeClass("selected"),e.selectChip(g.data("index"),d,g)}else if(39===c.which){if(d=f.index()+1,a(b.CHIP).removeClass("selected"),d>h)return void g.find("input").focus();e.selectChip(g.data("index"),d,g)}}}),e.$document.on("focusin",b.CHIPS+" "+b.INPUT,function(c){a(c.target).closest(b.CHIPS).addClass("focus"),a(b.CHIP).removeClass("selected")}),e.$document.on("focusout",b.CHIPS+" "+b.INPUT,function(c){a(c.target).closest(b.CHIPS).removeClass("focus")}),e.$document.on("keydown",b.CHIPS+" "+b.INPUT,function(c){var d=a(c.target),f=d.closest(b.CHIPS),g=f.data("index"),h=f.children(b.CHIP).length;return 13===c.which?(c.preventDefault(),e.addChip(g,{tag:d.val()},f),void d.val("")):8!==c.keyCode&&37!==c.keyCode||""!==d.val()||!h?void 0:(e.selectChip(g,h-1,f),void d.blur())}),e.$document.on("click",b.CHIPS+" "+b.DELETE,function(c){var d=a(c.target),f=d.closest(b.CHIPS),g=d.closest(b.CHIP);c.stopPropagation(),e.deleteChip(f.data("index"),g.index(),f),f.find("input").focus()})},this.chips=function(a){var b="";a.data("options");a.data("chips").forEach(function(a){b+=e.renderChip(a)}),b+='',a.html(b),e.setPlaceholder(a)},this.renderChip=function(a){if(a.tag){var b='
          '+a.tag;return a.image&&(b+=' '),b+='close',b+="
          "}},this.setPlaceholder=function(a){var b=a.data("options");a.data("chips").length&&b.placeholder?a.find("input").prop("placeholder",b.placeholder):!a.data("chips").length&&b.secondaryPlaceholder&&a.find("input").prop("placeholder",b.secondaryPlaceholder)},this.isValid=function(a,b){for(var c=a.data("chips"),d=!1,e=0;e=e&&!a(this).hasClass("pinned")&&(c(a(this)),a(this).css("top",b.offset),a(this).addClass("pinned")),eb.bottom&&!a(this).hasClass("pin-bottom")&&(c(a(this)),a(this).addClass("pin-bottom"),a(this).css("top",b.bottom-g))})}var e=Materialize.guid(),f=a(this),g=a(this).offset().top;a(this).data("pushpin-id",e),d(f,a(window).scrollTop()),a(window).on("scroll."+e,function(){var c=a(window).scrollTop()+b.offset;d(f,c)})}))}}(jQuery),function(a){a(document).ready(function(){a.fn.reverse=[].reverse,a(document).on("mouseenter.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle)",function(c){var d=a(this);b(d)}),a(document).on("mouseleave.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle)",function(b){var d=a(this);c(d)}),a(document).on("click.fixedActionBtn",".fixed-action-btn.click-to-toggle > a",function(d){var e=a(this),f=e.parent();f.hasClass("active")?c(f):b(f)})}),a.fn.extend({openFAB:function(){b(a(this))},closeFAB:function(){c(a(this))}});var b=function(b){if($this=b,$this.hasClass("active")===!1){var c,d,e=$this.hasClass("horizontal");e===!0?d=40:c=40,$this.addClass("active"),$this.find("ul .btn-floating").velocity({scaleY:".4",scaleX:".4",translateY:c+"px",translateX:d+"px"},{duration:0});var f=0;$this.find("ul .btn-floating").reverse().each(function(){a(this).velocity({opacity:"1",scaleX:"1",scaleY:"1",translateY:"0",translateX:"0"},{duration:80,delay:f}),f+=40})}},c=function(a){$this=a;var b,c,d=$this.hasClass("horizontal");d===!0?c=40:b=40,$this.removeClass("active");$this.find("ul .btn-floating").velocity("stop",!0),$this.find("ul .btn-floating").velocity({opacity:"0",scaleX:".4",scaleY:".4",translateY:b+"px",translateX:c+"px"},{duration:80})}}(jQuery),function(a){Materialize.fadeInImage=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}c.css({opacity:0}),a(c).velocity({opacity:1},{duration:650,queue:!1,easing:"easeOutSine"}),a(c).velocity({opacity:1},{duration:1300,queue:!1,easing:"swing",step:function(b,c){c.start=100;var d=b/100,e=150-(100-b)/1.75;100>e&&(e=100),b>=0&&a(this).css({"-webkit-filter":"grayscale("+d+")brightness("+e+"%)",filter:"grayscale("+d+")brightness("+e+"%)"})}})},Materialize.showStaggeredList=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}var d=0;c.find("li").velocity({translateX:"-100px"},{duration:0}),c.find("li").each(function(){a(this).velocity({opacity:"1",translateX:"0"},{duration:800,delay:d,easing:[60,10]}),d+=120})},a(document).ready(function(){var b=!1,c=!1;a(".dismissable").each(function(){a(this).hammer({prevent_default:!1}).bind("pan",function(d){if("touch"===d.gesture.pointerType){var e=a(this),f=d.gesture.direction,g=d.gesture.deltaX,h=d.gesture.velocityX;e.velocity({translateX:g},{duration:50,queue:!1,easing:"easeOutQuad"}),4===f&&(g>e.innerWidth()/2||-.75>h)&&(b=!0),2===f&&(g<-1*e.innerWidth()/2||h>.75)&&(c=!0)}}).bind("panend",function(d){if(Math.abs(d.gesture.deltaX)j+g&&e.done!==!0){if("function"==typeof h)h.call(this,i);else if("string"==typeof h){var k=new Function(h);k(i)}e.done=!0}}}}},100)}}(jQuery),function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,l){function m(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",y.component.nodes(t.open),v.box),v.wrap),v.frame),v.holder)}function n(){w.data(g,y).addClass(v.input).attr("tabindex",-1).val(w.data("value")?y.get("select",u.format):f.value),u.editable||w.on("focus."+t.id+" click."+t.id,function(a){a.preventDefault(),y.$root.eq(0).focus()}).on("keydown."+t.id,q),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"})}function o(){y.$root.on({keydown:q,focusin:function(a){y.$root.removeClass(v.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=y.$root.children()[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),y.$root.eq(0).focus()))}}).on({focus:function(){w.addClass(v.target)},blur:function(){w.removeClass(v.target)}}).on("focus.toOpen",r).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(v.navDisabled)||b.hasClass(v.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(y.$root[0],e))&&y.$root.eq(0).focus(),!d&&c.nav?y.set("highlight",y.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?y.set("select",c.pick):c.clear?y.clear().close(!0):c.close&&y.close(!0)}),e(y.$root[0],"hidden",!0)}function p(){var b;u.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof u.hiddenPrefix?u.hiddenPrefix:"","string"==typeof u.hiddenSuffix?u.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),y._hidden=a('")[0],w.on("change."+t.id,function(){y._hidden.value=f.value?y.get("select",u.formatSubmit):""}),u.container?a(u.container).append(y._hidden):w.after(y._hidden)}function q(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(y.close(),!1):void((32==b||c||!t.open&&y.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?y.clear().close():y.open()))}function r(a){a.stopPropagation(),"focus"==a.type&&y.$root.addClass(v.focused),y.open()}if(!f)return b;var s=!1,t={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},u=i?a.extend(!0,{},i.defaults,l):l||{},v=a.extend({},b.klasses(),u.klass),w=a(f),x=function(){return this.start()},y=x.prototype={constructor:x,$node:w,start:function(){return t&&t.start?y:(t.methods={},t.start=!0,t.open=!1,t.type=f.type,f.autofocus=f==h(),f.readOnly=!u.editable,f.id=f.id||t.id,"text"!=f.type&&(f.type="text"),y.component=new i(y,u),y.$root=a(b._.node("div",m(),v.picker,'id="'+f.id+'_root" tabindex="0"')),o(),u.formatSubmit&&p(),n(),u.container?a(u.container).append(y.$root):w.after(y.$root),y.on({start:y.component.onStart,render:y.component.onRender,stop:y.component.onStop,open:y.component.onOpen,close:y.component.onClose,set:y.component.onSet}).on({start:u.onStart,render:u.onRender,stop:u.onStop,open:u.onOpen,close:u.onClose,set:u.onSet}),s=c(y.$root.children()[0]),f.autofocus&&y.open(),y.trigger("start").trigger("render"))},render:function(a){return a?y.$root.html(m()):y.$root.find("."+v.box).html(y.component.nodes(t.open)),y.trigger("render")},stop:function(){return t.start?(y.close(),y._hidden&&y._hidden.parentNode.removeChild(y._hidden),y.$root.remove(),w.removeClass(v.input).removeData(g),setTimeout(function(){w.off("."+t.id)},0),f.type=t.type,f.readOnly=!1,y.trigger("stop"),t.methods={},t.start=!1,y):y},open:function(c){return t.open?y:(w.addClass(v.active),e(f,"expanded",!0),setTimeout(function(){y.$root.addClass(v.opened),e(y.$root[0],"hidden",!1)},0),c!==!1&&(t.open=!0,s&&k.css("overflow","hidden").css("padding-right","+="+d()),y.$root.eq(0).focus(),j.on("click."+t.id+" focusin."+t.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&y.close(b===y.$root.children()[0])}).on("keydown."+t.id,function(c){var d=c.keyCode,e=y.component.key[d],f=c.target;27==d?y.close(!0):f!=y.$root[0]||!e&&13!=d?a.contains(y.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(y.component.key.go,y,[b._.trigger(e)]):y.$root.find("."+v.highlighted).hasClass(v.disabled)||y.set("select",y.component.item.highlight).close())})),y.trigger("open"))},close:function(a){return a&&(y.$root.off("focus.toOpen").eq(0).focus(),setTimeout(function(){y.$root.on("focus.toOpen",r)},0)),w.removeClass(v.active),e(f,"expanded",!1),setTimeout(function(){y.$root.removeClass(v.opened+" "+v.focused),e(y.$root[0],"hidden",!0)},0),t.open?(t.open=!1,s&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+t.id),y.trigger("close")):y},clear:function(a){return y.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in y.component.item&&(void 0===f&&(f=null),y.component.set(e,f,d)),("select"==e||"clear"==e)&&w.val("clear"==e?"":y.get(e,u.format)).trigger("change");y.render()}return d.muted?y:y.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=t[a])return t[a];if("valueSubmit"==a){if(y._hidden)return y._hidden.value;a="value"}if("value"==a)return f.value;if(a in y.component.item){if("string"==typeof c){var d=y.component.get(a);return d?b._.trigger(y.component.formats.toString,y.component,[c,d]):""}return y.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),t.methods[e]=t.methods[e]||[],t.methods[e].push(f)}return y},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('
          ').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement);return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+""):""},lead:function(a){return(10>a?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b}),function(a){"function"==typeof define&&define.amd?define(["picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b="min"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;dc.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.monthk.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pickc.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;gi;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node("thead",f.node("tr",f.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysLetter).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths&&void 0==d?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&an.month?" disabled":"")]}}),c.klass.selectMonth+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table" +})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?null!=i?f.node("div",e[i.month]):f.node("div",e[k.month]):f.node("div",e[k.month],c.klass.month)},r=function(d){var e=k.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=m.year,i=n.year,j=e-g,l=e+g;if(h>j&&(l+=h-j,j=h),l>i){var o=j-h,p=l-i;j-=o>p?p:o,l=i}if(c.selectYears&&void 0==d)return f.node("select",f.group({min:j,max:l,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return"raw"==d?f.node("div",e):f.node("div",e,c.klass.year)};return createDayLabel=function(){return null!=i?f.node("div",i.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=i?i.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",q("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",r("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?q()+r():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pickn.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!0:null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0})),c.klass.calendar_container)+f.node("div",f.node("button",c.today,"btn-flat picker__today","type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.clear,"btn-flat picker__clear","type=button data-clear=1"+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,"btn-flat picker__close","type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysLetter:["S","M","T","W","T","F","S"],today:"Today",clear:"Clear",close:"Close",format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",date_display:a+"date-display",day_display:a+"day-display",month_display:a+"month-display",year_display:a+"year-display",calendar_container:a+"calendar-container",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)}),function(a){function b(){var b=+a(this).attr("length"),c=+a(this).val().length,d=b>=c;a(this).parent().find('span[class="character-counter"]').html(c+"/"+b),e(d,a(this))}function c(b){var c=b.parent().find('span[class="character-counter"]');c.length||(c=a("").addClass("character-counter").css("float","right").css("font-size","12px").css("height",1),b.parent().append(c))}function d(){a(this).parent().find('span[class="character-counter"]').html("")}function e(a,b){var c=b.hasClass("invalid");a&&c?b.removeClass("invalid"):a||c||(b.removeClass("valid"),b.addClass("invalid"))}a.fn.characterCounter=function(){return this.each(function(){var e=a(this),f=e.parent().find('span[class="character-counter"]');if(!f.length){var g=void 0!==e.attr("length");g&&(e.on("input",b),e.on("focus",b),e.on("blur",d),c(e))}})},a(document).ready(function(){a("input, textarea").characterCounter()})}(jQuery),function(a){var b={init:function(b){var c={time_constant:200,dist:-100,shift:0,padding:0,full_width:!1,indicators:!1,no_wrap:!1};return b=a.extend(c,b),this.each(function(){function c(){"undefined"!=typeof window.ontouchstart&&(H[0].addEventListener("touchstart",l),H[0].addEventListener("touchmove",m),H[0].addEventListener("touchend",n)),H[0].addEventListener("mousedown",l),H[0].addEventListener("mousemove",m),H[0].addEventListener("mouseup",n),H[0].addEventListener("mouseleave",n),H[0].addEventListener("click",j)}function d(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientX:a.clientX}function e(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientY:a.clientY}function f(a){return a>=t?a%t:0>a?f(t+a%t):a}function g(a){var c,d,e,g,h,i,j;if(p="number"==typeof a?a:p,q=Math.floor((p+s/2)/s),e=p-q*s,g=0>e?1:-1,h=-g*e*2/s,d=t>>1,b.full_width?j="translateX(0)":(j="translateX("+(H[0].clientWidth-item_width)/2+"px) ",j+="translateY("+(H[0].clientHeight-item_width)/2+"px)"),I){var k=q%t,l=G.find(".indicator-item.active");l.index()!==k&&(l.removeClass("active"),G.find(".indicator-item").eq(k).addClass("active"))}for((!b.no_wrap||q>=0&&t>q)&&(i=o[f(q)],i.style[A]=j+" translateX("+-e/2+"px) translateX("+g*b.shift*h*c+"px) translateZ("+b.dist*h+"px)",i.style.zIndex=0,b.full_width?tweenedOpacity=1:tweenedOpacity=1-.2*h,i.style.opacity=tweenedOpacity,i.style.display="block"),c=1;d>=c;++c)b.full_width?(zTranslation=b.dist,tweenedOpacity=c===d&&0>e?1-h:1):(zTranslation=b.dist*(2*c+h*g),tweenedOpacity=1-.2*(2*c+h*g)),(!b.no_wrap||t>q+c)&&(i=o[f(q+c)],i.style[A]=j+" translateX("+(b.shift+(s*c-e)/2)+"px) translateZ("+zTranslation+"px)",i.style.zIndex=-c,i.style.opacity=tweenedOpacity,i.style.display="block"),b.full_width?(zTranslation=b.dist,tweenedOpacity=c===d&&e>0?1-h:1):(zTranslation=b.dist*(2*c-h*g),tweenedOpacity=1-.2*(2*c-h*g)),(!b.no_wrap||q-c>=0)&&(i=o[f(q-c)],i.style[A]=j+" translateX("+(-b.shift+(-s*c-e)/2)+"px) translateZ("+zTranslation+"px)",i.style.zIndex=-c,i.style.opacity=tweenedOpacity,i.style.display="block");(!b.no_wrap||q>=0&&t>q)&&(i=o[f(q)],i.style[A]=j+" translateX("+-e/2+"px) translateX("+g*b.shift*h+"px) translateZ("+b.dist*h+"px)",i.style.zIndex=0,b.full_width?tweenedOpacity=1:tweenedOpacity=1-.2*h,i.style.opacity=tweenedOpacity,i.style.display="block")}function h(){var a,b,c,d;a=Date.now(),b=a-C,C=a,c=p-B,B=p,d=1e3*c/(1+b),z=.8*d+.2*z}function i(){var a,c;w&&(a=Date.now()-C,c=w*Math.exp(-a/b.time_constant),c>2||-2>c?(g(x-c),requestAnimationFrame(i)):g(x))}function j(c){if(E)return c.preventDefault(),c.stopPropagation(),!1;if(!b.full_width){var d=a(c.target).closest(".carousel-item").index(),e=q%t-d;0!==e&&(c.preventDefault(),c.stopPropagation()),k(d)}}function k(a){var c=q%t-a;b.no_wrap||(0>c?Math.abs(c+t)0&&Math.abs(c-t)c?H.trigger("carouselNext",[Math.abs(c)]):c>0&&H.trigger("carouselPrev",[c])}function l(a){r=!0,E=!1,F=!1,u=d(a),v=e(a),z=w=0,B=p,C=Date.now(),clearInterval(D),D=setInterval(h,100)}function m(a){var b,c,f;if(r)if(b=d(a),y=e(a),c=u-b,f=Math.abs(v-y),30>f&&!F)(c>2||-2>c)&&(E=!0,u=b,g(p+c));else{if(E)return a.preventDefault(),a.stopPropagation(),!1;F=!0}return E?(a.preventDefault(),a.stopPropagation(),!1):void 0}function n(a){return r?(r=!1,clearInterval(D),x=p,(z>10||-10>z)&&(w=.9*z,x=p+w),x=Math.round(x/s)*s,b.no_wrap&&(x>=s*(t-1)?x=s*(t-1):0>x&&(x=0)),w=x-p,C=Date.now(),requestAnimationFrame(i),E&&(a.preventDefault(),a.stopPropagation()),!1):void 0}var o,p,q,r,s,t,u,v,w,x,z,A,B,C,D,E,F,G=a('
            '),H=a(this),I=H.attr("data-indicators")||b.indicators;if(H.hasClass("initialized"))return a(this).trigger("carouselNext",[1e-6]),!0;if(b.full_width){b.dist=0;var J=H.find(".carousel-item img").first();J.length?imageHeight=J.load(function(){H.css("height",a(this).height())}):(imageHeight=H.find(".carousel-item").first().height(),H.css("height",imageHeight)),I&&H.find(".carousel-fixed-item").addClass("with-indicators")}H.addClass("initialized"),r=!1,p=x=0,o=[],item_width=H.find(".carousel-item").first().innerWidth(),s=2*item_width+b.padding,H.find(".carousel-item").each(function(b){if(o.push(a(this)[0]),I){var c=a('
          • ');0===b&&c.addClass("active"),c.click(function(){var b=a(this).index();k(b)}),G.append(c)}}),I&&H.append(G),t=o.length,A="transform",["webkit","Moz","O","ms"].every(function(a){var b=a+"Transform";return"undefined"!=typeof document.body.style[b]?(A=b,!1):!0}),window.onresize=g,c(),g(p),a(this).on("carouselNext",function(a,b){void 0===b&&(b=1),x=p+s*b,p!==x&&(w=x-p,C=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselPrev",function(a,b){void 0===b&&(b=1),x=p-s*b,p!==x&&(w=x-p,C=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselSet",function(a,b){void 0===b&&(b=0),k(b)})})},next:function(b){a(this).trigger("carouselNext",[b])},prev:function(b){a(this).trigger("carouselPrev",[b])},set:function(b){a(this).trigger("carouselSet",[b])}};a.fn.carousel=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.carousel"):b.init.apply(this,arguments)}}(jQuery); \ No newline at end of file diff --git a/public_html/profile/index.php b/public_html/profile/index.php new file mode 100644 index 0000000..f409d4c --- /dev/null +++ b/public_html/profile/index.php @@ -0,0 +1,28 @@ + + + + + + RASPSNIR - <?php echo strtoupper($_SESSION['pseudo']); ?> + + + + +
            +
            + +
            +
            + + + + + diff --git a/public_html/rocketleague/index.php b/public_html/rocketleague/index.php new file mode 100644 index 0000000..62863c0 --- /dev/null +++ b/public_html/rocketleague/index.php @@ -0,0 +1,57 @@ + + + + + + + RASPSNIR - ROCKET LEAGUE + + + + + +
            +
            +
            + +
            +
            +
            +
            +
            +
            +
            +
            +
            + Classement +

            Ici s'affichera le classement. Vous y retrouverez le rang de chacun des joueurs, leur division, leur rating par rang ainsi que leur rating moyen. Et enfin leur nombre de matches par rang et au total.

            +
            +
            +
            +
            +
            + + + + + diff --git a/public_html/rocketleague/majStats.php b/public_html/rocketleague/majStats.php new file mode 100644 index 0000000..548244d --- /dev/null +++ b/public_html/rocketleague/majStats.php @@ -0,0 +1,199 @@ +query("SELECT * FROM rl_general"); + +while($donnee = $req->fetch()) +{ + $steamid = $donnee['steam_id']; + $pseudo = $donnee['pseudo']; + + $ch = curl_init("http://rltracker.pro/profiles/$steamid/steam"); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $raw = curl_exec($ch); + curl_close($ch); + + $html = new DOMDocument(); + @$html->loadHTML($raw); + $xpath = new DOMXPath($html); + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_10']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
            "; + echo "$division
            "; + echo "$rating[0]
            "; + echo "$matches[0]
            "; + echo "$pseudo

            "; + + $req2 = $bdd->query("SELECT id FROM rl_solo WHERE pseudo = '$pseudo'"); + + if($req2->rowCount() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo';") or die(print_r($bdd->errorInfo(), true)); + echo "Mise à jour

            "; + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0]);") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_11']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
            "; + echo "$division
            "; + echo "$rating[0]
            "; + echo "$matches[0]
            "; + echo "$pseudo

            "; + + $req2 = $bdd->query("SELECT id FROM rl_doubles WHERE pseudo = '$pseudo'"); + + if($req2->rowCount() != 0) + { + $req2 = $bdd->query("UPDATE rl_doubles SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo';") or die(print_r($bdd->errorInfo(), true)); + echo "Mise à jour

            "; + } + else + { + $req2 = $bdd->query("INSERT INTO rl_doubles (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0]);") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_12']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
            "; + echo "$division
            "; + echo "$rating[0]
            "; + echo "$matches[0]
            "; + echo "$pseudo

            "; + + $req2 = $bdd->query("SELECT id FROM rl_solo_standard WHERE pseudo = '$pseudo'"); + + if($req2->rowCount() != 0) + { + $req2 = $bdd->query("UPDATE rl_solo_standard SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo';") or die(print_r($bdd->errorInfo(), true)); + echo "Mise à jour

            "; + } + else + { + $req2 = $bdd->query("INSERT INTO rl_solo_standard (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0]);") or die(print_r($bdd->errorInfo(), true)); + } + + + + + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='tier_name']"); + foreach ($domExemple as $exemple) { + $tier = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='division']"); + foreach ($domExemple as $exemple) { + $division = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='rating']"); + foreach ($domExemple as $exemple) { + $rating = $exemple->nodeValue; + } + + $domExemple = $xpath->query("//div[@class='col-xs-3 statistics_col playlist_13']/div[@class='matches']"); + foreach ($domExemple as $exemple) { + $matches = $exemple->nodeValue; + } + + preg_match("/(?:\d*\.)?\d+/", $rating, $rating); + preg_match("/(?:\d*\.)?\d+/", $matches, $matches); + + echo "$tier
            "; + echo "$division
            "; + echo "$rating[0]
            "; + echo "$matches[0]
            "; + echo "$pseudo

            "; + + $req2 = $bdd->query("SELECT id FROM rl_standard WHERE pseudo = '$pseudo'"); + + if($req2->fetch() != 0) + { + $req2 = $bdd->query("UPDATE rl_standard SET rank='$tier', division='$division', rating=$rating[0], matches=$matches[0] WHERE pseudo='$pseudo';") or die(print_r($bdd->errorInfo(), true)); + echo "Mise à jour

            "; + } + else + { + $req2 = $bdd->query("INSERT INTO rl_standard (pseudo, rank, division, rating, matches) VALUES ('$pseudo', '$tier', '$division', $rating[0], $matches[0]);") or die(print_r($bdd->errorInfo(), true)); + } + +} \ No newline at end of file diff --git a/public_html/rocketleague/ranks/0.png b/public_html/rocketleague/ranks/0.png new file mode 100644 index 0000000..22ee19e Binary files /dev/null and b/public_html/rocketleague/ranks/0.png differ diff --git a/public_html/rocketleague/ranks/1.png b/public_html/rocketleague/ranks/1.png new file mode 100644 index 0000000..e2486e3 Binary files /dev/null and b/public_html/rocketleague/ranks/1.png differ diff --git a/public_html/rocketleague/ranks/10.png b/public_html/rocketleague/ranks/10.png new file mode 100644 index 0000000..95854ca Binary files /dev/null and b/public_html/rocketleague/ranks/10.png differ diff --git a/public_html/rocketleague/ranks/11.png b/public_html/rocketleague/ranks/11.png new file mode 100644 index 0000000..9fa322e Binary files /dev/null and b/public_html/rocketleague/ranks/11.png differ diff --git a/public_html/rocketleague/ranks/12.png b/public_html/rocketleague/ranks/12.png new file mode 100644 index 0000000..d88bd8e Binary files /dev/null and b/public_html/rocketleague/ranks/12.png differ diff --git a/public_html/rocketleague/ranks/13.png b/public_html/rocketleague/ranks/13.png new file mode 100644 index 0000000..1f6b277 Binary files /dev/null and b/public_html/rocketleague/ranks/13.png differ diff --git a/public_html/rocketleague/ranks/14.png b/public_html/rocketleague/ranks/14.png new file mode 100644 index 0000000..92b47c7 Binary files /dev/null and b/public_html/rocketleague/ranks/14.png differ diff --git a/public_html/rocketleague/ranks/15.png b/public_html/rocketleague/ranks/15.png new file mode 100644 index 0000000..9f54e27 Binary files /dev/null and b/public_html/rocketleague/ranks/15.png differ diff --git a/public_html/rocketleague/ranks/2.png b/public_html/rocketleague/ranks/2.png new file mode 100644 index 0000000..0defa69 Binary files /dev/null and b/public_html/rocketleague/ranks/2.png differ diff --git a/public_html/rocketleague/ranks/3.png b/public_html/rocketleague/ranks/3.png new file mode 100644 index 0000000..a90d7d5 Binary files /dev/null and b/public_html/rocketleague/ranks/3.png differ diff --git a/public_html/rocketleague/ranks/4.png b/public_html/rocketleague/ranks/4.png new file mode 100644 index 0000000..61d75c1 Binary files /dev/null and b/public_html/rocketleague/ranks/4.png differ diff --git a/public_html/rocketleague/ranks/5.png b/public_html/rocketleague/ranks/5.png new file mode 100644 index 0000000..ef30083 Binary files /dev/null and b/public_html/rocketleague/ranks/5.png differ diff --git a/public_html/rocketleague/ranks/6.png b/public_html/rocketleague/ranks/6.png new file mode 100644 index 0000000..9f469b7 Binary files /dev/null and b/public_html/rocketleague/ranks/6.png differ diff --git a/public_html/rocketleague/ranks/7.png b/public_html/rocketleague/ranks/7.png new file mode 100644 index 0000000..784435f Binary files /dev/null and b/public_html/rocketleague/ranks/7.png differ diff --git a/public_html/rocketleague/ranks/8.png b/public_html/rocketleague/ranks/8.png new file mode 100644 index 0000000..45a50ad Binary files /dev/null and b/public_html/rocketleague/ranks/8.png differ diff --git a/public_html/rocketleague/ranks/9.png b/public_html/rocketleague/ranks/9.png new file mode 100644 index 0000000..4f47acf Binary files /dev/null and b/public_html/rocketleague/ranks/9.png differ diff --git a/public_html/rocketleague/rocketleague.css b/public_html/rocketleague/rocketleague.css new file mode 100644 index 0000000..ef98d55 --- /dev/null +++ b/public_html/rocketleague/rocketleague.css @@ -0,0 +1,52 @@ +.collapsible-body { + background-color: #fcfcfc; +} + +.titre-rank { + text-align: center; +} + +.text-rank { + text-align: center; +} + +.image-rank > img { + width: 80%; + display: block; + margin: 0 auto; +} + +.carousel { + margin-top: 5%; + border: 2px solid white; + border-radius: 3px; +} + +.panel1 { + background: url("https://i.imgur.com/RJg9wRb.jpg") center; +} + +.panel2 { + background: url("https://gunxblast.fr/wp-content/uploads/2015/10/rocketleague.jpg") center; +} + +.panel3 { + background: url("https://images4.alphacoders.com/607/607402.jpg") center; +} + +.panel4 { + background: url("https://images.pushsquare.com/news/2015/05/interview_topping_the_ps4_rocket_league_with_developer_psyonix/attachment/1/original.jpg") center; +} + +.panel1, .panel2, .panel3, .panel4 { + text-shadow: 3px 2px 8px rgba(0, 0, 0, 0.99); + +} + +div.image-rank > img { + transition: all 0.4s cubic-bezier(.8,1.8,.75,.75); +} + +div.image-rank > img:hover { + transform: rotate(5deg) scale(1.1); +} \ No newline at end of file diff --git a/public_html/rocketleague/rocketleague.js b/public_html/rocketleague/rocketleague.js new file mode 100644 index 0000000..f9f8a2c --- /dev/null +++ b/public_html/rocketleague/rocketleague.js @@ -0,0 +1,38 @@ +$(document).ready(function(){ + + $("#progressRank").hide(); + + $('.carousel.carousel-slider').carousel({full_width: true}); + + $("#affichRank").click(function(){ + + $.ajax({ + url: 'traitement.php', + type: 'GET', + dataType: 'html', + success: + function(donnees, status, xhr) + { + $("#classement").html(donnees); + $('.collapsible').collapsible({ + accordion : false // A setting that changes the collapsible behavior to expandable instead of the default accordion style + }); + }, + error: + function(xhr, status, error) + { + alert("param : " + xhr.responseText); + alert("status : " + status); + alert("error : " + error); + } + }); + }); +}); + +$(document).ajaxStart(function(){ + $("#progressRank").show(); +}); + +$(document).ajaxStop(function(){ + $("#progressRank").hide(); +}); \ No newline at end of file diff --git a/public_html/rocketleague/traitement.php b/public_html/rocketleague/traitement.php new file mode 100644 index 0000000..c0e82fd --- /dev/null +++ b/public_html/rocketleague/traitement.php @@ -0,0 +1,105 @@ +query("SELECT pseudo, steam_id FROM rl_general;"); + +$affichageDonnees = "
              "; + +while($donnee = $req->fetch()) +{ + $pseudo = $donnee['pseudo']; + $steamid = $donnee['steam_id']; + + $req2 = $bdd->query("SELECT rank, division, rating, matches FROM rl_solo WHERE pseudo = '$pseudo';"); + + $affichRanks = "
              "; + + while($donnee2 = $req2->fetch()) + { + $soloRating = $donnee2['rating']; + $soloMatches = $donnee2['matches']; + $rank = $donnee2['rank']; + + $req3 = $bdd->query("SELECT url FROM rl_img WHERE name = '$rank';"); + $donnee3 = $req3->fetch(); + $url = $donnee3['url']; + $division = $donnee2['division']; + + $affichRanks .= "
              Solo
              \"$rank\"
              $division
              $soloRating rating
              $soloMatches matches
              "; + } + + $req2 = $bdd->query("SELECT rank, division, rating, matches FROM rl_doubles WHERE pseudo = '$pseudo';"); + + while($donnee2 = $req2->fetch()) + { + $doubleRating = $donnee2['rating']; + $doubleMatches = $donnee2['matches']; + $rank = $donnee2['rank']; + + $req3 = $bdd->query("SELECT url FROM rl_img WHERE name = '$rank';"); + $donnee3 = $req3->fetch(); + $url = $donnee3['url']; + $division = $donnee2['division']; + + + $affichRanks .= "
              Doubles
              \"$rank\"
              $division
              $doubleRating rating
              $doubleMatches matches
              "; + } + + $req2 = $bdd->query("SELECT rank, division, rating, matches FROM rl_solo_standard WHERE pseudo = '$pseudo';"); + + while($donnee2 = $req2->fetch()) + { + $soloStandardRating = $donnee2['rating']; + $soloStandardMatches = $donnee2['matches']; + $rank = $donnee2['rank']; + + $req3 = $bdd->query("SELECT url FROM rl_img WHERE name = '$rank';"); + $donnee3 = $req3->fetch(); + $url = $donnee3['url']; + $division = $donnee2['division']; + + + $affichRanks .= "
              Solo Standard
              \"$rank\"
              $division
              $soloStandardRating rating
              $soloStandardMatches matches
              "; + } + + $req2 = $bdd->query("SELECT rank, division, rating, matches FROM rl_standard WHERE pseudo = '$pseudo';"); + + while($donnee2 = $req2->fetch()) + { + $standardRating = $donnee2['rating']; + $standardMatches = $donnee2['matches']; + $rank = $donnee2['rank']; + + $req3 = $bdd->query("SELECT url FROM rl_img WHERE name = '$rank';"); + $donnee3 = $req3->fetch(); + $url = $donnee3['url']; + $division = $donnee2['division']; + + + $affichRanks .= "
              Standard
              \"$rank\"
              $division
              $standardRating rating
              $standardMatches matches
              "; + } + + $moyenne = ($soloRating + $doubleRating + $soloStandardRating + $standardRating) / 4; + $matches = $soloMatches + $doubleMatches + $soloStandardMatches + $standardMatches; + + $pseudo = strtoupper($pseudo); + $key = "F1E51986EA8980C6145EA5DED117917A"; + $imgfile = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $steamid . '&format=json'); + $reponse = json_decode($imgfile, true); + $imgurl = $reponse['response']['players'][0]['avatar']; + + $affichHeader = "
              • \"$pseudo\"$pseudo

                $moyenne rating moyen
                $matches matches totaux

              "; + + $affichTotal = "
            • " . $affichHeader . $affichRanks . "
            • "; + + $affichageDonnees .= $affichTotal; +} + +$affichageDonnees .= "
            "; + +echo $affichageDonnees; + +?> \ No newline at end of file diff --git a/public_html/soundbox/index.php b/public_html/soundbox/index.php new file mode 100644 index 0000000..88a6ee2 --- /dev/null +++ b/public_html/soundbox/index.php @@ -0,0 +1,54 @@ + + + + + + + RASPSNIR - SOUNDBOX + + + + + +
            +
            +
            +
            +
            +

            SNIR Soundbox

            +

            +
            +
            + play_arrow
            + HA +
            +
            + play_arrow
            + NICE +
            +
            + play_arrow
            + QU'EST-CE QUE C'EST QUE CE TRUC ? +
            +
            +
            +
            + play_arrow
            + WHAT THE FUCK ?! +
            +
            + play_arrow
            + OH PUTAIN ! +
            +
            +
            +
            +
            +
            +
            + + + + + + diff --git a/public_html/soundbox/snirSoundbox.js b/public_html/soundbox/snirSoundbox.js new file mode 100644 index 0000000..2c0f45a --- /dev/null +++ b/public_html/soundbox/snirSoundbox.js @@ -0,0 +1,34 @@ +var soundbox = new SoundBox(); +soundbox.load("ha", "sound/ha.mp3"); +soundbox.load("melissandre", "sound/melissandre.mp3"); +soundbox.load("nice", "sound/nice.mp3"); +soundbox.load("teub", "sound/teub.mp3"); +soundbox.load("pute", "sound/pute.mp3"); +soundbox.load("truc", "sound/truc.mp3"); +soundbox.load("wtf", "sound/wtf.mp3"); +soundbox.load("ohputain", "sound/ohputain.mp3"); + +$("#ha").click(function(){ + soundbox.play("ha"); +}); +$("#melissandre").click(function(){ + soundbox.play("melissandre"); +}); +$("#nice").click(function(){ + soundbox.play("nice"); +}); +$("#teub").click(function(){ + soundbox.play("teub"); +}); +$("#pute").click(function(){ + soundbox.play("pute"); +}); +$("#truc").click(function(){ + soundbox.play("truc"); +}); +$("#wtf").click(function(){ + soundbox.play("wtf"); +}); +$("#ohputain").click(function(){ + soundbox.play("ohputain"); +}); \ No newline at end of file diff --git a/public_html/soundbox/sound/ha.mp3 b/public_html/soundbox/sound/ha.mp3 new file mode 100644 index 0000000..4e6a03c Binary files /dev/null and b/public_html/soundbox/sound/ha.mp3 differ diff --git a/public_html/soundbox/sound/melissandre.mp3 b/public_html/soundbox/sound/melissandre.mp3 new file mode 100644 index 0000000..5abde8f Binary files /dev/null and b/public_html/soundbox/sound/melissandre.mp3 differ diff --git a/public_html/soundbox/sound/nice.mp3 b/public_html/soundbox/sound/nice.mp3 new file mode 100644 index 0000000..d677637 Binary files /dev/null and b/public_html/soundbox/sound/nice.mp3 differ diff --git a/public_html/soundbox/sound/ohputain.mp3 b/public_html/soundbox/sound/ohputain.mp3 new file mode 100644 index 0000000..0c4a65c Binary files /dev/null and b/public_html/soundbox/sound/ohputain.mp3 differ diff --git a/public_html/soundbox/sound/pute.mp3 b/public_html/soundbox/sound/pute.mp3 new file mode 100644 index 0000000..d0f9ca6 Binary files /dev/null and b/public_html/soundbox/sound/pute.mp3 differ diff --git a/public_html/soundbox/sound/teub.mp3 b/public_html/soundbox/sound/teub.mp3 new file mode 100644 index 0000000..1fb9547 Binary files /dev/null and b/public_html/soundbox/sound/teub.mp3 differ diff --git a/public_html/soundbox/sound/truc.mp3 b/public_html/soundbox/sound/truc.mp3 new file mode 100644 index 0000000..9d07377 Binary files /dev/null and b/public_html/soundbox/sound/truc.mp3 differ diff --git a/public_html/soundbox/sound/wtf.mp3 b/public_html/soundbox/sound/wtf.mp3 new file mode 100644 index 0000000..11bf8d2 Binary files /dev/null and b/public_html/soundbox/sound/wtf.mp3 differ diff --git a/public_html/soundbox/soundbox.js b/public_html/soundbox/soundbox.js new file mode 100644 index 0000000..6d4316b --- /dev/null +++ b/public_html/soundbox/soundbox.js @@ -0,0 +1,36 @@ +function SoundBox() { + this.sounds = {}; + this.sound_callbacks = {}; + this.load = function(sound_name, path) { + this.sounds[sound_name] = new Audio(path); + // reset the sound ready for the next playing + this.sounds[sound_name].addEventListener("ended", (function(event) { + event.target.currentTime = 0; + if(typeof this.sound_callbacks[sound_name] == "function") + { + this.sound_callbacks[sound_name](sound_name); + delete this.sound_callbacks[sound_name]; + } + }).bind(this)); + }; + + this.remove = function(sound_name) { + if(typeof this.sounds != "undefined") + delete this.sounds[sound_name]; + if(typeof this.sound_callbacks == "function") + delete this.sound_callbacks[sound_name]; + }; + + this.play = function(sound_name, callback) { + if(typeof this.sounds[sound_name] == "undefined") + { + console.error("Can't find sound called '" + sound_name + "'."); + return false; + } + + if(typeof callback == "function") + this.sound_callbacks[sound_name] = callback; + + this.sounds[sound_name].play(); + }; +} diff --git a/public_html/tetris/assets/blocks/custom/arrow.png b/public_html/tetris/assets/blocks/custom/arrow.png new file mode 100644 index 0000000..6afaad1 Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/arrow.png differ diff --git a/public_html/tetris/assets/blocks/custom/leftHook.png b/public_html/tetris/assets/blocks/custom/leftHook.png new file mode 100644 index 0000000..33e5506 Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/leftHook.png differ diff --git a/public_html/tetris/assets/blocks/custom/leftZag.png b/public_html/tetris/assets/blocks/custom/leftZag.png new file mode 100644 index 0000000..2e307a3 Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/leftZag.png differ diff --git a/public_html/tetris/assets/blocks/custom/line.png b/public_html/tetris/assets/blocks/custom/line.png new file mode 100644 index 0000000..43dafca Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/line.png differ diff --git a/public_html/tetris/assets/blocks/custom/rightHook.png b/public_html/tetris/assets/blocks/custom/rightHook.png new file mode 100644 index 0000000..583c7fa Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/rightHook.png differ diff --git a/public_html/tetris/assets/blocks/custom/rightZag.png b/public_html/tetris/assets/blocks/custom/rightZag.png new file mode 100644 index 0000000..ed2a00f Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/rightZag.png differ diff --git a/public_html/tetris/assets/blocks/custom/square.png b/public_html/tetris/assets/blocks/custom/square.png new file mode 100644 index 0000000..bc9a723 Binary files /dev/null and b/public_html/tetris/assets/blocks/custom/square.png differ diff --git a/public_html/tetris/blockrain.css b/public_html/tetris/blockrain.css new file mode 100644 index 0000000..160bc64 --- /dev/null +++ b/public_html/tetris/blockrain.css @@ -0,0 +1,163 @@ +.blockrain-game-holder { + position: relative; + padding: 0; + margin: 0; + color: #ffffff; + font-size: 18px; + line-height: 140%; +} + +/* Touch Controls */ +.blockrain-touch { + position: absolute; + width: 50px; + height: 50px; + display: block; + border-radius: 100%; + border: 1px solid white; + background: rgba(255,255,255,0.2); + z-index: 10; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + line-height: 50px; + text-align: center; +} +.blockrain-touch:active { + background: rgba(255,255,255,0.3); +} + +.blockrain-touch-left { + left: -60px; + bottom: 10px; +} +.blockrain-touch-left::after { + content: "<"; +} +.blockrain-touch-right { + right: -60px; + bottom: 10px; +} +.blockrain-touch-right::after { + content: ">"; +} + +.blockrain-touch-rotate-left { + left: -60px; + bottom: 80px; +} +.blockrain-touch-rotate-left::after { + content: ""; +} + +.blockrain-touch-drop { + left: 50%; + margin-left: -25px; + bottom: -60px; +} +.blockrain-touch-drop::after { + content: "."; +} + +/* Buttons */ +.blockrain-btn { + position: relative; + display: inline-block; + background: none; + color: #ffffff; + text-decoration: none; + border: 2px solid #ffffff; + padding: 15px 30px; + font-size: 18px; + text-align: center; + cursor: default; +} +.blockrain-btn::before { + position: absolute; + content: ""; + top: 100%; + left: 0px; + bottom: 0px; + right: 0px; + border: 2px solid #ffffff; + border-top: none; + border-right: none; + transition: all 0.2s ease; +} +.blockrain-btn::after { + position: absolute; + content: ""; + top: 0px; + left: 100%; + bottom: 0px; + right: 0px; + border: 2px solid #ffffff; + border-left: none; + border-bottom: none; + transition: all 0.2s ease; +} + +.blockrain-btn:hover::before { + left: 5px; + bottom: -8px; + right: -8px; +} +.blockrain-btn:hover::after { + top: 5px; + bottom: -8px; + right: -8px; +} + + +/* Score */ +.blockrain-score-holder { + position: absolute; + top: 20px; + right: 20px; + text-align: right; +} +.blockrain-score-msg { + font-size: 14px; + line-height: 100%; + margin-bottom: 0.2em; +} +.blockrain-score-num { + font-size: 20px; + font-weight: bold; +} + +/* Menu */ +.blockrain-start-holder, .blockrain-game-over-holder { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + background: rgba(0,0,0,0.8); + text-align: center; +} +.blockrain-start, .blockrain-game-over { + position: absolute; + top: 50%; + width: 100%; + transform: translateY(-50%); +} + +.blockrain-start-msg, .blockrain-game-over-msg { + font-size: 18px; + margin-bottom: 30px; +} + diff --git a/public_html/tetris/blockrain.jquery.js b/public_html/tetris/blockrain.jquery.js new file mode 100644 index 0000000..5aeb662 --- /dev/null +++ b/public_html/tetris/blockrain.jquery.js @@ -0,0 +1,1693 @@ +/*! + * BlockRain.js 0.2.0 + * jQuery plugin that lets you put a playable (and configurable) game of Tetris in your site or just leave it in auto in the background. + * http://aerolab.github.io/blockrain.js/ + * + * Copyright (c) 2015 Aerolab + * + * Released under the MIT license + * http://aerolab.github.io/blockrain.js/LICENSE.txt + */ + // jQuery Widget +(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=0,i=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var s,n,a=i.call(arguments,1),o=0,r=a.length;r>o;o++)for(s in a[o])n=a[o][s],a[o].hasOwnProperty(s)&&void 0!==n&&(t[s]=e.isPlainObject(n)?e.isPlainObject(t[s])?e.widget.extend({},t[s],n):e.widget.extend({},n):n);return t},e.widget.bridge=function(t,s){var n=s.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=i.call(arguments,1),h=this;return a=!o&&r.length?e.widget.extend.apply(null,[a].concat(r)):a,o?this.each(function(){var i,s=e.data(this,n);return"instance"===a?(h=s,!1):s?e.isFunction(s[a])&&"_"!==a.charAt(0)?(i=s[a].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var t=e.data(this,n);t?(t.option(a||{}),t._init&&t._init()):e.data(this,n,new s(a,this))}),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
            ",options:{disabled:!1,create:null},_createWidget:function(i,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=t++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget}); +((function ( $ ) { + + "use strict"; + + $.widget('aerolab.blockrain', { + + options: { + autoplay: false, // Let a bot play the game + autoplayRestart: true, // Restart the game automatically once a bot loses + showFieldOnStart: true, // Show a bunch of random blocks on the start screen (it looks nice) + theme: 'candy', // The theme name or a theme object + blockWidth: 10, // How many blocks wide the field is (The standard is 10 blocks) + autoBlockWidth: false, // The blockWidth is dinamically calculated based on the autoBlockSize. Disabled blockWidth. Useful for responsive backgrounds + autoBlockSize: 24, // The max size of a block for autowidth mode + difficulty: 'normal', // Difficulty (normal|nice|evil). + speed: 20, // The speed of the game. The higher, the faster the pieces go. + asdwKeys: true, // Enable ASDW keys + + // Copy + playText: 'Jouons à tetris !', + playButtonText: 'Jouer', + gameOverText: 'Perdu !', + restartButtonText: 'Rejouer', + scoreText: 'Score', + + // Basic Callbacks + onStart: function(){}, + onRestart: function(){}, + onGameOver: function(score){}, + + // When a block is placed + onPlaced: function(){}, + // When a line is made. Returns the number of lines, score assigned and total score + onLine: function(lines, scoreIncrement, score){} + }, + + + /** + * Start/Restart Game + */ + start: function() { + this._doStart(); + this.options.onStart.call(this.element); + }, + + restart: function() { + this._doStart(); + this.options.onRestart.call(this.element); + }, + + gameover: function() { + this.showGameOverMessage(); + this._board.gameover = true; + this.options.onGameOver.call(this.element, this._filled.score); + }, + + _doStart: function() { + this._filled.clearAll(); + this._filled._resetScore(); + this._board.cur = this._board.nextShape(); + this._board.started = true; + this._board.gameover = false; + this._board.dropDelay = 5; + this._board.render(true); + this._board.animate(); + + this._$start.fadeOut(150); + this._$gameover.fadeOut(150); + this._$score.fadeIn(150); + }, + + + pause: function() { + this._board.paused = true; + }, + + resume: function() { + this._board.paused = false; + }, + + autoplay: function(enable) { + if( typeof enable !== 'boolean' ){ enable = true; } + + // On autoplay, start the game right away + this.options.autoplay = enable; + if( enable && ! this._board.started ) { + this._doStart(); + } + this._setupControls( ! enable ); + this._setupTouchControls( ! enable ); + }, + + controls: function(enable) { + if( typeof enable !== 'boolean' ){ enable = true; } + this._setupControls(enable); + }, + + touchControls: function(enable) { + if( typeof enable !== 'boolean' ){ enable = true; } + this._setupTouchControls(enable); + }, + + score: function(newScore) { + if( typeof newScore !== 'undefined' && parseInt(newScore) >= 0 ) { + this._filled.score = parseInt(newScore); + this._$scoreText.text(this._filled_score); + } + return this._filled.score; + }, + + freesquares: function() { + return this._filled.getFreeSpaces(); + }, + + showStartMessage: function() { + this._$start.show(); + }, + + showGameOverMessage: function() { + this._$gameover.show(); + }, + + /** + * Update the sizes of the renderer (this makes the game responsive) + */ + updateSizes: function() { + + this._PIXEL_WIDTH = this.element.innerWidth(); + this._PIXEL_HEIGHT = this.element.innerHeight(); + + this._BLOCK_WIDTH = this.options.blockWidth; + this._BLOCK_HEIGHT = Math.floor(this.element.innerHeight() / this.element.innerWidth() * this._BLOCK_WIDTH); + + this._block_size = Math.floor(this._PIXEL_WIDTH / this._BLOCK_WIDTH); + this._border_width = 2; + + // Recalculate the pixel width and height so the canvas always has the best possible size + this._PIXEL_WIDTH = this._block_size * this._BLOCK_WIDTH; + this._PIXEL_HEIGHT = this._block_size * this._BLOCK_HEIGHT; + + this._$canvas .attr('width', this._PIXEL_WIDTH) + .attr('height', this._PIXEL_HEIGHT); + }, + + + theme: function(newTheme){ + + if( typeof newTheme === 'undefined' ) { + return this.options.theme || this._theme; + } + + // Setup the theme properly + if( typeof newTheme === 'string' ) { + this.options.theme = newTheme; + this._theme = $.extend(true, {}, BlockrainThemes[newTheme]); + } + else { + this.options.theme = null; + this._theme = newTheme; + } + + if( typeof this._theme === 'undefined' || this._theme === null ) { + this._theme = $.extend(true, {}, BlockrainThemes['retro']); + this.options.theme = 'retro'; + } + + if( isNaN(parseInt(this._theme.strokeWidth)) || typeof parseInt(this._theme.strokeWidth) !== 'number' ) { + this._theme.strokeWidth = 2; + } + + // Load the image assets + this._preloadThemeAssets(); + + if( this._board !== null ) { + if( typeof this._theme.background === 'string' ) { + this._$canvas.css('background-color', this._theme.background); + } + this._board.render(); + } + }, + + + // Theme + _theme: { + + }, + + + // UI Elements + _$game: null, + _$canvas: null, + _$gameholder: null, + _$start: null, + _$gameover: null, + _$score: null, + _$scoreText: null, + + + // Canvas + _canvas: null, + _ctx: null, + + + // Initialization + _create: function() { + + var game = this; + + this.theme(this.options.theme); + + this._createHolder(); + this._createUI(); + + this._refreshBlockSizes(); + + this.updateSizes(); + + $(window).resize(function(){ + //game.updateSizes(); + }); + + this._SetupShapeFactory(); + this._SetupFilled(); + this._SetupInfo(); + this._SetupBoard(); + + this._info.init(); + this._board.init(); + + var renderLoop = function(){ + requestAnimationFrame(renderLoop); + game._board.render(); + }; + renderLoop(); + + if( this.options.autoplay ) { + this.autoplay(true); + this._setupTouchControls(false); + } else { + this._setupControls(true); + this._setupTouchControls(false); + } + + }, + + _checkCollisions: function(x, y, blocks, checkDownOnly) { + // x & y should be aspirational values + var i = 0, len = blocks.length, a, b; + for (; i= this._BLOCK_HEIGHT || this._filled.check(a, b)) { + return true; + } else if (!checkDownOnly && a < 0 || a >= this._BLOCK_WIDTH) { + return true; + } + } + return false; + }, + + + _board: null, + _info: null, + _filled: null, + + + /** + * Draws the background + */ + _drawBackground: function() { + + if( typeof this._theme.background !== 'string' ) { + return; + } + + if( this._theme.backgroundGrid instanceof Image ) { + + // Not loaded + if( this._theme.backgroundGrid.width === 0 || this._theme.backgroundGrid.height === 0 ){ return; } + + this._ctx.globalAlpha = 1.0; + + for( var x=0; x maxx) { maxx = blocks[i]; } + if (blocks[i+1] < miny) { miny = blocks[i+1]; } + if (blocks[i+1] > maxy) { maxy = blocks[i+1]; } + } + return { + left: minx, + right: maxx, + top: miny, + bottom: maxy, + width: maxx - minx, + height: maxy - miny + }; + } + }); + + return this.init(); + }; + + this._shapeFactory = { + line: function() { + return new Shape(game, game._shapes.line, false, 'line'); + }, + square: function() { + return new Shape(game, game._shapes.square, false, 'square'); + }, + arrow: function() { + return new Shape(game, game._shapes.arrow, false, 'arrow'); + }, + leftHook: function() { + return new Shape(game, game._shapes.leftHook, false, 'leftHook'); + }, + rightHook: function() { + return new Shape(game, game._shapes.rightHook, false, 'rightHook'); + }, + leftZag: function() { + return new Shape(game, game._shapes.leftZag, false, 'leftZag'); + }, + rightZag: function() { + return new Shape(game, game._shapes.rightZag, false, 'rightZag'); + } + }; + }, + + + _SetupFilled: function() { + var game = this; + if( this._filled !== null ){ return; } + + this._filled = { + data: new Array(game._BLOCK_WIDTH * game._BLOCK_HEIGHT), + score: 0, + toClear: {}, + check: function(x, y) { + return this.data[this.asIndex(x, y)]; + }, + add: function(x, y, blockType, blockVariation, blockIndex, blockOrientation) { + if (x >= 0 && x < game._BLOCK_WIDTH && y >= 0 && y < game._BLOCK_HEIGHT) { + this.data[this.asIndex(x, y)] = { + blockType: blockType, + blockVariation: blockVariation, + blockIndex: blockIndex, + blockOrientation: blockOrientation + }; + } + }, + getFreeSpaces: function() { + var count = 0; + for( var i=0; i=0; i--) { + this.data[i] = (i >= game._BLOCK_WIDTH ? this.data[i-game._BLOCK_WIDTH] : undefined); + } + }, + checkForClears: function() { + var startLines = game._board.lines; + var rows = [], i, len, count, mod; + + for (i=0, len=this.data.length; i 1 ) { + game._board.dropDelay *= 0.9; + } + } + + var clearedLines = game._board.lines - startLines; + this._updateScore(clearedLines); + }, + _updateScore: function(numLines) { + if( numLines <= 0 ) { return; } + var scores = [0,400,1000,3000,12000]; + if( numLines >= scores.length ){ numLines = scores.length-1 } + + this.score += scores[numLines]; + game._$scoreText.text(this.score); + + game.options.onLine.call(game.element, numLines, scores[numLines], this.score); + }, + _resetScore: function() { + this.score = 0; + game._$scoreText.text(this.score); + }, + draw: function() { + for (var i=0, len=this.data.length, row, color; i= this.dropDelay) || + (game.options.autoplay) || + (this.holding.drop && (now - this.holding.drop) >= this.holdingThreshold) ) { + drop = true; + moved = true; + this.dropCount = 0; + } + + // Move Left by holding + if( this.holding.left && (now - this.holding.left) >= this.holdingThreshold ) { + moved = true; + this.cur.moveLeft(); + } + + // Move Right by holding + if( this.holding.right && (now - this.holding.right) >= this.holdingThreshold ) { + moved = true; + this.cur.moveRight(); + } + + // Test for a collision, add the piece to the filled blocks and fetch the next one + if (drop) { + var cur = this.cur, x = cur.x, y = cur.y, blocks = cur.getBlocks(); + if (game._checkCollisions(x, y+1, blocks, true)) { + drop = false; + var blockIndex = 0; + for (var i=0; i 0) { + return blockTheme[0]; + } else { + return null; + } + } else { + return blockTheme; + } + } + + if( typeof falling !== 'boolean' ){ falling = true; } + if( falling ) { + if( typeof game._theme.primary === 'string' && game._theme.primary !== '' ) { + return game._theme.primary; + } else if( typeof game._theme.blocks !== 'undefined' && game._theme.blocks !== null ) { + return getBlockVariation(game._theme.blocks[blockType], blockVariation); + } else { + return getBlockVariation(game._theme.complexBlocks[blockType], blockVariation); + } + } else { + if( typeof game._theme.secondary === 'string' && game._theme.secondary !== '' ) { + return game._theme.secondary; + } else if( typeof game._theme.blocks !== 'undefined' && game._theme.blocks !== null ) { + return getBlockVariation(game._theme.blocks[blockType], blockVariation); + } else { + return getBlockVariation(game._theme.complexBlocks[blockType], blockVariation); + } + } + } + + }; + + game._niceShapes = game._getNiceShapes(); + }, + + // Utility Functions + _randInt: function(a, b) { return a + Math.floor(Math.random() * (1 + b - a)); }, + _randSign: function() { return this._randInt(0, 1) * 2 - 1; }, + _randChoice: function(choices) { return choices[this._randInt(0, choices.length-1)]; }, + + + /** + * Find base64 encoded images and load them as image objects, which can be used by the canvas renderer + */ + _preloadThemeAssets: function() { + + var game = this; + + var hexColorcheck = new RegExp('^#[A-F0-9+]{3,6}', 'i'); + var base64check = new RegExp('^data:image/(png|gif|jpg);base64,', 'i'); + + var handleAssetLoad = function() { + // Rerender the board as soon as an asset loads + if( game._board ) { + game._board.render(true); + } + }; + + var loadAsset = function(src) { + var plainSrc = src; + if( ! hexColorcheck.test( plainSrc ) ) { + // It's an image + src = new Image(); + src.src = plainSrc; + src.onload = handleAssetLoad; + } else { + // It's a color + src = plainSrc; + } + return src; + }; + + var startAssetLoad = function(block) { + // Assets can be an array of variation so they can change color/design randomly + if( $.isArray(block) && block.length > 0 ) { + for( var i=0; i
            '); + this._$gameholder.css('position', 'relative').css('width', '100%').css('height', '100%'); + + this.element.html('').append(this._$gameholder); + + // Create the game canvas and context + this._$canvas = $(''); + if( typeof this._theme.background === 'string' ) { + this._$canvas.css('background-color', this._theme.background); + } + this._$gameholder.append(this._$canvas); + + this._canvas = this._$canvas.get(0); + this._ctx = this._canvas.getContext('2d'); + + }, + + + _createUI: function() { + + var game = this; + + // Score + game._$score = $( + '
            '+ + '
            '+ + '
            '+ this.options.scoreText +'
            '+ + '
            0
            '+ + '
            '+ + '
            ').hide(); + game._$scoreText = game._$score.find('.blockrain-score-num'); + game._$gameholder.append(game._$score); + + // Create the start menu + game._$start = $( + '
            '+ + '
            '+ + '
            '+ this.options.playText +'
            '+ + ''+ this.options.playButtonText +''+ + '
            '+ + '
            ').hide(); + game._$gameholder.append(game._$start); + + game._$start.find('.blockrain-start-btn').click(function(event){ + event.preventDefault(); + game.start(); + }); + + // Create the game over menu + game._$gameover = $( + '
            '+ + '
            '+ + '
            '+ this.options.gameOverText +'
            '+ + ''+ this.options.restartButtonText +''+ + '
            '+ + '
            ').hide(); + game._$gameover.find('.blockrain-game-over-btn').click(function(event){ + event.preventDefault(); + game.restart(); + }); + game._$gameholder.append(game._$gameover); + + this._createControls(); + }, + + + _createControls: function() { + + var game = this; + + game._$touchLeft = $('').appendTo(game._$gameholder); + game._$touchRight = $('').appendTo(game._$gameholder); + game._$touchRotateRight = $('').appendTo(game._$gameholder); + game._$touchRotateLeft = $('').appendTo(game._$gameholder); + game._$touchDrop = $('').appendTo(game._$gameholder); + + }, + + + _refreshBlockSizes: function() { + + if( this.options.autoBlockWidth ) { + this.options.blockWidth = Math.ceil( this.element.width() / this.options.autoBlockSize ); + } + + }, + + + _getNiceShapes: function() { + /* + * Things I need for this to work... + * - ability to test each shape with this._filled data + * - maybe give empty spots scores? and try to maximize the score? + */ + + var game = this; + + var shapes = {}, + attr; + + for( var attr in this._shapeFactory ) { + shapes[attr] = this._shapeFactory[attr](); + } + + function scoreBlocks(possibles, blocks, x, y, filled, width, height) { + var i, len=blocks.length, score=0, bottoms = {}, tx, ty, overlaps; + + // base score + for (i=0; i best_score_for_shape) { + best_score_for_shape = score; + best_orientation_for_shape = i; + best_x_for_shape = x; + } + break; + } + } + } + } + + if ((evil && best_score_for_shape < best_score) || + (!evil && best_score_for_shape > best_score)) { + best_shape = shape; + best_score = best_score_for_shape; + best_orientation = best_orientation_for_shape; + best_x = best_x_for_shape; + } + } + + best_shape.best_orientation = best_orientation; + best_shape.best_x = best_x; + + return best_shape; + }; + + func.no_preview = true; + return func; + }, + + + _randomShapes: function() { + // Todo: The shapefuncs should be cached. + var shapeFuncs = []; + $.each(this._shapeFactory, function(k,v) { shapeFuncs.push(v); }); + + return this._randChoice(shapeFuncs); + }, + + + /** + * Controls + */ + _setupControls: function(enable) { + + var game = this; + + var moveLeft = function(start) { + if( ! start ) { game._board.holding.left = null; return; } + if( ! game._board.holding.left ) { + game._board.cur.moveLeft(); + game._board.holding.left = Date.now(); + game._board.holding.right = null; + } + } + var moveRight = function(start) { + if( ! start ) { game._board.holding.right = null; return; } + if( ! game._board.holding.right ) { + game._board.cur.moveRight(); + game._board.holding.right = Date.now(); + game._board.holding.left = null; + } + } + var drop = function(start) { + if( ! start ) { game._board.holding.drop = null; return; } + if( ! game._board.holding.drop ) { + game._board.cur.drop(); + game._board.holding.drop = Date.now(); + } + } + var rotateLeft = function() { + game._board.cur.rotate('left'); + } + var rotateRight = function() { + game._board.cur.rotate('right'); + } + + // Handlers: These are used to be able to bind/unbind controls + var handleKeyDown = function(evt) { + if( ! game._board.cur ) { return true; } + var caught = false; + + caught = true; + if (game.options.asdwKeys) { + switch(evt.keyCode) { + case 65: /*a*/ moveLeft(true); break; + case 68: /*d*/ moveRight(true); break; + case 83: /*s*/ drop(true); break; + case 87: /*w*/ game._board.cur.rotate('right'); break; + } + } + switch(evt.keyCode) { + case 37: /*left*/ moveLeft(true); break; + case 39: /*right*/ moveRight(true); break; + case 40: /*down*/ drop(true); break; + case 38: /*up*/ game._board.cur.rotate('right'); break; + case 88: /*x*/ game._board.cur.rotate('right'); break; + case 90: /*z*/ game._board.cur.rotate('left'); break; + default: caught = false; + } + if (caught) evt.preventDefault(); + return !caught; + }; + + + var handleKeyUp = function(evt) { + if( ! game._board.cur ) { return true; } + var caught = false; + + caught = true; + if (game.options.asdwKeys) { + switch(evt.keyCode) { + case 65: /*a*/ moveLeft(false); break; + case 68: /*d*/ moveRight(false); break; + case 83: /*s*/ drop(false); break; + } + } + switch(evt.keyCode) { + case 37: /*left*/ moveLeft(false); break; + case 39: /*right*/ moveRight(false); break; + case 40: /*down*/ drop(false); break; + default: caught = false; + } + if (caught) evt.preventDefault(); + return !caught; + }; + + function isStopKey(evt) { + var cfg = { + stopKeys: {37:1, 38:1, 39:1, 40:1} + }; + + var isStop = (cfg.stopKeys[evt.keyCode] || (cfg.moreStopKeys && cfg.moreStopKeys[evt.keyCode])); + if (isStop) evt.preventDefault(); + return isStop; + } + + function getKey(evt) { return 'safekeypress.' + evt.keyCode; } + + function keydown(evt) { + var key = getKey(evt); + $.data(this, key, ($.data(this, key) || 0) - 1); + return handleKeyDown.call(this, evt); + } + + function keyup(evt) { + $.data(this, getKey(evt), 0); + handleKeyUp.call(this, evt); + return isStopKey(evt); + } + + // Unbind everything by default + // Use event namespacing so we don't ruin other keypress events + $(document) .unbind('keydown.blockrain') + .unbind('keyup.blockrain'); + + if( ! game.options.autoplay ) { + if( enable ) { + $(document) .bind('keydown.blockrain', keydown) + .bind('keyup.blockrain', keyup); + } + } + }, + + + _setupTouchControls: function(enable) { + + var game = this; + + // Movements can be held for faster movement + var moveLeft = function(event){ + event.preventDefault(); + game._board.cur.moveLeft(); + game._board.holding.left = Date.now(); + game._board.holding.right = null; + game._board.holding.drop = null; + }; + var moveRight = function(event){ + event.preventDefault(); + game._board.cur.moveRight(); + game._board.holding.right = Date.now(); + game._board.holding.left = null; + game._board.holding.drop = null; + }; + var drop = function(event){ + event.preventDefault(); + game._board.cur.drop(); + game._board.holding.drop = Date.now(); + }; + var endMoveLeft = function(event){ + event.preventDefault(); + game._board.holding.left = null; + }; + var endMoveRight = function(event){ + event.preventDefault(); + game._board.holding.right = null; + }; + var endDrop = function(event){ + event.preventDefault(); + game._board.holding.drop = null; + }; + + // Rotations can't be held + var rotateLeft = function(event){ + event.preventDefault(); + game._board.cur.rotate('left'); + }; + var rotateRight = function(event){ + event.preventDefault(); + game._board.cur.rotate('right'); + }; + + // Unbind everything by default + game._$touchLeft.unbind('touchstart touchend click'); + game._$touchRight.unbind('touchstart touchend click'); + game._$touchRotateLeft.unbind('touchstart touchend click'); + game._$touchRotateRight.unbind('touchstart touchend click'); + game._$touchDrop.unbind('touchstart touchend click'); + + if( ! game.options.autoplay && enable ) { + game._$touchLeft.show().bind('touchstart click', moveLeft).bind('touchend', endMoveLeft); + game._$touchRight.show().bind('touchstart click', moveRight).bind('touchend', endMoveRight); + game._$touchDrop.show().bind('touchstart click', drop).bind('touchend', endDrop); + game._$touchRotateLeft.show().bind('touchstart click', rotateLeft); + game._$touchRotateRight.show().bind('touchstart click', rotateRight); + } else { + game._$touchLeft.hide(); + game._$touchRight.hide(); + game._$touchRotateLeft.hide(); + game._$touchRotateRight.hide(); + game._$touchDrop.hide(); + } + + } + + }); + +})(jQuery)); +/** + * Themes. You can add more custom themes to this object. + */ +window.BlockrainThemes = { + 'custom': { + background: '#040304', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAHHElEQVR4XsVZgZbkqgqkTO77//+dbuvtgQ7QcGwnO3PPZTPG1dhWASIxwP8OEcqTYhJ3ypsAuLqsB7KSNrQ14uMoXAXsnwNihoUDInKKbCdDf2YjPuL+KDRSyOpE1Q5k6JBJV7IJSfnvJUzf8RhyAOh9ADqN3vtz+am+zIXWHIK9l1D5ISuSTbv3aUAJZKfvmMYYBn3O6Y3W/lt2IFmmIHmbQDcCgOM4DCjJqeKsNgQAIe9ag13I4NNHoUWhomMn4BoiubXAqn27qAoNm9HLwhMAfQ10lgYxc5gqvgxcfuw8sdhMHKtD99IrGfCpkXZjBG9x9r8SizJ/JHF8Yww3hYszNDnz5uawDH3WsTESIZBcs6O5r36SVn4gmcFYJVmgSYZOMqmEdjf8vxV8riA4tG0Zo51qeeDQtQxhuP6hUmgYY/U/yu8JKYBVmGdZGznWhqBZoAefTTi7GYOY/jKHEPL57loObBU8zhL4z/P8UxbdN02sUzOSqKmlymZnCLckt2tdq41AOI8KyU4AQGfCrNEOkr0DPjxD767VBUls3qHNEfjdhdpWxa7++zkzVmMB+0PXcndy9yMogcwsd5fJAFzotccfgKBfArmukPKQQ8dCOvrGAXkNxBPekvMahyNbMZbfFFcDLcVPfgV8MoJOcgo2QcWDQZiNNh3lJ9IdaNRskCk0FMUZFJJhgTnpspxF3l5S/3UhuXgpq1EopxxQyX7V3pdB8ndxXo4aukmapDQaJAlSGGZzAu8bIdIDr/Lb6BnXTtgk/wLJnoCUbLSPR+PNTbAMmt3HCDPonnN/c0BrMU7MawAAmAQggOIweu9oGEUmiHLQBPxS+v2WSgDIwTgmjwrblgk1kBbtVId1p/453BAPR+5fJyKuQGQ49KLDWvnLSNQJse8e+SiunI/UcAQ5aTBo6ncj+HMLmGBH04WOqVkm+qPnQkwYBKR1GEpXcXOfpNVAOnSQmJS8euloqxd1fWLZUi2I4JCkvySWN/psMd8HDJhzyD/DdW5fBAFvIzvqKLsErOwcRkKUXT8D5CJdpkCvEG7Szz0r6qVFE6q0faCSxuV05kO8/GUBdOlNkL0wStgd/reRSgCE0FWPhoXfiS5Eg47P6CH8TBlSc+RSP31RCgjwytR5J0riVjsyh60AH3uVgKFPipkiQ/CBAyoUNsVvhE1HkL+SM6Gc6kW0QJrnSHENDa8J9jiYal07ND3uc75GAEkl4GWBkufc8hmsHYQeoUs3vb26TYfeoxBE6NBHxctbKwFV2eFvsdcU/2FdGsv/USX3nd01IfweWHx7i+qm6VmQ4ULBTAo+JrKjgHLXv386gveoiPIo1pEN5d4zyLVHnYYZYVkyjBAgmLUZzV3XPSHo6IMoe4p0U8Z6d/R7VRIoSwsINl5VzVSEXfdcL8P+gYPJD/CuEuAqus/FaQW70Vld/47EOiCawZRAiSBrZ+yooFy7+VG0yHcX4l8eTXLpQn0oIADxIUMBeoDtrsHW87EdsvtvbxgQSResFIHjRFZtj6KEX+ucgZ0D9+iL89avBCLvBMQ5RCUU3pOwvmVSwKwPMNWFoHvSTrXoCenqi8FwZMN7rYEOEN4bJnFBRcK4gi21nClKFOYZ7ZJLYxKwDRYEeXJs1tl92fv9tq/nQkguSVgF9FPonquwBi1ssdbxApQcgkvIAHbpdADKHsLw/C430332xJ8JYSJ6Z2emUHg6ehBCwB0JsQU1ENgmKz2WouXmWCUjKN4CYGOBqn4IWLlmxPTZuYUOh/Kqg6hnY/clDrbsh0jTsMe/lf0oflbRjYAlIiTXYRy3ImfbEN76xG+QT8c5KZPEVBKjKRgFY9vf4KTpkL2F1Ia6fK+2xTrvX5bmnO1Lvd6nkno8nxp6jkEBkOMNwi1GnS5MopWs7c6f9mMoKmlM4sDctT5VHo/Hi4DKgTF8LnLqPQbHLMNahn859fKCESuoLqtoBZC2zfj5LtHsun8+n19fX3/KOVXhyQLkyzknJylTcBw4j6GoHYCBLi/lNRKGC61fQZHA8yJe7AafzV3/oZJei5GjEC8ak4Q8XsobHFrJ2x9IYXtzjQAFpibC+kmUE3f6tJ4P0LGWU/c/Wi/ofYrzdR9G4eIqU54PhXoA42oXRi49BCNY2VCUPIgxiB47AYCC7HB8vgzBpAwgEVChSn2hiayfcZF8zikPOUXGIaBMDQBzUtEfA0Yg1Mp+YqU+eVVIRW8GiO8pIlNCGPfwnwg7RWiL+J+BEY3FK3wVTc7Hw9YPXaGkkDKZxAO0VTn1ojDaqaU1+lOqHuoVffkDducA9e4Th1sApnswouIEByhD5iRBe0TAMSzj85P8IAW3Rjp/prYL7E4CQu0IA033s1C/lUIO5QMBEQQOlHOhnogxciC+12k3l3DffqyXx01JP8p8CemsQ/9yGcwBFfk/Wqz6T1UU/3cAAAAASUVORK5CYII=', + complexBlocks: { + line: ['assets/blocks/custom/line.png', 'assets/blocks/custom/line.png'], + square: ['assets/blocks/custom/square.png'], + arrow: 'assets/blocks/custom/arrow.png', + rightHook:['assets/blocks/custom/rightHook.png'], + leftHook: 'assets/blocks/custom/leftHook.png', + rightZag: ['assets/blocks/custom/rightZag.png'], + leftZag: 'assets/blocks/custom/leftZag.png' + } + }, + 'candy': { + background: '#040304', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAHHElEQVR4XsVZgZbkqgqkTO77//+dbuvtgQ7QcGwnO3PPZTPG1dhWASIxwP8OEcqTYhJ3ypsAuLqsB7KSNrQ14uMoXAXsnwNihoUDInKKbCdDf2YjPuL+KDRSyOpE1Q5k6JBJV7IJSfnvJUzf8RhyAOh9ADqN3vtz+am+zIXWHIK9l1D5ISuSTbv3aUAJZKfvmMYYBn3O6Y3W/lt2IFmmIHmbQDcCgOM4DCjJqeKsNgQAIe9ag13I4NNHoUWhomMn4BoiubXAqn27qAoNm9HLwhMAfQ10lgYxc5gqvgxcfuw8sdhMHKtD99IrGfCpkXZjBG9x9r8SizJ/JHF8Yww3hYszNDnz5uawDH3WsTESIZBcs6O5r36SVn4gmcFYJVmgSYZOMqmEdjf8vxV8riA4tG0Zo51qeeDQtQxhuP6hUmgYY/U/yu8JKYBVmGdZGznWhqBZoAefTTi7GYOY/jKHEPL57loObBU8zhL4z/P8UxbdN02sUzOSqKmlymZnCLckt2tdq41AOI8KyU4AQGfCrNEOkr0DPjxD767VBUls3qHNEfjdhdpWxa7++zkzVmMB+0PXcndy9yMogcwsd5fJAFzotccfgKBfArmukPKQQ8dCOvrGAXkNxBPekvMahyNbMZbfFFcDLcVPfgV8MoJOcgo2QcWDQZiNNh3lJ9IdaNRskCk0FMUZFJJhgTnpspxF3l5S/3UhuXgpq1EopxxQyX7V3pdB8ndxXo4aukmapDQaJAlSGGZzAu8bIdIDr/Lb6BnXTtgk/wLJnoCUbLSPR+PNTbAMmt3HCDPonnN/c0BrMU7MawAAmAQggOIweu9oGEUmiHLQBPxS+v2WSgDIwTgmjwrblgk1kBbtVId1p/453BAPR+5fJyKuQGQ49KLDWvnLSNQJse8e+SiunI/UcAQ5aTBo6ncj+HMLmGBH04WOqVkm+qPnQkwYBKR1GEpXcXOfpNVAOnSQmJS8euloqxd1fWLZUi2I4JCkvySWN/psMd8HDJhzyD/DdW5fBAFvIzvqKLsErOwcRkKUXT8D5CJdpkCvEG7Szz0r6qVFE6q0faCSxuV05kO8/GUBdOlNkL0wStgd/reRSgCE0FWPhoXfiS5Eg47P6CH8TBlSc+RSP31RCgjwytR5J0riVjsyh60AH3uVgKFPipkiQ/CBAyoUNsVvhE1HkL+SM6Gc6kW0QJrnSHENDa8J9jiYal07ND3uc75GAEkl4GWBkufc8hmsHYQeoUs3vb26TYfeoxBE6NBHxctbKwFV2eFvsdcU/2FdGsv/USX3nd01IfweWHx7i+qm6VmQ4ULBTAo+JrKjgHLXv386gveoiPIo1pEN5d4zyLVHnYYZYVkyjBAgmLUZzV3XPSHo6IMoe4p0U8Z6d/R7VRIoSwsINl5VzVSEXfdcL8P+gYPJD/CuEuAqus/FaQW70Vld/47EOiCawZRAiSBrZ+yooFy7+VG0yHcX4l8eTXLpQn0oIADxIUMBeoDtrsHW87EdsvtvbxgQSResFIHjRFZtj6KEX+ucgZ0D9+iL89avBCLvBMQ5RCUU3pOwvmVSwKwPMNWFoHvSTrXoCenqi8FwZMN7rYEOEN4bJnFBRcK4gi21nClKFOYZ7ZJLYxKwDRYEeXJs1tl92fv9tq/nQkguSVgF9FPonquwBi1ssdbxApQcgkvIAHbpdADKHsLw/C430332xJ8JYSJ6Z2emUHg6ehBCwB0JsQU1ENgmKz2WouXmWCUjKN4CYGOBqn4IWLlmxPTZuYUOh/Kqg6hnY/clDrbsh0jTsMe/lf0oflbRjYAlIiTXYRy3ImfbEN76xG+QT8c5KZPEVBKjKRgFY9vf4KTpkL2F1Ia6fK+2xTrvX5bmnO1Lvd6nkno8nxp6jkEBkOMNwi1GnS5MopWs7c6f9mMoKmlM4sDctT5VHo/Hi4DKgTF8LnLqPQbHLMNahn859fKCESuoLqtoBZC2zfj5LtHsun8+n19fX3/KOVXhyQLkyzknJylTcBw4j6GoHYCBLi/lNRKGC61fQZHA8yJe7AafzV3/oZJei5GjEC8ak4Q8XsobHFrJ2x9IYXtzjQAFpibC+kmUE3f6tJ4P0LGWU/c/Wi/ofYrzdR9G4eIqU54PhXoA42oXRi49BCNY2VCUPIgxiB47AYCC7HB8vgzBpAwgEVChSn2hiayfcZF8zikPOUXGIaBMDQBzUtEfA0Yg1Mp+YqU+eVVIRW8GiO8pIlNCGPfwnwg7RWiL+J+BEY3FK3wVTc7Hw9YPXaGkkDKZxAO0VTn1ojDaqaU1+lOqHuoVffkDducA9e4Th1sApnswouIEByhD5iRBe0TAMSzj85P8IAW3Rjp/prYL7E4CQu0IA033s1C/lUIO5QMBEQQOlHOhnogxciC+12k3l3DffqyXx01JP8p8CemsQ/9yGcwBFfk/Wqz6T1UU/3cAAAAASUVORK5CYII=', + blocks: { + line: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACuklEQVR4Xi2MzW4cRRSFz/2p6p4eT2zjjE2MHBQWvAALNjwDS8SOFc/FIyCxQgh2LFHkBQgJyQo/wXKCEZ7x9E9VV93LBPNJ516dxXfo/U8+HTZ9uzrZympTjLo4DbtDiBpXSBGMocI5lkaMhKv0fz+LVX9P6ZuvvxqBby+3L3eJu6Zt27DL4qgIWW0KsxPC3Kjxz5fPT3z48csvtHSHd0C/1374RddPX/9xK6JdcjEutNfqFJMBsQat3By+i/7VxqJ6c/zd5avvn1+N7dl2V9Ad92M2ViI2ksyWSJ2QXQXc5/H25jYcHHKl1YYebcJqw/rW03OOzfr89NHbR8vH3Wq9Olofrddni+XhycXJhBSkKFLxWeHBZFFDVyD343Rzc/0XeYSXeXZIJaam2V9pLsBOtRIKYAorXqvAg8giaKsCKw1zJAGFbKhwtxrdG9E3BQxAIW1xyYUKUIwNxMAwDEwuSgA5iAw2l5ITOeE/GLRMihIOsnQZnKqOlWXRUWidyYkFpCxtCF1s8D+seBggYVYRhChkqqjmld3NKhhu1XKuKUf4g6egEitkvqc5ewo+3ZOVZJO4Q4OSEDGRRyAQkYH8QfMUCR07KS8DIsO8xhjcnUXnSv4GMRYShSUG2MFCeby/awOJFyvF3TU22ckk3E3FQjci+mJVggwz12rKVEvWOk3dwWpIr7ezrU4XZ+9ciBAxWCVlhDb2o5cZTgBR17R3w45hgg8/fu+Dj643adZVXzCmebsbp5T6fhr2L9W8z5xLNsyDpl2btrsXPynS9NvVVc28xzMLPDCUYbVUMy+TMgdinupCEapdvPv0lqGwjW9fHsXjF39eIzRpnFbLdiy918qCWmclnq3mcWhVnzw5v+83XYz0+LPP/8lL704NB3BBdbCDKlChAq8QgRvmGSFouyo3vz7Lr/8FMHqie3VCpNQAAAAASUVORK5CYII=', + square: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACfUlEQVR4Xh3LvY5cRRBA4VNV3ffe+fEaZARgWfBExEhEZEg8A69AgkC8AzEiICMgJCdAxggsGRuW3Z3dmenbXVWskT6d7MiXnz3qclu87esm1qW3NteRuqaCIAmQABwPvPU2NyeaUa6P159/9QV3l/HqlWqN41El0PaadEJAoZBKqS9+eybL/tvvvi8PrHA4ku33pz9v5rafKmc0I7QhbiGaJSikyeCh1T7OG6fMluOvP/5+8csb+/RxhUtlEXA5KUMpiEpWwZKU3D799Zl1CtpEjsoh++HRxUMBVhgry4yUXLvstnE8qWi/HZndTEwpppj5XLIg7fZ4+fJlb91jzSlGhjc2O7RMj995nApRIRW0BHRl9UXLona6PYiGGKpaa50qPtQ96/5BCgkpBKghpI7VJZK5bmYju5IxQkZONqtbu+txd5ZEQFI0KaRRJxEZY0wjh/dqKqbZ/z9tqmJIqpQSnaD8T9sYkGqWmuTIZHgoWYupKh4SqSQimqrJfeV1gTECF4NKmUHwDFRqNSuJjMTxFQANNKGUyTBxYqSX6J6USdc1BquYFhEMFEQCUvSeC5rheL/Y74kAvX/OPXRZojIkqHkaLpMwWdYJm1fHlZIJotdXN7tFtczvvfuB5MIyRZwQ11pora2BTKOvva3zPKtStpsKLNNmmcr53xtFMtLaGLSR61IKKaPHenO1L2+qThqrn5FvPuGjjz8s4x+NI6Ptdvtxckywo0cjstZZZfZhNhSWNuoPP/5Udhebc8+tbp4//zPd6dcaGtJtWtUiVkhTWSJkTn3y5P15M19ervL1p9UZFzX9zHYmO1Ph3KFQK+rkIBMScbY7DicOzn+QRoW5iamqhgAAAABJRU5ErkJggg==', + arrow: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACsklEQVR4XhWPu25bVxREZz/OuQ9RVKhXjBSu8gX5h+QD0udD8ilByjRpUqZxa6RxY8DuYlhwHhAc2qRIieK9vOfsvUMNBoPVrGLoh6+++7y7mbFfTNIVdShCxCGuAgE8tSilhOVWU6lrtPjPK33ffvvb6xd4KG9/+f1kenIYoAgOIc+AF9u5Rdteuvubty9LU168fqW9z7AFanr36uPZSOIgWHB1IJABKE0keSr3QdLolXitjw1n717++sfPP/7Ula6pfbYmeU7eaBybnzg6ewwpT8DW/vth2acFkzf9Pi0OOU1+/eVlM2/m14vZ+Rfz88t+Np+fnZ8tns1OL66vLss0FIughgppDumLzIpmYBrHz+uVsZVSsraorJoMQU5dOs3K3jaiSXGciNYoG3cQcbJjwiKC3Ny9ljhEEUlGBnh4IJwR+qQ6q7FbuMPBLEQCVjaYA0mYwcyIY6p5qYFQQqOexRMhHOqg6sV8mtiqQki51gSHV6YAMYMMxgIC2IOcBcIsQipBBCIjNqEQBWARjjAOHAtSh1eqk9bqLpBKQUSZE4ccIqpJFnWQiRSKypjUA1DgEDw5janNkgA4zKmGQtpgsNqhMoRCmRni4AgKJh6DB842TffENWWqU+m448eYje186GZT31nXo5EqPhUGIqoGwd1gtWFtRBeLxcXF1TydYh+td1E5lMdpOOxGr9bPOzdrtFGWk2lAg84e9/fYbGmsync0xD7mfkITgUMbJaKc26GOVn2sB61Gf958OE992wsoQjSSjBHUwEmlISTsxjEsOIsxP3v+/M3tey3wrRVh29wuA2Vo3Xoe3KP6Endhzh3v92NjKefcXZzETKxR+Sa+vt2s3/3z127YrYfN+mGz2m4+rT+tNuu77d3yfvn3+vbh8eH4bb3dLrer97c3q7L6H15gvODKB5u4AAAAAElFTkSuQmCC', + rightHook:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACqElEQVR4Xh3PO2tlZRSH8f9a73XvPTkTExl1dLAIKFpNY2Fl4UcT7G3FwmIaO3sbEfQjWAxDAkIORDHJyXFf3stayzC/9qke+ubrF0u7zqwfsJNFXEKtCAJriBGBoB0gNAZ5WIekcC0f+br8++3Pr1AP5Y/f6Xgfx4RqoB2kI27QgkYQw5BA2L95M+vTn379y0c2HI+Y5Ob6z3B/M/ZmlTieV7ISj9rXZ2n338NciEMedGshJacbZ9X16vK3H76vh/1paCOWiWvos5M1U9llLIebKeqz0zG4PmZ/dfl6XWc/9p4Ox/fMwnIcXrwL6ohPg54OZhYTUUc+w1YQ83z3kMadEKdp8EmE54cnKifTBLOr17cqtwIf4gAuKhUd8Lh4+TKPowjyOK1l8cxAm9nK2nWnsQeAyNtgldnClCLntkrRrTBcFyPjYRg8AEAY4JDhkhp7uOBIRbyqrmK+KcBm1qU30UbSxHcGnIGpKYk63dQxnC2sPcWo2slZUCCGYXPkkBnUqjcCSAGFsaOUQk5koqUqPFV5G2sDai+tG3vv6ZF3BojBzFrvpeij4KtDZTjPXTWGBA91uWJTo1WkqTAZoAbpT3ejd0YOBW1zoAHE/tG8FThm52KOLnDv1dA8DACTwbRU6TxSaX1WZII/1qBgwLvWtgN6ieQc2hC9hwLGTFS35eTJ7uOL5xxTkZI44l7BDGpwBke8FFCA9Pj2EAipHbd8Qre3fxOMDWykGryyM2Vv67JwmCJ7cQRRM6JXX+CrLz97/uHJ4bgHFUdKBi8B5gECLLAys4grAkr5Vt758ZdLTwhuPNvfHP7ZPzjrBAHYLBlChwPQ+jrtpq2UJv3i0/clni/Y03efYzxPvZdBkAzeAKATukENAoTA86ynZ3GrVQl3Eu/yJ/8D33mmeKR3Cz8AAAAASUVORK5CYII=', + leftHook: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACq0lEQVR4Xg3HO24mVRBH8X/Vrfv4ut02BjS8GSBAQuyCmE0gwSLICFgCBLASAhLiiQjQICFBMAMSFn63v+77qCp89EsO5U+/rus/0zQPPW8thXRQABLAjtHAAZ2gzGk2HRCG1YMPwgdf/fnXj1fX+O7732s/A0kzbwEUCW5Fgh8HGVdFTOn5H79NiZ/98rPATBVS8OzX5xTehYsxd3KFwXcGEljVOGVJ8a7W4Q4YT8sb33z70xdf/oB8HufzhjI0m2a3JLykuAyV4RGxrLVN5+f/3dxSKXJc59qfUk77djhdXhGx0/mMAg/rpm30bXq97Fp3su1mrMe19e46BLLw9Nb1w0WaZoO+fPmCNbTW3D1Fcjci77Cnn3wMhCBpWU7vuwqo3evgaar6QHRqfRXKhQiELFG1O6H3MZUyLpTIx24UMkNASbqZwZiN3AQsgKhZ6/VYR9OcDw/blg5xmKqPnIRBLQUZw4iIWQKydRcEcvLOOZ2A80Nv8SRv1iiHQWPXewbztm3MbObMYgpGCMwiwgwAIhJCAGBmjMD+KDJJThJzTI8TKZm5E9S7U3c0s6PrkVujvYbm0Qr1iceJ+GZ9772OMawNDNAgVm8cADcAQSgzCSiChZj8MRLwXCTPufQEC8SlVKPWNTJJ4BTDcds58tCaMsVoIQ8Nq2AgS97uVg2h7v29Dz86W86MGqB922F+djjsdbWE0eu233fbwF0opd57KYU43l5ewQ43N7d17CwUHJnlsl4QmUwkJJKZ5uXaLdBrnzl6EGbTbV2nVIiMuMU44EMwMjn76GMHeWAKhKuLvyXoC+F3IvXrfy9zmO/WKyUM6c1riWUY7btKiA+9UkyvPnk7KFMPtLz/uS9vrjVFLNqTUSEJNLN5hQL7gIXpsGytO0ekCduR/fg/hV+olVqSm3YAAAAASUVORK5CYII=', + rightZag: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACt0lEQVR4Xg3LOW6eVRQG4PcM937DP9hYlkgUQ6RQsAiEWAC7YCWUtGyAFqhpEHRI0CCBIjpHJBSxEhzkxP6H+93pHPz0D3358IsbuyY/XlCs7/YU5zjFZgdGp07BEDq4KXwA0PvuqIfDGbT0u69/+hZvr/DrH1gc1WENwUAGM3RDcXQGRbA9/e3nJPX3F5dqdY/ja8ztx++/+YhX5S6P47REODW2Pra+qsbOR5VFWwjHVPKJJF1FevPn019++O7jeYo3h5VG8Ua5OLnCh25T7+RwYfZavVz993q5OehccfImnV3nqdLjD54gTiDAF3cnEJrBAbZNSS//vTKP1FcTk0ppsfYzkpEt58Pls8vb29vTabDWYZJzjsqnJ+vHjx9tVvf3qG3QVpXJ0Y5L2xWmYbPt7W5WeK7RKUqICic7poQY6q4Fw2AUDSykUGUlQ0cUy3XUqCxm8Obe4SypVoRwOC7kLE5szIoBHsmlO6NJO3Qv5GEozI3IiE25K2EeLAiYADiBOwi51NLdCRrGcQ5xTLVUcg1BVeFszXtaWinkIAcALigQDwISby0Vq3dpR8IA2r1cKNfZRTq9F2c1iLuYqQcHg2Dmvbam08QUG1V07zASqDCLouSSE0tojCbGablFoMgkpMxht9QukvICASIXtNLy7rDDakVDeGepzpIUup1mlIZs5Dbo9OknnwEELGgZJgBhHHDYIx/v8/r98+d/P2cVVSOkitRPN9uXfz0j2rRSh1CZDKRmFomgnns62Wyvrq+ncTy2JJ/rRXv76vx04ymr83pci9gYRYISS4N3cgRKvYb15EHOHzy8fPaPgtMe8zHG5y8uH6y3wa7LPbNOIIkQRpCOZt7KzatHFx+Ww0Ki9NX8ZHWy7Sltchtz2aj32nicjZkpLr1m760vp5tN2e8jtHX0Yf4f3da+1L4oEEQAAAAASUVORK5CYII=', + leftZag: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACtElEQVR4Xg2Lu25cZRhF93f5L3OOPeOQmJuDhEIHDa/CC/B4SHSICqS0CERDE2MJAYKEmITEcewZz/nvH7O0taq16eTL++P66nhCDegOAEhghFYhDDM0hSgowQkKkDIwJi0pP/72G9j24vIi8S7nN34lYG1VyOKg0uVKFFIiY/XL+R8s977+6nvttBMkovTDz9/Np3G3fTlvYkoFJswzaxtya2haQ0nUdGa2PLY6GD/9+vjJ+Y+bD+K2vFxtrLS3cQq9t1rLwUZ7IpuOAmQQ8u9/PgFDWbG5708/jK/Ti9OzExErhYVU1TMrCZqV7fY2Or2+uQ5H7zgPMNQF5HL7+upZeFeHLU//etrraM2YedQBAXsnoPXHn8yrcHVzE0LICWoECTQf+SG19dRqK3tMUxSRZtkIZtqbsblW+vF8/Pzy1XoNvdthjDas7He7swdno+JkM21v997r6A1MIKNBwiCiXssqhNsbcAwQosPTeek1MzBa947NmnewYcGR8Oh1sZG8s5LvQoACaK0Yegi+965MNWXnxIAx0AdyWnqDMjuh1KoIkYGNUPqh0zHaYcpwoin1ZiBFjFBVEWLm1ppzTkQAsAQYQdwhTap+dBCRXzkW6g2lIpdqRkYE1v1+AZgEuiRo8G2YaCBo75ZylSCdiMnoYPVefO1k8AYm7rlAjUDi7/ZN18HIffbp5zFO22Vf0bzXfsBQUu4DIJ6P1/t/XowB9RGl4Xj94M62zy+vou2sDUySyhJjTDXpAeL9YFKXaxYnuoL2BRfnzxghj7YKm4liHkszGkOUjtxIYjKM9ncpTnPr4+HDj8j+U5/B5R5k/vfv344m6rfXHb3NSqKvdrs5xKUWeN95nUd69Oi9vpQI0PtfTAn7eE/eLF0Y92eUjrcDISBmrBjbgkrIDPFYCfoCLPgflXOjuIEFgMYAAAAASUVORK5CYII=' + } + }, + 'modern': { + background: '#000000', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=', + primary: null, + secondary: null, + stroke: null, + blocks: { + line: '#fa1e1e', + square: '#f1fa1e', + arrow: '#d838cb', + rightHook:'#f5821f', + leftHook: '#42c6f0', + rightZag: '#4bd838', + leftZag: '#fa1e1e' + } + }, + 'retro': { + background: '#000000', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=', + primary: null, + secondary: null, + stroke: '#000000', + innerStroke: '#000000', + blocks: { + line: '#fa1e1e', + square: '#f1fa1e', + arrow: '#d838cb', + rightHook:'#f5821f', + leftHook: '#42c6f0', + rightZag: '#4bd838', + leftZag: '#fa1e1e' + } + }, + 'monochrome': { + background: '#000000', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=', + primary: '#ffffff', + secondary: '#ffffff', + stroke: '#000000', + innerStroke: '#000000' + }, + 'aerolab': { + background: '#ffffff', + primary: '#ff7b00', + secondary: '#000000' + }, + 'gameboy': { + background: '#C4CFA1', + primary: null, + secondary: null, + stroke: '#414141', + innerStroke: '#414141', + innerSquare: '#000000', + blocks: { + line: '#88926A', + square: '#585E44', + arrow: '#A4AC8C', + rightHook:'#6B7353', + leftHook: '#6B7353', + rightZag: '#595F45', + leftZag: '#595F45' + } + }, + 'vim': { + background: '#000000', + backgroundGrid: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=', + primary: '#C2FFAE', + secondary: '#C2FFAE', + stroke: '#000000', + strokeWidth: 3, + innerStroke: null + }, +}; \ No newline at end of file diff --git a/public_html/tetris/blockrain.jquery.min.js b/public_html/tetris/blockrain.jquery.min.js new file mode 100644 index 0000000..bdbfdbb --- /dev/null +++ b/public_html/tetris/blockrain.jquery.min.js @@ -0,0 +1,12 @@ +/*! + * BlockRain.js 0.2.0 + * jQuery plugin that lets you put a playable (and configurable) game of Tetris in your site or just leave it in auto in the background. + * http://aerolab.github.io/blockrain.js/ + * + * Copyright (c) 2015 Aerolab + * + * Released under the MIT license + * http://aerolab.github.io/blockrain.js/LICENSE.txt + */ + !function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){var e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var o,n,s;for(s=0;null!=(n=i[s]);s++)try{o=t._data(n,"events"),o&&o.remove&&t(n).triggerHandler("remove")}catch(r){}e(i)}}(t.cleanData),t.widget=function(e,i,o){var n,s,r,a,h={},l=e.split(".")[0];return e=e.split(".")[1],n=l+"-"+e,o||(o=i,i=t.Widget),t.expr[":"][n.toLowerCase()]=function(e){return!!t.data(e,n)},t[l]=t[l]||{},s=t[l][e],r=t[l][e]=function(t,e){return this._createWidget?void(arguments.length&&this._createWidget(t,e)):new r(t,e)},t.extend(r,s,{version:o.version,_proto:t.extend({},o),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(o,function(e,o){return t.isFunction(o)?void(h[e]=function(){var t=function(){return i.prototype[e].apply(this,arguments)},n=function(t){return i.prototype[e].apply(this,t)};return function(){var e,i=this._super,s=this._superApply;return this._super=t,this._superApply=n,e=o.apply(this,arguments),this._super=i,this._superApply=s,e}}()):void(h[e]=o)}),r.prototype=t.widget.extend(a,{widgetEventPrefix:s?a.widgetEventPrefix||e:e},h,{constructor:r,namespace:l,widgetName:e,widgetFullName:n}),s?(t.each(s._childConstructors,function(e,i){var o=i.prototype;t.widget(o.namespace+"."+o.widgetName,r,i._proto)}),delete s._childConstructors):i._childConstructors.push(r),t.widget.bridge(e,r),r},t.widget.extend=function(e){for(var o,n,s=i.call(arguments,1),r=0,a=s.length;a>r;r++)for(o in s[r])n=s[r][o],s[r].hasOwnProperty(o)&&void 0!==n&&(e[o]=t.isPlainObject(n)?t.isPlainObject(e[o])?t.widget.extend({},e[o],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,o){var n=o.prototype.widgetFullName||e;t.fn[e]=function(s){var r="string"==typeof s,a=i.call(arguments,1),h=this;return s=!r&&a.length?t.widget.extend.apply(null,[s].concat(a)):s,this.each(r?function(){var i,o=t.data(this,n);return"instance"===s?(h=o,!1):o?t.isFunction(o[s])&&"_"!==s.charAt(0)?(i=o[s].apply(o,a),i!==o&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+s+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; attempted to call method '"+s+"'")}:function(){var e=t.data(this,n);e?(e.option(s||{}),e._init&&e._init()):t.data(this,n,new o(s,this))}),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
            ",options:{disabled:!1,create:null},_createWidget:function(i,o){o=t(o||this.defaultElement||this)[0],this.element=t(o),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),o!==this&&(t.data(o,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===o&&this.destroy()}}),this.document=t(o.style?o.ownerDocument:o.document||o),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var o,n,s,r=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(r={},o=e.split("."),e=o.shift(),o.length){for(n=r[e]=t.widget.extend({},this.options[e]),s=0;o.length-1>s;s++)n[o[s]]=n[o[s]]||{},n=n[o[s]];if(e=o.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];r[e]=i}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!e),e&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(e,i,o){var n,s=this;"boolean"!=typeof e&&(o=i,i=e,e=!1),o?(i=n=t(i),this.bindings=this.bindings.add(i)):(o=i,i=this.element,n=this.widget()),t.each(o,function(o,r){function a(){return e||s.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?s[r]:r).apply(s,arguments):void 0}"string"!=typeof r&&(a.guid=r.guid=r.guid||a.guid||t.guid++);var h=o.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+s.eventNamespace,c=h[2];c?n.delegate(c,l,a):i.bind(l,a)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(i).undelegate(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?o[t]:t).apply(o,arguments)}var o=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,o){var n,s,r=this.options[e];if(o=o||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],s=i.originalEvent)for(n in s)n in i||(i[n]=s[n]);return this.element.trigger(i,o),!(t.isFunction(r)&&r.apply(this.element[0],[i].concat(o))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(o,n,s){"string"==typeof n&&(n={effect:n});var r,a=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),r=!t.isEmptyObject(n),n.complete=s,n.delay&&o.delay(n.delay),r&&t.effects&&t.effects.effect[a]?o[e](n):a!==e&&o[a]?o[a](n.duration,n.easing,s):o.queue(function(i){t(this)[e](),s&&s.call(o[0]),i()})}}),t.widget}),function(t){"use strict";t.widget("aerolab.blockrain",{options:{autoplay:!1,autoplayRestart:!0,showFieldOnStart:!0,theme:null,blockWidth:10,autoBlockWidth:!1,autoBlockSize:24,difficulty:"normal",speed:20,asdwKeys:!0,playText:"Let's play some Tetris",playButtonText:"Play",gameOverText:"Game Over",restartButtonText:"Play Again",scoreText:"Score",onStart:function(){},onRestart:function(){},onGameOver:function(t){},onPlaced:function(){},onLine:function(t,e,i){}},start:function(){this._doStart(),this.options.onStart.call(this.element)},restart:function(){this._doStart(),this.options.onRestart.call(this.element)},gameover:function(){this.showGameOverMessage(),this._board.gameover=!0,this.options.onGameOver.call(this.element,this._filled.score)},_doStart:function(){this._filled.clearAll(),this._filled._resetScore(),this._board.cur=this._board.nextShape(),this._board.started=!0,this._board.gameover=!1,this._board.dropDelay=5,this._board.render(!0),this._board.animate(),this._$start.fadeOut(150),this._$gameover.fadeOut(150),this._$score.fadeIn(150)},pause:function(){this._board.paused=!0},resume:function(){this._board.paused=!1},autoplay:function(t){"boolean"!=typeof t&&(t=!0),this.options.autoplay=t,t&&!this._board.started&&this._doStart(),this._setupControls(!t),this._setupTouchControls(!t)},controls:function(t){"boolean"!=typeof t&&(t=!0),this._setupControls(t)},touchControls:function(t){"boolean"!=typeof t&&(t=!0),this._setupTouchControls(t)},score:function(t){return"undefined"!=typeof t&&parseInt(t)>=0&&(this._filled.score=parseInt(t),this._$scoreText.text(this._filled_score)),this._filled.score},freesquares:function(){return this._filled.getFreeSpaces()},showStartMessage:function(){this._$start.show()},showGameOverMessage:function(){this._$gameover.show()},updateSizes:function(){this._PIXEL_WIDTH=this.element.innerWidth(),this._PIXEL_HEIGHT=this.element.innerHeight(),this._BLOCK_WIDTH=this.options.blockWidth,this._BLOCK_HEIGHT=Math.floor(this.element.innerHeight()/this.element.innerWidth()*this._BLOCK_WIDTH),this._block_size=Math.floor(this._PIXEL_WIDTH/this._BLOCK_WIDTH),this._border_width=2,this._PIXEL_WIDTH=this._block_size*this._BLOCK_WIDTH,this._PIXEL_HEIGHT=this._block_size*this._BLOCK_HEIGHT,this._$canvas.attr("width",this._PIXEL_WIDTH).attr("height",this._PIXEL_HEIGHT)},theme:function(e){return"undefined"==typeof e?this.options.theme||this._theme:("string"==typeof e?(this.options.theme=e,this._theme=t.extend(!0,{},BlockrainThemes[e])):(this.options.theme=null,this._theme=e),("undefined"==typeof this._theme||null===this._theme)&&(this._theme=t.extend(!0,{},BlockrainThemes.retro),this.options.theme="retro"),(isNaN(parseInt(this._theme.strokeWidth))||"number"!=typeof parseInt(this._theme.strokeWidth))&&(this._theme.strokeWidth=2),this._preloadThemeAssets(),void(null!==this._board&&("string"==typeof this._theme.background&&this._$canvas.css("background-color",this._theme.background),this._board.render())))},_theme:{},_$game:null,_$canvas:null,_$gameholder:null,_$start:null,_$gameover:null,_$score:null,_$scoreText:null,_canvas:null,_ctx:null,_create:function(){var e=this;this.theme(this.options.theme),this._createHolder(),this._createUI(),this._refreshBlockSizes(),this.updateSizes(),t(window).resize(function(){}),this._SetupShapeFactory(),this._SetupFilled(),this._SetupInfo(),this._SetupBoard(),this._info.init(),this._board.init();var i=function(){requestAnimationFrame(i),e._board.render()};i(),this.options.autoplay?(this.autoplay(!0),this._setupTouchControls(!1)):(this._setupControls(!0),this._setupTouchControls(!1))},_checkCollisions:function(t,e,i,o){for(var n,s,r=0,a=i.length;a>r;r+=2){if(n=t+i[r],s=e+i[r+1],s>=this._BLOCK_HEIGHT||this._filled.check(n,s))return!0;if(!o&&0>n||n>=this._BLOCK_WIDTH)return!0}return!1},_board:null,_info:null,_filled:null,_drawBackground:function(){if("string"==typeof this._theme.background){if(this._theme.backgroundGrid instanceof Image){if(0===this._theme.backgroundGrid.width||0===this._theme.backgroundGrid.height)return;this._ctx.globalAlpha=1;for(var t=0;to;o+=2)i[o]r&&(r=i[o]),i[o+1]h&&(h=i[o+1]);return{left:s,right:r,top:a,bottom:h,width:r-s,height:h-a}}}),this.init()}var i=this;null===this._shapeFactory&&(this._shapeFactory={line:function(){return new e(i,i._shapes.line,!1,"line")},square:function(){return new e(i,i._shapes.square,!1,"square")},arrow:function(){return new e(i,i._shapes.arrow,!1,"arrow")},leftHook:function(){return new e(i,i._shapes.leftHook,!1,"leftHook")},rightHook:function(){return new e(i,i._shapes.rightHook,!1,"rightHook")},leftZag:function(){return new e(i,i._shapes.leftZag,!1,"leftZag")},rightZag:function(){return new e(i,i._shapes.rightZag,!1,"rightZag")}})},_SetupFilled:function(){var t=this;null===this._filled&&(this._filled={data:new Array(t._BLOCK_WIDTH*t._BLOCK_HEIGHT),score:0,toClear:{},check:function(t,e){return this.data[this.asIndex(t,e)]},add:function(e,i,o,n,s,r){e>=0&&e=0&&i=0;i--)this.data[i]=i>=t._BLOCK_WIDTH?this.data[i-t._BLOCK_WIDTH]:void 0},checkForClears:function(){var e,i,o,n,s=t._board.lines,r=[];for(e=0,i=this.data.length;i>e;e++)n=this.asX(e),0==n&&(o=0),this.data[e]&&"undefined"!=typeof this.data[e]&&"string"==typeof this.data[e].blockType&&(o+=1),n==t._BLOCK_WIDTH-1&&o==t._BLOCK_WIDTH&&r.push(this.asY(e));for(e=0,i=r.length;i>e;e++)this._popRow(r[e]),t._board.lines++,t._board.lines%10==0&&t._board.dropDelay>1&&(t._board.dropDelay*=.9);var a=t._board.lines-s;this._updateScore(a)},_updateScore:function(e){if(!(0>=e)){var i=[0,400,1e3,3e3,12e3];e>=i.length&&(e=i.length-1),this.score+=i[e],t._$scoreText.text(this.score),t.options.onLine.call(t.element,e,i[e],this.score)}},_resetScore:function(){this.score=0,t._$scoreText.text(this.score)},draw:function(){for(var e,i=0,o=this.data.length;o>i;i++)if(void 0!==this.data[i]){e=this.asY(i);var n=this.data[i];t._board.drawBlock(this.asX(i),e,n.blockType,n.blockVariation,n.blockIndex,n.blockOrientation)}}})},_SetupInfo:function(){var t=this;this._info={mode:t.options.difficulty,modes:["normal","nice","evil"],modesY:170,autopilotY:null,init:function(){this.mode=t.options.difficulty},setMode:function(e){this.mode=e,t._board.nextShape(!0)}}},_SetupBoard:function(){var e=this,i=this._info;this._board={animateDelay:1e3/e.options.speed,animateTimeoutId:null,cur:null,lines:0,dropCount:0,dropDelay:5,holding:{left:null,right:null,drop:null},holdingThreshold:200,started:!1,gameover:!1,renderChanged:!0,init:function(){this.cur=this.nextShape(),e.options.showFieldOnStart&&(e._drawBackground(),e._board.createRandomBoard(),e._board.render()),this.showStartMessage()},showStartMessage:function(){e._$start.show()},showGameOverMessage:function(){e._$gameover.show()},nextShape:function(o){var n,s,r,a=this.next;if(n="nice"==i.mode||"evil"==i.mode?e._niceShapes:e._randomShapes(),e.options.no_preview){if(this.next=null,o)return null;if(s=n(e._filled,e._checkCollisions,e._BLOCK_WIDTH,e._BLOCK_HEIGHT,i.mode),!s)throw new Error("No shape returned from shape function!",n);s.init(),r=s}else{if(s=n(e._filled,e._checkCollisions,e._BLOCK_WIDTH,e._BLOCK_HEIGHT,i.mode),!s)throw new Error("No shape returned from shape function!",n);if(s.init(),this.next=s,o)return null;r=a||this.nextShape()}return e.options.autoplay&&(e._niceShapes(e._filled,e._checkCollisions,e._BLOCK_WIDTH,e._BLOCK_HEIGHT,"normal",r),r.orientation=r.best_orientation,r.x=r.best_x),"undefined"!=typeof e._theme.complexBlocks?r.blockVariation=t.isArray(e._theme.complexBlocks[r.blockType])?e._randInt(0,e._theme.complexBlocks[r.blockType].length-1):null:"undefined"!=typeof e._theme.blocks&&(r.blockVariation=t.isArray(e._theme.blocks[r.blockType])?e._randInt(0,e._theme.blocks[r.blockType].length-1):null),r},animate:function(){var t=!1,i=!1,o=!1,n=Date.now();if(this.animateTimeoutId&&clearTimeout(this.animateTimeoutId),!this.paused&&!this.gameover&&(this.dropCount++,(this.dropCount>=this.dropDelay||e.options.autoplay||this.holding.drop&&n-this.holding.drop>=this.holdingThreshold)&&(t=!0,i=!0,this.dropCount=0),this.holding.left&&n-this.holding.left>=this.holdingThreshold&&(i=!0,this.cur.moveLeft()),this.holding.right&&n-this.holding.right>=this.holdingThreshold&&(i=!0,this.cur.moveRight()),t)){var s=this.cur,r=s.x,a=s.y,h=s.getBlocks();if(e._checkCollisions(r,a+1,h,!0)){t=!1;for(var l=0,c=0;ct;t++)for(o=0,n=e._randChoice([e._randInt(0,8),e._randInt(5,9)]);n>o;o++)s&&e._randInt(0,3)||(s=e._randChoice(r)),e._filled.add(t,e._BLOCK_HEIGHT-o,s,e._randInt(0,3),null,e._randInt(0,3));e._board.render(!0)},render:function(t){(this.renderChanged||t)&&(this.renderChanged=!1,e._ctx.clearRect(0,0,e._PIXEL_WIDTH,e._PIXEL_HEIGHT),e._drawBackground(),e._filled.draw(),this.cur.draw())},drawBlock:function(t,i,o,n,s,r,a){t*=e._block_size,i*=e._block_size,a="boolean"==typeof a?a:!1;var h=e._theme.strokeWidth,l=Math.round(.23*e._block_size),c=Math.round(.3*e._block_size),d=this.getBlockColor(o,n,s,a);if(e._ctx.globalAlpha=1,d instanceof Image){if(e._ctx.globalAlpha=1,0===d.width||0===d.height)return;if("undefined"!=typeof e._theme.blocks&&null!==e._theme.blocks)e._ctx.drawImage(d,0,0,d.width,d.height,t,i,e._block_size,e._block_size);else if("undefined"!=typeof e._theme.complexBlocks&&null!==e._theme.complexBlocks){("undefined"==typeof s||null===s)&&(s=0);var u=function(t,i,o){var n=e._shapes[i][0],s=Math.min(n[0],n[2],n[4],n[6]),r=Math.max(n[0],n[2],n[4],n[6]),a=Math.min(n[1],n[3],n[5],n[7]),h=Math.max(n[1],n[3],n[5],n[7]),l=r-s+1,c=h-a+1,d=t.width/l,u=t.height/c;return{x:d*(n[2*o]-s),y:u*Math.abs(a-n[2*o+1]),w:d,h:u}},g=u(d,o,s);e._ctx.save(),e._ctx.translate(t,i),e._ctx.translate(e._block_size/2,e._block_size/2),e._ctx.rotate(-Math.PI/2*r),e._ctx.drawImage(d,g.x,g.y,g.w,g.h,-e._block_size/2,-e._block_size/2,e._block_size,e._block_size),e._ctx.restore()}else e._ctx.fillStyle="#ff0000",e._ctx.fillRect(t,i,e._block_size,e._block_size)}else"string"==typeof d&&(e._ctx.fillStyle=d,e._ctx.fillRect(t,i,e._block_size,e._block_size),"string"==typeof e._theme.innerShadow&&(e._ctx.globalAlpha=1,e._ctx.strokeStyle=e._theme.innerShadow,e._ctx.lineWidth=1,e._ctx.strokeRect(t+1,i+1,e._block_size-2,e._block_size-2)),"string"==typeof e._theme.stroke&&(e._ctx.globalAlpha=1,e._ctx.fillStyle=e._theme.stroke,e._ctx.strokeStyle=e._theme.stroke,e._ctx.lineWidth=h,e._ctx.strokeRect(t,i,e._block_size,e._block_size)),"string"==typeof e._theme.innerStroke&&(e._ctx.fillStyle=e._theme.innerStroke,e._ctx.fillRect(t+l,i+l,e._block_size-2*l,h),e._ctx.fillRect(t+l,i+l+h,h,e._block_size-2*l-h)),"string"==typeof e._theme.innerSquare&&(e._ctx.fillStyle=e._theme.innerSquare,e._ctx.globalAlpha=.2,e._ctx.fillRect(t+c,i+c,e._block_size-2*c,e._block_size-2*c)));e._ctx.globalAlpha=1},getBlockColor:function(i,o,n,s){var r=function(e,i){return t.isArray(e)?null!==i&&"undefined"!=typeof e[i]?e[i]:e.length>0?e[0]:null:e};return"boolean"!=typeof s&&(s=!0),s?"string"==typeof e._theme.primary&&""!==e._theme.primary?e._theme.primary:"undefined"!=typeof e._theme.blocks&&null!==e._theme.blocks?r(e._theme.blocks[i],o):r(e._theme.complexBlocks[i],o):"string"==typeof e._theme.secondary&&""!==e._theme.secondary?e._theme.secondary:"undefined"!=typeof e._theme.blocks&&null!==e._theme.blocks?r(e._theme.blocks[i],o):r(e._theme.complexBlocks[i],o)}},e._niceShapes=e._getNiceShapes()},_randInt:function(t,e){return t+Math.floor(Math.random()*(1+e-t))},_randSign:function(){return 2*this._randInt(0,1)-1},_randChoice:function(t){return t[this._randInt(0,t.length-1)]},_preloadThemeAssets:function(){var e=this,i=new RegExp("^#[A-F0-9+]{3,6}","i"),o=(new RegExp("^data:image/(png|gif|jpg);base64,","i"),function(){e._board&&e._board.render(!0)}),n=function(t){var e=t;return i.test(e)?t=e:(t=new Image,t.src=e,t.onload=o),t},s=function(e){if(t.isArray(e)&&e.length>0)for(var i=0;i
            '),this._$gameholder.css("position","relative").css("width","100%").css("height","100%"),this.element.html("").append(this._$gameholder),this._$canvas=t(''),"string"==typeof this._theme.background&&this._$canvas.css("background-color",this._theme.background),this._$gameholder.append(this._$canvas),this._canvas=this._$canvas.get(0),this._ctx=this._canvas.getContext("2d")},_createUI:function(){var e=this;e._$score=t('
            '+this.options.scoreText+'
            0
            ').hide(),e._$scoreText=e._$score.find(".blockrain-score-num"),e._$gameholder.append(e._$score),e._$start=t('
            ").hide(),e._$gameholder.append(e._$start),e._$start.find(".blockrain-start-btn").click(function(t){t.preventDefault(),e.start()}),e._$gameover=t('
            '+this.options.gameOverText+'
            '+this.options.restartButtonText+"
            ").hide(),e._$gameover.find(".blockrain-game-over-btn").click(function(t){t.preventDefault(),e.restart()}),e._$gameholder.append(e._$gameover),this._createControls()},_createControls:function(){var e=this;e._$touchLeft=t('').appendTo(e._$gameholder),e._$touchRight=t('').appendTo(e._$gameholder),e._$touchRotateRight=t('').appendTo(e._$gameholder),e._$touchRotateLeft=t('').appendTo(e._$gameholder),e._$touchDrop=t('').appendTo(e._$gameholder)},_refreshBlockSizes:function(){this.options.autoBlockWidth&&(this.options.blockWidth=Math.ceil(this.element.width()/this.options.autoBlockSize))},_getNiceShapes:function(){function t(t,e,i,n,s,r,a){var h,l,c,d,u=e.length,g=0,A={};for(h=0;u>h;h+=2)g+=t[o._filled.asIndex(i+e[h],n+e[h+1])]||0;for(h=0;u>h;h+=2)l=e[h],c=e[h+1],(void 0===A[l]||A[l]n+c;c++,h++)if(!o._filled.check(i+l,n+c)){d+=0==h?2:1;break}return g-=d}function e(){for(var t in n)n[t].x=0,n[t].y=-1}var i,o=this,n={};for(var i in this._shapeFactory)n[i]=this._shapeFactory[i]();var s=function(i,s,r,a,h,l){l||e();var c,d,u,g,A,f,p,b,m,k,_,I,v,y,C,w=new Array(r*a),B="evil"==h,G=999*(B?1:-1);for(c=0;r>c;c++)for(d=0;a>=d;d++)if(d==a||i.check(c,d)){for(u=d-4;d>u;u++)w[i.asIndex(c,u)]=u;break}var D=void 0===l?n:{cur:l};for(g in D){for(A=D[g],v=-999,f=0;f<(A.symmetrical?2:4);f++)for(p=A.getBlocks(f),b=A.getBounds(p),c=-b.left;cv&&(v=m,y=f,C=c);break}(B&&G>v||!B&&v>G)&&(k=A,G=v,_=y,I=C)}return k.best_orientation=_,k.best_x=I,k};return s.no_preview=!0,s},_randomShapes:function(){var e=[];return t.each(this._shapeFactory,function(t,i){e.push(i)}),this._randChoice(e)},_setupControls:function(e){function i(t){var e={stopKeys:{37:1,38:1,39:1,40:1}},i=e.stopKeys[t.keyCode]||e.moreStopKeys&&e.moreStopKeys[t.keyCode];return i&&t.preventDefault(),i}function o(t){return"safekeypress."+t.keyCode}function n(e){var i=o(e);return t.data(this,i,(t.data(this,i)||0)-1),c.call(this,e)}function s(e){return t.data(this,o(e),0),d.call(this,e),i(e)}var r=this,a=function(t){return t?void(r._board.holding.left||(r._board.cur.moveLeft(),r._board.holding.left=Date.now(),r._board.holding.right=null)):void(r._board.holding.left=null)},h=function(t){return t?void(r._board.holding.right||(r._board.cur.moveRight(),r._board.holding.right=Date.now(),r._board.holding.left=null)):void(r._board.holding.right=null)},l=function(t){return t?void(r._board.holding.drop||(r._board.cur.drop(),r._board.holding.drop=Date.now())):void(r._board.holding.drop=null)},c=function(t){if(!r._board.cur)return!0;var e=!1;if(e=!0,r.options.asdwKeys)switch(t.keyCode){case 65:a(!0);break;case 68:h(!0);break;case 83:l(!0);break;case 87:r._board.cur.rotate("right")}switch(t.keyCode){case 37:a(!0);break;case 39:h(!0);break;case 40:l(!0);break;case 38:r._board.cur.rotate("right");break;case 88:r._board.cur.rotate("right");break;case 90:r._board.cur.rotate("left");break;default:e=!1}return e&&t.preventDefault(),!e},d=function(t){if(!r._board.cur)return!0;var e=!1;if(e=!0,r.options.asdwKeys)switch(t.keyCode){case 65:a(!1);break;case 68:h(!1);break;case 83:l(!1)}switch(t.keyCode){case 37:a(!1);break;case 39:h(!1);break;case 40:l(!1);break;default:e=!1}return e&&t.preventDefault(),!e};t(document).unbind("keydown.blockrain").unbind("keyup.blockrain"),r.options.autoplay||e&&t(document).bind("keydown.blockrain",n).bind("keyup.blockrain",s)},_setupTouchControls:function(t){var e=this,i=function(t){t.preventDefault(),e._board.cur.moveLeft(),e._board.holding.left=Date.now(),e._board.holding.right=null,e._board.holding.drop=null},o=function(t){t.preventDefault(),e._board.cur.moveRight(),e._board.holding.right=Date.now(),e._board.holding.left=null,e._board.holding.drop=null},n=function(t){t.preventDefault(),e._board.cur.drop(),e._board.holding.drop=Date.now()},s=function(t){t.preventDefault(),e._board.holding.left=null},r=function(t){t.preventDefault(),e._board.holding.right=null},a=function(t){t.preventDefault(),e._board.holding.drop=null},h=function(t){t.preventDefault(),e._board.cur.rotate("left")},l=function(t){t.preventDefault(),e._board.cur.rotate("right")};e._$touchLeft.unbind("touchstart touchend click"),e._$touchRight.unbind("touchstart touchend click"),e._$touchRotateLeft.unbind("touchstart touchend click"),e._$touchRotateRight.unbind("touchstart touchend click"),e._$touchDrop.unbind("touchstart touchend click"),!e.options.autoplay&&t?(e._$touchLeft.show().bind("touchstart click",i).bind("touchend",s),e._$touchRight.show().bind("touchstart click",o).bind("touchend",r),e._$touchDrop.show().bind("touchstart click",n).bind("touchend",a),e._$touchRotateLeft.show().bind("touchstart click",h),e._$touchRotateRight.show().bind("touchstart click",l)):(e._$touchLeft.hide(),e._$touchRight.hide(),e._$touchRotateLeft.hide(),e._$touchRotateRight.hide(),e._$touchDrop.hide())}})}(jQuery),window.BlockrainThemes={custom:{background:"#040304",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAHHElEQVR4XsVZgZbkqgqkTO77//+dbuvtgQ7QcGwnO3PPZTPG1dhWASIxwP8OEcqTYhJ3ypsAuLqsB7KSNrQ14uMoXAXsnwNihoUDInKKbCdDf2YjPuL+KDRSyOpE1Q5k6JBJV7IJSfnvJUzf8RhyAOh9ADqN3vtz+am+zIXWHIK9l1D5ISuSTbv3aUAJZKfvmMYYBn3O6Y3W/lt2IFmmIHmbQDcCgOM4DCjJqeKsNgQAIe9ag13I4NNHoUWhomMn4BoiubXAqn27qAoNm9HLwhMAfQ10lgYxc5gqvgxcfuw8sdhMHKtD99IrGfCpkXZjBG9x9r8SizJ/JHF8Yww3hYszNDnz5uawDH3WsTESIZBcs6O5r36SVn4gmcFYJVmgSYZOMqmEdjf8vxV8riA4tG0Zo51qeeDQtQxhuP6hUmgYY/U/yu8JKYBVmGdZGznWhqBZoAefTTi7GYOY/jKHEPL57loObBU8zhL4z/P8UxbdN02sUzOSqKmlymZnCLckt2tdq41AOI8KyU4AQGfCrNEOkr0DPjxD767VBUls3qHNEfjdhdpWxa7++zkzVmMB+0PXcndy9yMogcwsd5fJAFzotccfgKBfArmukPKQQ8dCOvrGAXkNxBPekvMahyNbMZbfFFcDLcVPfgV8MoJOcgo2QcWDQZiNNh3lJ9IdaNRskCk0FMUZFJJhgTnpspxF3l5S/3UhuXgpq1EopxxQyX7V3pdB8ndxXo4aukmapDQaJAlSGGZzAu8bIdIDr/Lb6BnXTtgk/wLJnoCUbLSPR+PNTbAMmt3HCDPonnN/c0BrMU7MawAAmAQggOIweu9oGEUmiHLQBPxS+v2WSgDIwTgmjwrblgk1kBbtVId1p/453BAPR+5fJyKuQGQ49KLDWvnLSNQJse8e+SiunI/UcAQ5aTBo6ncj+HMLmGBH04WOqVkm+qPnQkwYBKR1GEpXcXOfpNVAOnSQmJS8euloqxd1fWLZUi2I4JCkvySWN/psMd8HDJhzyD/DdW5fBAFvIzvqKLsErOwcRkKUXT8D5CJdpkCvEG7Szz0r6qVFE6q0faCSxuV05kO8/GUBdOlNkL0wStgd/reRSgCE0FWPhoXfiS5Eg47P6CH8TBlSc+RSP31RCgjwytR5J0riVjsyh60AH3uVgKFPipkiQ/CBAyoUNsVvhE1HkL+SM6Gc6kW0QJrnSHENDa8J9jiYal07ND3uc75GAEkl4GWBkufc8hmsHYQeoUs3vb26TYfeoxBE6NBHxctbKwFV2eFvsdcU/2FdGsv/USX3nd01IfweWHx7i+qm6VmQ4ULBTAo+JrKjgHLXv386gveoiPIo1pEN5d4zyLVHnYYZYVkyjBAgmLUZzV3XPSHo6IMoe4p0U8Z6d/R7VRIoSwsINl5VzVSEXfdcL8P+gYPJD/CuEuAqus/FaQW70Vld/47EOiCawZRAiSBrZ+yooFy7+VG0yHcX4l8eTXLpQn0oIADxIUMBeoDtrsHW87EdsvtvbxgQSResFIHjRFZtj6KEX+ucgZ0D9+iL89avBCLvBMQ5RCUU3pOwvmVSwKwPMNWFoHvSTrXoCenqi8FwZMN7rYEOEN4bJnFBRcK4gi21nClKFOYZ7ZJLYxKwDRYEeXJs1tl92fv9tq/nQkguSVgF9FPonquwBi1ssdbxApQcgkvIAHbpdADKHsLw/C430332xJ8JYSJ6Z2emUHg6ehBCwB0JsQU1ENgmKz2WouXmWCUjKN4CYGOBqn4IWLlmxPTZuYUOh/Kqg6hnY/clDrbsh0jTsMe/lf0oflbRjYAlIiTXYRy3ImfbEN76xG+QT8c5KZPEVBKjKRgFY9vf4KTpkL2F1Ia6fK+2xTrvX5bmnO1Lvd6nkno8nxp6jkEBkOMNwi1GnS5MopWs7c6f9mMoKmlM4sDctT5VHo/Hi4DKgTF8LnLqPQbHLMNahn859fKCESuoLqtoBZC2zfj5LtHsun8+n19fX3/KOVXhyQLkyzknJylTcBw4j6GoHYCBLi/lNRKGC61fQZHA8yJe7AafzV3/oZJei5GjEC8ak4Q8XsobHFrJ2x9IYXtzjQAFpibC+kmUE3f6tJ4P0LGWU/c/Wi/ofYrzdR9G4eIqU54PhXoA42oXRi49BCNY2VCUPIgxiB47AYCC7HB8vgzBpAwgEVChSn2hiayfcZF8zikPOUXGIaBMDQBzUtEfA0Yg1Mp+YqU+eVVIRW8GiO8pIlNCGPfwnwg7RWiL+J+BEY3FK3wVTc7Hw9YPXaGkkDKZxAO0VTn1ojDaqaU1+lOqHuoVffkDducA9e4Th1sApnswouIEByhD5iRBe0TAMSzj85P8IAW3Rjp/prYL7E4CQu0IA033s1C/lUIO5QMBEQQOlHOhnogxciC+12k3l3DffqyXx01JP8p8CemsQ/9yGcwBFfk/Wqz6T1UU/3cAAAAASUVORK5CYII=", +complexBlocks:{line:["assets/blocks/custom/line.png","assets/blocks/custom/line.png"],square:["assets/blocks/custom/square.png"],arrow:"assets/blocks/custom/arrow.png",rightHook:["assets/blocks/custom/rightHook.png"],leftHook:"assets/blocks/custom/leftHook.png",rightZag:["assets/blocks/custom/rightZag.png"],leftZag:"assets/blocks/custom/leftZag.png"}},candy:{background:"#040304",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAHHElEQVR4XsVZgZbkqgqkTO77//+dbuvtgQ7QcGwnO3PPZTPG1dhWASIxwP8OEcqTYhJ3ypsAuLqsB7KSNrQ14uMoXAXsnwNihoUDInKKbCdDf2YjPuL+KDRSyOpE1Q5k6JBJV7IJSfnvJUzf8RhyAOh9ADqN3vtz+am+zIXWHIK9l1D5ISuSTbv3aUAJZKfvmMYYBn3O6Y3W/lt2IFmmIHmbQDcCgOM4DCjJqeKsNgQAIe9ag13I4NNHoUWhomMn4BoiubXAqn27qAoNm9HLwhMAfQ10lgYxc5gqvgxcfuw8sdhMHKtD99IrGfCpkXZjBG9x9r8SizJ/JHF8Yww3hYszNDnz5uawDH3WsTESIZBcs6O5r36SVn4gmcFYJVmgSYZOMqmEdjf8vxV8riA4tG0Zo51qeeDQtQxhuP6hUmgYY/U/yu8JKYBVmGdZGznWhqBZoAefTTi7GYOY/jKHEPL57loObBU8zhL4z/P8UxbdN02sUzOSqKmlymZnCLckt2tdq41AOI8KyU4AQGfCrNEOkr0DPjxD767VBUls3qHNEfjdhdpWxa7++zkzVmMB+0PXcndy9yMogcwsd5fJAFzotccfgKBfArmukPKQQ8dCOvrGAXkNxBPekvMahyNbMZbfFFcDLcVPfgV8MoJOcgo2QcWDQZiNNh3lJ9IdaNRskCk0FMUZFJJhgTnpspxF3l5S/3UhuXgpq1EopxxQyX7V3pdB8ndxXo4aukmapDQaJAlSGGZzAu8bIdIDr/Lb6BnXTtgk/wLJnoCUbLSPR+PNTbAMmt3HCDPonnN/c0BrMU7MawAAmAQggOIweu9oGEUmiHLQBPxS+v2WSgDIwTgmjwrblgk1kBbtVId1p/453BAPR+5fJyKuQGQ49KLDWvnLSNQJse8e+SiunI/UcAQ5aTBo6ncj+HMLmGBH04WOqVkm+qPnQkwYBKR1GEpXcXOfpNVAOnSQmJS8euloqxd1fWLZUi2I4JCkvySWN/psMd8HDJhzyD/DdW5fBAFvIzvqKLsErOwcRkKUXT8D5CJdpkCvEG7Szz0r6qVFE6q0faCSxuV05kO8/GUBdOlNkL0wStgd/reRSgCE0FWPhoXfiS5Eg47P6CH8TBlSc+RSP31RCgjwytR5J0riVjsyh60AH3uVgKFPipkiQ/CBAyoUNsVvhE1HkL+SM6Gc6kW0QJrnSHENDa8J9jiYal07ND3uc75GAEkl4GWBkufc8hmsHYQeoUs3vb26TYfeoxBE6NBHxctbKwFV2eFvsdcU/2FdGsv/USX3nd01IfweWHx7i+qm6VmQ4ULBTAo+JrKjgHLXv386gveoiPIo1pEN5d4zyLVHnYYZYVkyjBAgmLUZzV3XPSHo6IMoe4p0U8Z6d/R7VRIoSwsINl5VzVSEXfdcL8P+gYPJD/CuEuAqus/FaQW70Vld/47EOiCawZRAiSBrZ+yooFy7+VG0yHcX4l8eTXLpQn0oIADxIUMBeoDtrsHW87EdsvtvbxgQSResFIHjRFZtj6KEX+ucgZ0D9+iL89avBCLvBMQ5RCUU3pOwvmVSwKwPMNWFoHvSTrXoCenqi8FwZMN7rYEOEN4bJnFBRcK4gi21nClKFOYZ7ZJLYxKwDRYEeXJs1tl92fv9tq/nQkguSVgF9FPonquwBi1ssdbxApQcgkvIAHbpdADKHsLw/C430332xJ8JYSJ6Z2emUHg6ehBCwB0JsQU1ENgmKz2WouXmWCUjKN4CYGOBqn4IWLlmxPTZuYUOh/Kqg6hnY/clDrbsh0jTsMe/lf0oflbRjYAlIiTXYRy3ImfbEN76xG+QT8c5KZPEVBKjKRgFY9vf4KTpkL2F1Ia6fK+2xTrvX5bmnO1Lvd6nkno8nxp6jkEBkOMNwi1GnS5MopWs7c6f9mMoKmlM4sDctT5VHo/Hi4DKgTF8LnLqPQbHLMNahn859fKCESuoLqtoBZC2zfj5LtHsun8+n19fX3/KOVXhyQLkyzknJylTcBw4j6GoHYCBLi/lNRKGC61fQZHA8yJe7AafzV3/oZJei5GjEC8ak4Q8XsobHFrJ2x9IYXtzjQAFpibC+kmUE3f6tJ4P0LGWU/c/Wi/ofYrzdR9G4eIqU54PhXoA42oXRi49BCNY2VCUPIgxiB47AYCC7HB8vgzBpAwgEVChSn2hiayfcZF8zikPOUXGIaBMDQBzUtEfA0Yg1Mp+YqU+eVVIRW8GiO8pIlNCGPfwnwg7RWiL+J+BEY3FK3wVTc7Hw9YPXaGkkDKZxAO0VTn1ojDaqaU1+lOqHuoVffkDducA9e4Th1sApnswouIEByhD5iRBe0TAMSzj85P8IAW3Rjp/prYL7E4CQu0IA033s1C/lUIO5QMBEQQOlHOhnogxciC+12k3l3DffqyXx01JP8p8CemsQ/9yGcwBFfk/Wqz6T1UU/3cAAAAASUVORK5CYII=",blocks:{line:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACuklEQVR4Xi2MzW4cRRSFz/2p6p4eT2zjjE2MHBQWvAALNjwDS8SOFc/FIyCxQgh2LFHkBQgJyQo/wXKCEZ7x9E9VV93LBPNJ516dxXfo/U8+HTZ9uzrZympTjLo4DbtDiBpXSBGMocI5lkaMhKv0fz+LVX9P6ZuvvxqBby+3L3eJu6Zt27DL4qgIWW0KsxPC3Kjxz5fPT3z48csvtHSHd0C/1374RddPX/9xK6JdcjEutNfqFJMBsQat3By+i/7VxqJ6c/zd5avvn1+N7dl2V9Ad92M2ViI2ksyWSJ2QXQXc5/H25jYcHHKl1YYebcJqw/rW03OOzfr89NHbR8vH3Wq9Olofrddni+XhycXJhBSkKFLxWeHBZFFDVyD343Rzc/0XeYSXeXZIJaam2V9pLsBOtRIKYAorXqvAg8giaKsCKw1zJAGFbKhwtxrdG9E3BQxAIW1xyYUKUIwNxMAwDEwuSgA5iAw2l5ITOeE/GLRMihIOsnQZnKqOlWXRUWidyYkFpCxtCF1s8D+seBggYVYRhChkqqjmld3NKhhu1XKuKUf4g6egEitkvqc5ewo+3ZOVZJO4Q4OSEDGRRyAQkYH8QfMUCR07KS8DIsO8xhjcnUXnSv4GMRYShSUG2MFCeby/awOJFyvF3TU22ckk3E3FQjci+mJVggwz12rKVEvWOk3dwWpIr7ezrU4XZ+9ciBAxWCVlhDb2o5cZTgBR17R3w45hgg8/fu+Dj643adZVXzCmebsbp5T6fhr2L9W8z5xLNsyDpl2btrsXPynS9NvVVc28xzMLPDCUYbVUMy+TMgdinupCEapdvPv0lqGwjW9fHsXjF39eIzRpnFbLdiy918qCWmclnq3mcWhVnzw5v+83XYz0+LPP/8lL704NB3BBdbCDKlChAq8QgRvmGSFouyo3vz7Lr/8FMHqie3VCpNQAAAAASUVORK5CYII=",square:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACfUlEQVR4Xh3LvY5cRRBA4VNV3ffe+fEaZARgWfBExEhEZEg8A69AgkC8AzEiICMgJCdAxggsGRuW3Z3dmenbXVWskT6d7MiXnz3qclu87esm1qW3NteRuqaCIAmQABwPvPU2NyeaUa6P159/9QV3l/HqlWqN41El0PaadEJAoZBKqS9+eybL/tvvvi8PrHA4ku33pz9v5rafKmc0I7QhbiGaJSikyeCh1T7OG6fMluOvP/5+8csb+/RxhUtlEXA5KUMpiEpWwZKU3D799Zl1CtpEjsoh++HRxUMBVhgry4yUXLvstnE8qWi/HZndTEwpppj5XLIg7fZ4+fJlb91jzSlGhjc2O7RMj995nApRIRW0BHRl9UXLona6PYiGGKpaa50qPtQ96/5BCgkpBKghpI7VJZK5bmYju5IxQkZONqtbu+txd5ZEQFI0KaRRJxEZY0wjh/dqKqbZ/z9tqmJIqpQSnaD8T9sYkGqWmuTIZHgoWYupKh4SqSQimqrJfeV1gTECF4NKmUHwDFRqNSuJjMTxFQANNKGUyTBxYqSX6J6USdc1BquYFhEMFEQCUvSeC5rheL/Y74kAvX/OPXRZojIkqHkaLpMwWdYJm1fHlZIJotdXN7tFtczvvfuB5MIyRZwQ11pora2BTKOvva3zPKtStpsKLNNmmcr53xtFMtLaGLSR61IKKaPHenO1L2+qThqrn5FvPuGjjz8s4x+NI6Ptdvtxckywo0cjstZZZfZhNhSWNuoPP/5Udhebc8+tbp4//zPd6dcaGtJtWtUiVkhTWSJkTn3y5P15M19ervL1p9UZFzX9zHYmO1Ph3KFQK+rkIBMScbY7DicOzn+QRoW5iamqhgAAAABJRU5ErkJggg==",arrow:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACsklEQVR4XhWPu25bVxREZz/OuQ9RVKhXjBSu8gX5h+QD0udD8ilByjRpUqZxa6RxY8DuYlhwHhAc2qRIieK9vOfsvUMNBoPVrGLoh6+++7y7mbFfTNIVdShCxCGuAgE8tSilhOVWU6lrtPjPK33ffvvb6xd4KG9/+f1kenIYoAgOIc+AF9u5Rdteuvubty9LU168fqW9z7AFanr36uPZSOIgWHB1IJABKE0keSr3QdLolXitjw1n717++sfPP/7Ula6pfbYmeU7eaBybnzg6ewwpT8DW/vth2acFkzf9Pi0OOU1+/eVlM2/m14vZ+Rfz88t+Np+fnZ8tns1OL66vLss0FIughgppDumLzIpmYBrHz+uVsZVSsraorJoMQU5dOs3K3jaiSXGciNYoG3cQcbJjwiKC3Ny9ljhEEUlGBnh4IJwR+qQ6q7FbuMPBLEQCVjaYA0mYwcyIY6p5qYFQQqOexRMhHOqg6sV8mtiqQki51gSHV6YAMYMMxgIC2IOcBcIsQipBBCIjNqEQBWARjjAOHAtSh1eqk9bqLpBKQUSZE4ccIqpJFnWQiRSKypjUA1DgEDw5janNkgA4zKmGQtpgsNqhMoRCmRni4AgKJh6DB842TffENWWqU+m448eYje186GZT31nXo5EqPhUGIqoGwd1gtWFtRBeLxcXF1TydYh+td1E5lMdpOOxGr9bPOzdrtFGWk2lAg84e9/fYbGmsync0xD7mfkITgUMbJaKc26GOVn2sB61Gf958OE992wsoQjSSjBHUwEmlISTsxjEsOIsxP3v+/M3tey3wrRVh29wuA2Vo3Xoe3KP6Endhzh3v92NjKefcXZzETKxR+Sa+vt2s3/3z127YrYfN+mGz2m4+rT+tNuu77d3yfvn3+vbh8eH4bb3dLrer97c3q7L6H15gvODKB5u4AAAAAElFTkSuQmCC",rightHook:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACqElEQVR4Xh3PO2tlZRSH8f9a73XvPTkTExl1dLAIKFpNY2Fl4UcT7G3FwmIaO3sbEfQjWAxDAkIORDHJyXFf3stayzC/9qke+ubrF0u7zqwfsJNFXEKtCAJriBGBoB0gNAZ5WIekcC0f+br8++3Pr1AP5Y/f6Xgfx4RqoB2kI27QgkYQw5BA2L95M+vTn379y0c2HI+Y5Ob6z3B/M/ZmlTieV7ISj9rXZ2n338NciEMedGshJacbZ9X16vK3H76vh/1paCOWiWvos5M1U9llLIebKeqz0zG4PmZ/dfl6XWc/9p4Ox/fMwnIcXrwL6ohPg54OZhYTUUc+w1YQ83z3kMadEKdp8EmE54cnKifTBLOr17cqtwIf4gAuKhUd8Lh4+TKPowjyOK1l8cxAm9nK2nWnsQeAyNtgldnClCLntkrRrTBcFyPjYRg8AEAY4JDhkhp7uOBIRbyqrmK+KcBm1qU30UbSxHcGnIGpKYk63dQxnC2sPcWo2slZUCCGYXPkkBnUqjcCSAGFsaOUQk5koqUqPFV5G2sDai+tG3vv6ZF3BojBzFrvpeij4KtDZTjPXTWGBA91uWJTo1WkqTAZoAbpT3ejd0YOBW1zoAHE/tG8FThm52KOLnDv1dA8DACTwbRU6TxSaX1WZII/1qBgwLvWtgN6ieQc2hC9hwLGTFS35eTJ7uOL5xxTkZI44l7BDGpwBke8FFCA9Pj2EAipHbd8Qre3fxOMDWykGryyM2Vv67JwmCJ7cQRRM6JXX+CrLz97/uHJ4bgHFUdKBi8B5gECLLAys4grAkr5Vt758ZdLTwhuPNvfHP7ZPzjrBAHYLBlChwPQ+jrtpq2UJv3i0/clni/Y03efYzxPvZdBkAzeAKATukENAoTA86ynZ3GrVQl3Eu/yJ/8D33mmeKR3Cz8AAAAASUVORK5CYII=",leftHook:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACq0lEQVR4Xg3HO24mVRBH8X/Vrfv4ut02BjS8GSBAQuyCmE0gwSLICFgCBLASAhLiiQjQICFBMAMSFn63v+77qCp89EsO5U+/rus/0zQPPW8thXRQABLAjtHAAZ2gzGk2HRCG1YMPwgdf/fnXj1fX+O7732s/A0kzbwEUCW5Fgh8HGVdFTOn5H79NiZ/98rPATBVS8OzX5xTehYsxd3KFwXcGEljVOGVJ8a7W4Q4YT8sb33z70xdf/oB8HufzhjI0m2a3JLykuAyV4RGxrLVN5+f/3dxSKXJc59qfUk77djhdXhGx0/mMAg/rpm30bXq97Fp3su1mrMe19e46BLLw9Nb1w0WaZoO+fPmCNbTW3D1Fcjci77Cnn3wMhCBpWU7vuwqo3evgaar6QHRqfRXKhQiELFG1O6H3MZUyLpTIx24UMkNASbqZwZiN3AQsgKhZ6/VYR9OcDw/blg5xmKqPnIRBLQUZw4iIWQKydRcEcvLOOZ2A80Nv8SRv1iiHQWPXewbztm3MbObMYgpGCMwiwgwAIhJCAGBmjMD+KDJJThJzTI8TKZm5E9S7U3c0s6PrkVujvYbm0Qr1iceJ+GZ9772OMawNDNAgVm8cADcAQSgzCSiChZj8MRLwXCTPufQEC8SlVKPWNTJJ4BTDcds58tCaMsVoIQ8Nq2AgS97uVg2h7v29Dz86W86MGqB922F+djjsdbWE0eu233fbwF0opd57KYU43l5ewQ43N7d17CwUHJnlsl4QmUwkJJKZ5uXaLdBrnzl6EGbTbV2nVIiMuMU44EMwMjn76GMHeWAKhKuLvyXoC+F3IvXrfy9zmO/WKyUM6c1riWUY7btKiA+9UkyvPnk7KFMPtLz/uS9vrjVFLNqTUSEJNLN5hQL7gIXpsGytO0ekCduR/fg/hV+olVqSm3YAAAAASUVORK5CYII=",rightZag:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACt0lEQVR4Xg3LOW6eVRQG4PcM937DP9hYlkgUQ6RQsAiEWAC7YCWUtGyAFqhpEHRI0CCBIjpHJBSxEhzkxP6H+93pHPz0D3358IsbuyY/XlCs7/YU5zjFZgdGp07BEDq4KXwA0PvuqIfDGbT0u69/+hZvr/DrH1gc1WENwUAGM3RDcXQGRbA9/e3nJPX3F5dqdY/ja8ztx++/+YhX5S6P47REODW2Pra+qsbOR5VFWwjHVPKJJF1FevPn019++O7jeYo3h5VG8Ua5OLnCh25T7+RwYfZavVz993q5OehccfImnV3nqdLjD54gTiDAF3cnEJrBAbZNSS//vTKP1FcTk0ppsfYzkpEt58Pls8vb29vTabDWYZJzjsqnJ+vHjx9tVvf3qG3QVpXJ0Y5L2xWmYbPt7W5WeK7RKUqICic7poQY6q4Fw2AUDSykUGUlQ0cUy3XUqCxm8Obe4SypVoRwOC7kLE5szIoBHsmlO6NJO3Qv5GEozI3IiE25K2EeLAiYADiBOwi51NLdCRrGcQ5xTLVUcg1BVeFszXtaWinkIAcALigQDwISby0Vq3dpR8IA2r1cKNfZRTq9F2c1iLuYqQcHg2Dmvbam08QUG1V07zASqDCLouSSE0tojCbGablFoMgkpMxht9QukvICASIXtNLy7rDDakVDeGepzpIUup1mlIZs5Dbo9OknnwEELGgZJgBhHHDYIx/v8/r98+d/P2cVVSOkitRPN9uXfz0j2rRSh1CZDKRmFomgnns62Wyvrq+ncTy2JJ/rRXv76vx04ymr83pci9gYRYISS4N3cgRKvYb15EHOHzy8fPaPgtMe8zHG5y8uH6y3wa7LPbNOIIkQRpCOZt7KzatHFx+Ww0Ki9NX8ZHWy7Sltchtz2aj32nicjZkpLr1m760vp5tN2e8jtHX0Yf4f3da+1L4oEEQAAAAASUVORK5CYII=",leftZag:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAACtElEQVR4Xg2Lu25cZRhF93f5L3OOPeOQmJuDhEIHDa/CC/B4SHSICqS0CERDE2MJAYKEmITEcewZz/nvH7O0taq16eTL++P66nhCDegOAEhghFYhDDM0hSgowQkKkDIwJi0pP/72G9j24vIi8S7nN34lYG1VyOKg0uVKFFIiY/XL+R8s977+6nvttBMkovTDz9/Np3G3fTlvYkoFJswzaxtya2haQ0nUdGa2PLY6GD/9+vjJ+Y+bD+K2vFxtrLS3cQq9t1rLwUZ7IpuOAmQQ8u9/PgFDWbG5708/jK/Ti9OzExErhYVU1TMrCZqV7fY2Or2+uQ5H7zgPMNQF5HL7+upZeFeHLU//etrraM2YedQBAXsnoPXHn8yrcHVzE0LICWoECTQf+SG19dRqK3tMUxSRZtkIZtqbsblW+vF8/Pzy1XoNvdthjDas7He7swdno+JkM21v997r6A1MIKNBwiCiXssqhNsbcAwQosPTeek1MzBa947NmnewYcGR8Oh1sZG8s5LvQoACaK0Yegi+965MNWXnxIAx0AdyWnqDMjuh1KoIkYGNUPqh0zHaYcpwoin1ZiBFjFBVEWLm1ppzTkQAsAQYQdwhTap+dBCRXzkW6g2lIpdqRkYE1v1+AZgEuiRo8G2YaCBo75ZylSCdiMnoYPVefO1k8AYm7rlAjUDi7/ZN18HIffbp5zFO22Vf0bzXfsBQUu4DIJ6P1/t/XowB9RGl4Xj94M62zy+vou2sDUySyhJjTDXpAeL9YFKXaxYnuoL2BRfnzxghj7YKm4liHkszGkOUjtxIYjKM9ncpTnPr4+HDj8j+U5/B5R5k/vfv344m6rfXHb3NSqKvdrs5xKUWeN95nUd69Oi9vpQI0PtfTAn7eE/eLF0Y92eUjrcDISBmrBjbgkrIDPFYCfoCLPgflXOjuIEFgMYAAAAASUVORK5CYII="}},modern:{background:"#000000",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=",primary:null,secondary:null,stroke:null,blocks:{line:"#fa1e1e",square:"#f1fa1e",arrow:"#d838cb",rightHook:"#f5821f",leftHook:"#42c6f0",rightZag:"#4bd838",leftZag:"#fa1e1e"}},retro:{background:"#000000",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=",primary:null,secondary:null,stroke:"#000000",innerStroke:"#000000",blocks:{line:"#fa1e1e",square:"#f1fa1e",arrow:"#d838cb",rightHook:"#f5821f",leftHook:"#42c6f0",rightZag:"#4bd838",leftZag:"#fa1e1e"}},monochrome:{background:"#000000",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=",primary:"#ffffff",secondary:"#ffffff",stroke:"#000000",innerStroke:"#000000"},aerolab:{background:"#ffffff",primary:"#ff7b00",secondary:"#000000"},gameboy:{background:"#C4CFA1",primary:null,secondary:null,stroke:"#414141",innerStroke:"#414141",innerSquare:"#000000",blocks:{line:"#88926A",square:"#585E44",arrow:"#A4AC8C",rightHook:"#6B7353",leftHook:"#6B7353",rightZag:"#595F45",leftZag:"#595F45"}},vim:{background:"#000000",backgroundGrid:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjZTg0NzU4MC00ODk3LTRkNjAtOWNhYi1mZTk1NzQ5NzhiNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTEzOEQwMDc5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTEzOEQwMDY5MDQyMTFFNDlBMzlFNzY4RjBCNkNENzMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplNDRjOWZiNC0yNzE5LTQ3NDYtYmRmMi0wMmY2ZTA4ZjAxMmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMwNTNEOTk5MDM1MTFFNDlBMzlFNzY4RjBCNkNENzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Y01+zAAAAMklEQVR42mJgGAWjYBSMgkEJGIlUd+j/WjjbjjGYGC1MtHP10DR6FIyCUTAKBikACDAA0NoDCLGGjH8AAAAASUVORK5CYII=",primary:"#C2FFAE",secondary:"#C2FFAE",stroke:"#000000",strokeWidth:3,innerStroke:null}}; \ No newline at end of file diff --git a/public_html/tetris/index.php b/public_html/tetris/index.php new file mode 100644 index 0000000..e9647b9 --- /dev/null +++ b/public_html/tetris/index.php @@ -0,0 +1,102 @@ +prepare("SELECT pseudo, score, date FROM tetris ORDER BY score DESC;"); +$req->execute() or die(print_r($requete->errorInfo())); + +$affichScore = ""; +$id = 0; + +while ($ligne = $req->fetch()) //Affichage du resultat de la requete +{ + $pseudo = htmlentities($ligne["pseudo"], ENT_QUOTES); + $pseudoIMG = $pseudo; + $score = htmlentities($ligne["score"], ENT_QUOTES); + $date = date("d-M-Y", strtotime($ligne["date"])); + $id++; + + if($_SESSION['pseudo'] == $pseudo) + { + $pseudo .= " - Vous"; + } + + //Concaténation du resultat + $affichScore .= "
          • $pseudo

            Score : $score
            Date : $date

            $id
          • "; +} + +?> + + + + + + + + RASPSNIR - TETRIS + + + + + + +
            +
            +
            +
            +
            + pause + replay + web +
            +
            +
            +
            +
            +
            +
            +

            Mise à jour du score

            +
            + +
            Vous devez obligatoirement être connecté pour mettre en ligne votre score.
            '; + } + else + { + echo '
            Cliquez-ici pour sauvegarder votre score :
            '; + } + ?> +
            +
            +
            +
            +
            +
            +
            +
              +
            • Classement

            • + +
            +
            +
            +
            + + + + + + diff --git a/public_html/tetris/tetris.css b/public_html/tetris/tetris.css new file mode 100644 index 0000000..2ba273a --- /dev/null +++ b/public_html/tetris/tetris.css @@ -0,0 +1,43 @@ +#tetris { + padding: 2px; + background-color: white; + display: block; + margin: 0 auto; + margin-top: 5%; + margin-bottom: 5%; + width: 300px; + height: 600px; +} + +blockquote { + border-left: 5px solid #004e92; +} + +.monModal { + display: none; /* Hidden by default */ + position: fixed; /* Stay in place */ + z-index: 999; /* Sit on top */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background-color: rgb(0,0,0); /* Fallback color */ + background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ +} + +.monModal-content { + margin: 20%; +} + +#n1 { + color: gold; +} + +#n2 { + color: grey; +} + +#n3 { + color: saddlebrown; +} \ No newline at end of file diff --git a/public_html/tetris/tetris.js b/public_html/tetris/tetris.js new file mode 100644 index 0000000..5a6e6f8 --- /dev/null +++ b/public_html/tetris/tetris.js @@ -0,0 +1,95 @@ +$('.game').blockrain(); + + +var callbackPlayPause = function(){ + if($('#playpause').hasClass('red') == true) + { + $('#playpause').removeClass(); + $('#playpause').addClass('btn-floating btn-large waves-effect waves-light green'); + $('#playpause').html('play_arrow'); + $('.game').blockrain('pause'); + $('.game').blockrain('controls', false); + } + else + { + $('#playpause').removeClass(); + $('#playpause').addClass('btn-floating btn-large waves-effect waves-light red'); + $('#playpause').html('pause'); + $('.game').blockrain('resume'); + $('.game').blockrain('controls', true); + } +} +$('#playpause').click(callbackPlayPause); +cheet('p', callbackPlayPause); + + + +var callbackRestart = function(){ + $('.game').blockrain('restart'); +} +$('#restart').click(callbackRestart); +cheet('r', callbackRestart); + + + +var callbackPerf = function(){ + if($("#background-canvas").is(":visible")) + { + $('#perf').removeClass(); + $('#perf').addClass('btn-floating btn-large waves-effect waves-light red'); + $("#background-canvas").fadeOut(1000); + } + else + { + $('#perf').removeClass(); + $('#perf').addClass('btn-floating btn-large waves-effect waves-light green'); + $("#background-canvas").fadeIn(1000); + } +} +$('#perf').click(callbackPerf); +cheet('i', callbackPerf); + +$("#envoi").click(function(){ + $("#modal4").leanModal(); +}); + + + + + + +$(document).ready(function(){ + + $('#ValidScore').click(function(){ + var leScore = $(".game").blockrain('score'); + $.ajax({ + url: '/tetris/traitement.php', + data: {score : leScore}, + type: 'POST', + dataType: 'json', + success: + function(donnees, status, xhr) + { + switch(donnees) + { + case "v": + Materialize.toast('Votre score a bien été mis à jour.', 5000); + break; + case "n": + Materialize.toast('Une erreur est survenue.', 5000); + break; + case "m": + Materialize.toast('Votre score est inférieur à celui déjà enregistré.', 5000); + break; + } + }, + error: + function (xhr, status, error) { + alert("param : " + xhr.responseText); + alert("status : " + status); + alert("error : " + error); + } + }); + }); + +}); diff --git a/public_html/tetris/traitement.php b/public_html/tetris/traitement.php new file mode 100644 index 0000000..c35f1f4 --- /dev/null +++ b/public_html/tetris/traitement.php @@ -0,0 +1,53 @@ +query("SELECT score FROM tetris WHERE pseudo = '$pseudo';"); + $result = $query->rowCount(); + if($result == 0) + { + $query = $bdd->query("INSERT INTO tetris (date, pseudo, score, ip) VALUES ('$date', '$pseudo', '$score', '$ip');"); + + $reponse = "v"; + } + else + { + + while($donnee = $query->fetch()) + { + $current_score = $donnee['score']; + } + + if($score >= $current_score) + { + $query = $bdd->query("UPDATE tetris SET date = '$date', score = '$score', ip = '$ip' WHERE pseudo = '$pseudo';"); + + $reponse = "v"; + } + else + { + $reponse = "m"; + } + } + + +} +else +{ + $reponse = "n"; +} + +echo json_encode($reponse); + + diff --git a/public_html/wankuls/img/0Fond.png b/public_html/wankuls/img/0Fond.png new file mode 100644 index 0000000..4e40f1f Binary files /dev/null and b/public_html/wankuls/img/0Fond.png differ diff --git a/public_html/wankuls/img/Alexandre.png b/public_html/wankuls/img/Alexandre.png new file mode 100644 index 0000000..7099b29 Binary files /dev/null and b/public_html/wankuls/img/Alexandre.png differ diff --git a/public_html/wankuls/img/Arthur.png b/public_html/wankuls/img/Arthur.png new file mode 100644 index 0000000..5ccc2a1 Binary files /dev/null and b/public_html/wankuls/img/Arthur.png differ diff --git a/public_html/wankuls/img/Axel.png b/public_html/wankuls/img/Axel.png new file mode 100644 index 0000000..63fe0a6 Binary files /dev/null and b/public_html/wankuls/img/Axel.png differ diff --git a/public_html/wankuls/img/Biyou72.png b/public_html/wankuls/img/Biyou72.png new file mode 100644 index 0000000..63fe0a6 Binary files /dev/null and b/public_html/wankuls/img/Biyou72.png differ diff --git a/public_html/wankuls/img/Damien.png b/public_html/wankuls/img/Damien.png new file mode 100644 index 0000000..457a0f4 Binary files /dev/null and b/public_html/wankuls/img/Damien.png differ diff --git a/public_html/wankuls/img/Gaben.png b/public_html/wankuls/img/Gaben.png new file mode 100644 index 0000000..261f298 Binary files /dev/null and b/public_html/wankuls/img/Gaben.png differ diff --git a/public_html/wankuls/img/Gabriel.png b/public_html/wankuls/img/Gabriel.png new file mode 100644 index 0000000..261f298 Binary files /dev/null and b/public_html/wankuls/img/Gabriel.png differ diff --git a/public_html/wankuls/img/Giovanni.png b/public_html/wankuls/img/Giovanni.png new file mode 100644 index 0000000..7401236 Binary files /dev/null and b/public_html/wankuls/img/Giovanni.png differ diff --git a/public_html/wankuls/img/Guitoune.png b/public_html/wankuls/img/Guitoune.png new file mode 100644 index 0000000..dd374ef Binary files /dev/null and b/public_html/wankuls/img/Guitoune.png differ diff --git a/public_html/wankuls/img/Gwendal.png b/public_html/wankuls/img/Gwendal.png new file mode 100644 index 0000000..c0fed31 Binary files /dev/null and b/public_html/wankuls/img/Gwendal.png differ diff --git a/public_html/wankuls/img/Kaaris.png b/public_html/wankuls/img/Kaaris.png new file mode 100644 index 0000000..933fd98 Binary files /dev/null and b/public_html/wankuls/img/Kaaris.png differ diff --git a/public_html/wankuls/img/KaarisG.png b/public_html/wankuls/img/KaarisG.png new file mode 100644 index 0000000..142d716 Binary files /dev/null and b/public_html/wankuls/img/KaarisG.png differ diff --git a/public_html/wankuls/img/Kylian.png b/public_html/wankuls/img/Kylian.png new file mode 100644 index 0000000..2492b36 Binary files /dev/null and b/public_html/wankuls/img/Kylian.png differ diff --git a/public_html/wankuls/img/Maxence.png b/public_html/wankuls/img/Maxence.png new file mode 100644 index 0000000..9936090 Binary files /dev/null and b/public_html/wankuls/img/Maxence.png differ diff --git a/public_html/wankuls/img/Philippe.png b/public_html/wankuls/img/Philippe.png new file mode 100644 index 0000000..89d4920 Binary files /dev/null and b/public_html/wankuls/img/Philippe.png differ diff --git a/public_html/wankuls/img/Tanguy.png b/public_html/wankuls/img/Tanguy.png new file mode 100644 index 0000000..dd374ef Binary files /dev/null and b/public_html/wankuls/img/Tanguy.png differ diff --git a/public_html/wankuls/index.php b/public_html/wankuls/index.php new file mode 100644 index 0000000..64d20cb --- /dev/null +++ b/public_html/wankuls/index.php @@ -0,0 +1,112 @@ + + + + + + + RASPSNIR - WANKULS + + + + +
            +
            +
            +
            +
            +

            Alexandre
            Ferr8

            + +
            +
            +
            +
            +
            +
            +

            Arthur
            MacGyver

            + +
            +
            +
            +
            +
            +
            +

            Axel
            Biyou

            + +
            +
            +
            +
            +
            +
            +

            Damien
            Legendo

            + +
            +
            +
            +
            +
            +
            +
            +
            +

            Gabriel
            Gaben

            + +
            +
            +
            +
            +
            +
            +

            Giovanni
            Nini

            + +
            +
            +
            +
            +
            +
            +

            Gwendal
            Eowynd

            + +
            +
            +
            +
            +
            +
            +

            Kylian
            Falcon

            + +
            +
            +
            +
            +
            +
            +
            +
            +

            Maxence
            Captain JambonFromage

            + +
            +
            +
            +
            +
            +
            +

            Philippe Simier
            Rasp MasterRace

            + +
            +
            +
            +
            +
            +
            +

            Tanguy
            Guitoune

            + +
            +
            +
            +
            +
            + + + + + diff --git a/public_html/wankuls/wankul.css b/public_html/wankuls/wankul.css new file mode 100644 index 0000000..ca10705 --- /dev/null +++ b/public_html/wankuls/wankul.css @@ -0,0 +1,46 @@ +.card { + height: 150px; + width: 150px; +} + +.wankul { + background-color: black; + color: white; +} + +.plates img { + transform: translateZ(-75px) rotateX( 0deg) translateZ(-75px); +} + +.pseudo { + transform: translateZ(-75px) rotateX(90deg) translateZ(75px); + background-image: url(img/0Fond.png); + display: table-cell; + text-align: center; + vertical-align: center; +} + +.pseudo p{ + color: white; + padding-top: 30px; +} + +.plates:hover img{ + transform: rotateX(90deg) translateZ(-75px); +} + +.plates:hover .pseudo { + transform: rotateX(0deg) translateZ(75px); +} + +.wankul img, .wankul .pseudo{ + position:absolute; + + top:0; + bottom:0; + left:0; + right:0; + + backface-visibility: hidden; + transition: transform 0.4s ease-in-out; +}