├── img ├── stars.png ├── clouds3.png ├── favicon.ico └── twinkling.png ├── README.md ├── index.html ├── css ├── style.css ├── flipclock.css └── animate.css └── js ├── newyear.js └── flipclock.js /img/stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x48piraj/countdown/HEAD/img/stars.png -------------------------------------------------------------------------------- /img/clouds3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x48piraj/countdown/HEAD/img/clouds3.png -------------------------------------------------------------------------------- /img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x48piraj/countdown/HEAD/img/favicon.ico -------------------------------------------------------------------------------- /img/twinkling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x48piraj/countdown/HEAD/img/twinkling.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # New Year Countdown 2 | > New Year Countdown to throw on a big screen for the New Year's Eve with FOSSASIA ! :tada: 3 | 4 | [![HitCount](http://hits.dwyl.io/0x48piraj/countdown-2018.svg)](http://hits.dwyl.io/0x48piraj/countdown-2018) 5 | 6 | 7 | ![image](https://user-images.githubusercontent.com/5800726/34329403-b240b556-e924-11e7-89fc-6b68dd00f86f.png) 8 | Demo → https://0x48piraj.github.io/countdown/ 9 | 10 | Heads up for easter eggs. 11 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Happy New Year 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 |
Happy New Year
20 |
21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | padding: 0; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | } 8 | * 9 | { 10 | margin: 0; 11 | padding: 0; 12 | 13 | } 14 | .message 15 | { 16 | font-family: 'Great Vibes', cursive; 17 | color: white; 18 | position: absolute; 19 | font-size: 95px; 20 | top:0; 21 | left:0; 22 | right:0; 23 | bottom:0; 24 | width: 100%; 25 | height:200px; 26 | z-index: 50; 27 | margin: auto auto; 28 | line-height: 200px; 29 | text-align: center; 30 | display: none; 31 | } 32 | canvas { 33 | display: block; 34 | overflow: hidden; 35 | width: 100%; 36 | height: 100%; 37 | z-index: 100; 38 | position: absolute; 39 | } 40 | 41 | #confetti 42 | { 43 | display: none; 44 | } 45 | 46 | @keyframes move-twink-back { 47 | from {background-position:0 0;} 48 | to {background-position:-10000px 5000px;} 49 | } 50 | @-webkit-keyframes move-twink-back { 51 | from {background-position:0 0;} 52 | to {background-position:-10000px 5000px;} 53 | } 54 | @-moz-keyframes move-twink-back { 55 | from {background-position:0 0;} 56 | to {background-position:-10000px 5000px;} 57 | } 58 | @-ms-keyframes move-twink-back { 59 | from {background-position:0 0;} 60 | to {background-position:-10000px 5000px;} 61 | } 62 | 63 | @keyframes move-clouds-back { 64 | from {background-position:0 0;} 65 | to {background-position:10000px 0;} 66 | } 67 | @-webkit-keyframes move-clouds-back { 68 | from {background-position:0 0;} 69 | to {background-position:10000px 0;} 70 | } 71 | @-moz-keyframes move-clouds-back { 72 | from {background-position:0 0;} 73 | to {background-position:10000px 0;} 74 | } 75 | @-ms-keyframes move-clouds-back { 76 | from {background-position: 0;} 77 | to {background-position:10000px 0;} 78 | } 79 | 80 | .stars, .twinkling, .clouds { 81 | position:absolute; 82 | top:0; 83 | left:0; 84 | right:0; 85 | bottom:0; 86 | width:100%; 87 | height:100%; 88 | display:block; 89 | } 90 | 91 | .stars { 92 | background:#000 url(../img/stars.png) repeat top center; 93 | z-index:0; 94 | } 95 | 96 | .twinkling{ 97 | background:transparent url(../img/twinkling.png) repeat top center; 98 | z-index:1; 99 | 100 | -moz-animation:move-twink-back 200s linear infinite; 101 | -ms-animation:move-twink-back 200s linear infinite; 102 | -o-animation:move-twink-back 200s linear infinite; 103 | -webkit-animation:move-twink-back 200s linear infinite; 104 | animation:move-twink-back 200s linear infinite; 105 | } 106 | 107 | .clouds{ 108 | background:transparent url(../img/clouds3.png) repeat top center; 109 | z-index:3; 110 | 111 | -moz-animation:move-clouds-back 200s linear infinite; 112 | -ms-animation:move-clouds-back 200s linear infinite; 113 | -o-animation:move-clouds-back 200s linear infinite; 114 | -webkit-animation:move-clouds-back 200s linear infinite; 115 | animation:move-clouds-back 200s linear infinite; 116 | } -------------------------------------------------------------------------------- /js/newyear.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var COLORS, Confetti, NUM_CONFETTI, PI_2, canvas, confetti, context, drawCircle, i, range, resizeWindow, xpos; 3 | 4 | NUM_CONFETTI = 350; 5 | 6 | COLORS = [[85, 71, 106], [174, 61, 99], [219, 56, 83], [244, 92, 68], [248, 182, 70]]; 7 | 8 | PI_2 = 2 * Math.PI; 9 | 10 | canvas = document.getElementById("confetti"); 11 | context = canvas.getContext("2d"); 12 | 13 | window.w = 0; 14 | window.h = 0; 15 | 16 | resizeWindow = function() { 17 | window.w = canvas.width = window.innerWidth; 18 | return window.h = canvas.height = window.innerHeight; 19 | }; 20 | 21 | window.addEventListener('resize', resizeWindow, false); 22 | 23 | window.onload = function() { 24 | return setTimeout(resizeWindow, 0); 25 | }; 26 | 27 | range = function(a, b) { 28 | return (b - a) * Math.random() + a; 29 | }; 30 | 31 | drawCircle = function(x, y, r, style) { 32 | context.beginPath(); 33 | context.arc(x, y, r, 0, PI_2, false); 34 | context.fillStyle = style; 35 | return context.fill(); 36 | }; 37 | 38 | xpos = 0.4; 39 | 40 | document.onmousemove = function(e) { 41 | return xpos = e.pageX / w; 42 | }; 43 | 44 | window.requestAnimationFrame = (function() { 45 | return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { 46 | return window.setTimeout(callback, 1000 / 60); 47 | }; 48 | })(); 49 | 50 | Confetti = (function() { 51 | function Confetti() { 52 | this.style = COLORS[~~range(0, 5)]; 53 | this.rgb = "rgba(" + this.style[0] + "," + this.style[1] + "," + this.style[2]; 54 | this.r = ~~range(2, 6); 55 | this.r2 = 2 * this.r; 56 | this.replace(); 57 | } 58 | 59 | Confetti.prototype.replace = function() { 60 | this.opacity = 0; 61 | this.dop = 0.03 * range(1, 4); 62 | this.x = range(-this.r2, w - this.r2); 63 | this.y = range(-20, h - this.r2); 64 | this.xmax = w - this.r; 65 | this.ymax = h - this.r; 66 | this.vx = range(0, 2) + 8 * xpos - 5; 67 | return this.vy = 0.7 * this.r + range(-1, 1); 68 | }; 69 | 70 | Confetti.prototype.draw = function() { 71 | var _ref; 72 | this.x += this.vx; 73 | this.y += this.vy; 74 | this.opacity += this.dop; 75 | if (this.opacity > 1) { 76 | this.opacity = 1; 77 | this.dop *= -1; 78 | } 79 | if (this.opacity < 0 || this.y > this.ymax) { 80 | this.replace(); 81 | } 82 | if (!((0 < (_ref = this.x) && _ref < this.xmax))) { 83 | this.x = (this.x + this.xmax) % this.xmax; 84 | } 85 | return drawCircle(~~this.x, ~~this.y, this.r, "" + this.rgb + "," + this.opacity + ")"); 86 | }; 87 | 88 | return Confetti; 89 | 90 | })(); 91 | 92 | confetti = (function() { 93 | var _i, _results; 94 | _results = []; 95 | for (i = _i = 1; 1 <= NUM_CONFETTI ? _i <= NUM_CONFETTI : _i >= NUM_CONFETTI; i = 1 <= NUM_CONFETTI ? ++_i : --_i) { 96 | _results.push(new Confetti); 97 | } 98 | return _results; 99 | })(); 100 | 101 | window.step = function() { 102 | var c, _i, _len, _results; 103 | requestAnimationFrame(step); 104 | context.clearRect(0, 0, w, h); 105 | _results = []; 106 | for (_i = 0, _len = confetti.length; _i < _len; _i++) { 107 | c = confetti[_i]; 108 | _results.push(c.draw()); 109 | } 110 | return _results; 111 | }; 112 | 113 | step(); 114 | 115 | }).call(this); 116 | 117 | var clock; 118 | var $clock = $('.clock'); 119 | var $message = $('.message'); 120 | var $confetti = $('#confetti'); 121 | var animations = ['bounce', 'pulse', 'rubberBand', 'swing', 'tada']; 122 | var current_animation = 0; 123 | var timeout = null; 124 | var interval = 10000; 125 | 126 | $(document).ready(function() { 127 | var currentDate = new Date(); 128 | var futureDate = new Date(currentDate.getFullYear() + 1, 0, 1); 129 | var diff = futureDate.getTime() / 1000 - currentDate.getTime() / 1000; 130 | 131 | clock = $clock.FlipClock(diff, { 132 | clockFace: 'DailyCounter', 133 | countdown: true, 134 | callbacks: { 135 | interval: function() { 136 | var time = this.factory.getTime().time; 137 | if(time <= 10 && time > 0) { 138 | pulse(); 139 | } 140 | else if(time <= 0) { 141 | celebrate(); 142 | } 143 | } 144 | } 145 | }); 146 | }); 147 | 148 | function celebrate() 149 | { 150 | $confetti.fadeIn(); 151 | 152 | $clock.removeClass('animated flipInX'); 153 | $clock.addClass('animated flipOutX'); 154 | 155 | clearTimeout(timeout); 156 | setTimeout(function(){ 157 | $message.addClass('animated flipInX').fadeIn(); 158 | timeout = setTimeout(bounce, interval); 159 | }, 350); 160 | } 161 | 162 | function pulse() 163 | { 164 | $clock.removeClass('animated flipInX flipOutX pulse'); 165 | 166 | clearTimeout(timeout); 167 | timeout = setTimeout(function(){ 168 | $clock.addClass('animated pulse'); 169 | }, 50); 170 | } 171 | 172 | function bounce() 173 | { 174 | clearTimeout(timeout); 175 | 176 | $message.removeClass('animated bounce flipInX pulse rubberBand swing tada'); 177 | 178 | setTimeout(function(){ 179 | $message.addClass('animated ' + animations[current_animation]); 180 | current_animation++; 181 | if(current_animation == animations.length) 182 | { 183 | current_animation = 0; 184 | } 185 | }, 100); 186 | 187 | timeout = setTimeout(bounce, interval); 188 | } -------------------------------------------------------------------------------- /css/flipclock.css: -------------------------------------------------------------------------------- 1 | /* Get the bourbon mixin from http://bourbon.io */ 2 | /* Reset */ 3 | .flip-clock-wrapper * { 4 | -webkit-box-sizing: border-box; 5 | -moz-box-sizing: border-box; 6 | -ms-box-sizing: border-box; 7 | -o-box-sizing: border-box; 8 | box-sizing: border-box; 9 | -webkit-backface-visibility: hidden; 10 | -moz-backface-visibility: hidden; 11 | -ms-backface-visibility: hidden; 12 | -o-backface-visibility: hidden; 13 | backface-visibility: hidden; 14 | } 15 | 16 | .flip-clock-wrapper a { 17 | cursor: pointer; 18 | text-decoration: none; 19 | color: #ccc; } 20 | 21 | .flip-clock-wrapper a:hover { 22 | color: #fff; } 23 | 24 | .flip-clock-wrapper ul { 25 | list-style: none; } 26 | 27 | .flip-clock-wrapper.clearfix:before, 28 | .flip-clock-wrapper.clearfix:after { 29 | content: " "; 30 | display: table; } 31 | 32 | .flip-clock-wrapper.clearfix:after { 33 | clear: both; } 34 | 35 | .flip-clock-wrapper.clearfix { 36 | *zoom: 1; } 37 | 38 | /* Main */ 39 | .flip-clock-wrapper { 40 | font: normal 11px "Helvetica Neue", Helvetica, sans-serif; 41 | color: #555; 42 | z-index: 10; 43 | -webkit-user-select: none; } 44 | 45 | .flip-clock-meridium { 46 | background: none !important; 47 | box-shadow: 0 0 0 !important; 48 | font-size: 36px !important; } 49 | 50 | .flip-clock-meridium a { color: #313333; } 51 | 52 | .flip-clock-wrapper { 53 | text-align: center; 54 | width: 690px; 55 | margin: 0 auto; 56 | height: 100px; 57 | position: absolute; 58 | top: 0; 59 | bottom: 0; 60 | left: 0; 61 | right: 0; 62 | margin: auto; 63 | } 64 | 65 | .flip-clock-wrapper:before, 66 | .flip-clock-wrapper:after { 67 | content: " "; /* 1 */ 68 | display: table; /* 2 */ 69 | } 70 | .flip-clock-wrapper:after { 71 | clear: both; 72 | } 73 | 74 | /* Skeleton */ 75 | .flip-clock-wrapper ul { 76 | position: relative; 77 | float: left; 78 | margin: 5px; 79 | width: 60px; 80 | height: 90px; 81 | font-size: 80px; 82 | font-weight: bold; 83 | line-height: 87px; 84 | border-radius: 6px; 85 | background: #000; 86 | } 87 | 88 | .flip-clock-wrapper ul li { 89 | z-index: 1; 90 | position: absolute; 91 | left: 0; 92 | top: 0; 93 | width: 100%; 94 | height: 100%; 95 | line-height: 87px; 96 | text-decoration: none !important; 97 | } 98 | 99 | .flip-clock-wrapper ul li:first-child { 100 | z-index: 2; } 101 | 102 | .flip-clock-wrapper ul li a { 103 | display: block; 104 | height: 100%; 105 | -webkit-perspective: 200px; 106 | -moz-perspective: 200px; 107 | perspective: 200px; 108 | margin: 0 !important; 109 | overflow: visible !important; 110 | cursor: default !important; } 111 | 112 | .flip-clock-wrapper ul li a div { 113 | z-index: 1; 114 | position: absolute; 115 | left: 0; 116 | width: 100%; 117 | height: 50%; 118 | font-size: 80px; 119 | overflow: hidden; 120 | outline: 1px solid transparent; } 121 | 122 | .flip-clock-wrapper ul li a div .shadow { 123 | position: absolute; 124 | width: 100%; 125 | height: 100%; 126 | z-index: 2; } 127 | 128 | .flip-clock-wrapper ul li a div.up { 129 | -webkit-transform-origin: 50% 100%; 130 | -moz-transform-origin: 50% 100%; 131 | -ms-transform-origin: 50% 100%; 132 | -o-transform-origin: 50% 100%; 133 | transform-origin: 50% 100%; 134 | top: 0; } 135 | 136 | .flip-clock-wrapper ul li a div.up:after { 137 | content: ""; 138 | position: absolute; 139 | top: 44px; 140 | left: 0; 141 | z-index: 5; 142 | width: 100%; 143 | height: 3px; 144 | background-color: #000; 145 | background-color: rgba(0, 0, 0, 0.4); } 146 | 147 | .flip-clock-wrapper ul li a div.down { 148 | -webkit-transform-origin: 50% 0; 149 | -moz-transform-origin: 50% 0; 150 | -ms-transform-origin: 50% 0; 151 | -o-transform-origin: 50% 0; 152 | transform-origin: 50% 0; 153 | bottom: 0; 154 | border-bottom-left-radius: 6px; 155 | border-bottom-right-radius: 6px; 156 | } 157 | 158 | .flip-clock-wrapper ul li a div div.inn { 159 | position: absolute; 160 | left: 0; 161 | z-index: 1; 162 | width: 100%; 163 | height: 200%; 164 | color: #ccc; 165 | text-shadow: 0 1px 2px #000; 166 | text-align: center; 167 | background-color: #333; 168 | border-radius: 6px; 169 | font-size: 70px; } 170 | 171 | .flip-clock-wrapper ul li a div.up div.inn { 172 | top: 0; } 173 | 174 | .flip-clock-wrapper ul li a div.down div.inn { 175 | bottom: 0; } 176 | 177 | /* PLAY */ 178 | .flip-clock-wrapper ul.play li.flip-clock-before { 179 | z-index: 3; } 180 | 181 | .flip-clock-wrapper .flip { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7); } 182 | 183 | .flip-clock-wrapper ul.play li.flip-clock-active { 184 | -webkit-animation: asd 0.5s 0.5s linear both; 185 | -moz-animation: asd 0.5s 0.5s linear both; 186 | animation: asd 0.5s 0.5s linear both; 187 | z-index: 5; } 188 | 189 | .flip-clock-divider { 190 | float: left; 191 | display: inline-block; 192 | position: relative; 193 | width: 20px; 194 | color: #444; 195 | height: 100px; } 196 | 197 | .flip-clock-divider:first-child { 198 | width: 0; } 199 | 200 | .flip-clock-dot { 201 | display: block; 202 | background: #222222; 203 | width: 10px; 204 | height: 10px; 205 | position: absolute; 206 | border-radius: 50%; 207 | box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); 208 | left: 5px; } 209 | 210 | .flip-clock-divider .flip-clock-label { 211 | position: absolute; 212 | top: -1.5em; 213 | right: -86px; 214 | color: #444; 215 | text-shadow: none; } 216 | 217 | .flip-clock-divider.minutes .flip-clock-label { 218 | right: -88px; } 219 | 220 | .flip-clock-divider.seconds .flip-clock-label { 221 | right: -91px; } 222 | 223 | .flip-clock-dot.top { 224 | top: 30px; } 225 | 226 | .flip-clock-dot.bottom { 227 | bottom: 30px; } 228 | 229 | @-webkit-keyframes asd { 230 | 0% { 231 | z-index: 2; } 232 | 233 | 20% { 234 | z-index: 4; } 235 | 236 | 100% { 237 | z-index: 4; } } 238 | 239 | @-moz-keyframes asd { 240 | 0% { 241 | z-index: 2; } 242 | 243 | 20% { 244 | z-index: 4; } 245 | 246 | 100% { 247 | z-index: 4; } } 248 | 249 | @-o-keyframes asd { 250 | 0% { 251 | z-index: 2; } 252 | 253 | 20% { 254 | z-index: 4; } 255 | 256 | 100% { 257 | z-index: 4; } } 258 | 259 | @keyframes asd { 260 | 0% { 261 | z-index: 2; } 262 | 263 | 20% { 264 | z-index: 4; } 265 | 266 | 100% { 267 | z-index: 4; } } 268 | 269 | .flip-clock-wrapper ul.play li.flip-clock-active .down { 270 | z-index: 2; 271 | -webkit-animation: turn 0.5s 0.5s linear both; 272 | -moz-animation: turn 0.5s 0.5s linear both; 273 | animation: turn 0.5s 0.5s linear both; 274 | 275 | } 276 | 277 | @-webkit-keyframes turn { 278 | 0% { 279 | -webkit-transform: rotateX(90deg);opacity: 0.5; } 280 | 281 | 100% { 282 | -webkit-transform: rotateX(0deg); } } 283 | 284 | @-moz-keyframes turn { 285 | 0% { 286 | -moz-transform: rotateX(90deg); } 287 | 288 | 100% { 289 | -moz-transform: rotateX(0deg); } } 290 | 291 | @-o-keyframes turn { 292 | 0% { 293 | -o-transform: rotateX(90deg); } 294 | 295 | 100% { 296 | -o-transform: rotateX(0deg); } } 297 | 298 | @keyframes turn { 299 | 0% { 300 | transform: rotateX(90deg);opacity: 0.5; } 301 | 302 | 100% { 303 | transform: rotateX(0deg); } } 304 | 305 | .flip-clock-wrapper ul.play li.flip-clock-before .up { 306 | z-index: 2; 307 | -webkit-animation: turn2 0.5s linear both; 308 | -moz-animation: turn2 0.5s linear both; 309 | animation: turn2 0.5s linear both; } 310 | 311 | @-webkit-keyframes turn2 { 312 | 0% { 313 | -webkit-transform: rotateX(0deg); } 314 | 315 | 100% { 316 | -webkit-transform: rotateX(-90deg); } } 317 | 318 | @-moz-keyframes turn2 { 319 | 0% { 320 | -moz-transform: rotateX(0deg); } 321 | 322 | 100% { 323 | -moz-transform: rotateX(-90deg); } } 324 | 325 | @-o-keyframes turn2 { 326 | 0% { 327 | -o-transform: rotateX(0deg); } 328 | 329 | 100% { 330 | -o-transform: rotateX(-90deg); } } 331 | 332 | @keyframes turn2 { 333 | 0% { 334 | transform: rotateX(0deg); } 335 | 336 | 100% { 337 | transform: rotateX(-90deg); } } 338 | 339 | .flip-clock-wrapper ul li.flip-clock-active { 340 | z-index: 3; } 341 | 342 | /* SHADOW */ 343 | .flip-clock-wrapper ul.play li.flip-clock-before .up .shadow { 344 | background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 345 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); 346 | background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; 347 | background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 348 | background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 349 | background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; 350 | -webkit-animation: show 0.5s linear both; 351 | -moz-animation: show 0.5s linear both; 352 | animation: show 0.5s linear both; } 353 | 354 | .flip-clock-wrapper ul.play li.flip-clock-active .up .shadow { 355 | background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 356 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); 357 | background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; 358 | background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 359 | background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); 360 | background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; 361 | -webkit-animation: hide 0.5s 0.3s linear both; 362 | -moz-animation: hide 0.5s 0.3s linear both; 363 | animation: hide 0.5s 0.3s linear both; } 364 | 365 | /*DOWN*/ 366 | .flip-clock-wrapper ul.play li.flip-clock-before .down .shadow { 367 | background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 368 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); 369 | background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; 370 | background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 371 | background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 372 | background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; 373 | -webkit-animation: show 0.5s linear both; 374 | -moz-animation: show 0.5s linear both; 375 | animation: show 0.5s linear both; } 376 | 377 | .flip-clock-wrapper ul.play li.flip-clock-active .down .shadow { 378 | background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 379 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); 380 | background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; 381 | background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 382 | background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); 383 | background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; 384 | -webkit-animation: hide 0.5s 0.3s linear both; 385 | -moz-animation: hide 0.5s 0.3s linear both; 386 | animation: hide 0.5s 0.2s linear both; } 387 | 388 | @-webkit-keyframes show { 389 | 0% { 390 | opacity: 0; } 391 | 392 | 100% { 393 | opacity: 1; } } 394 | 395 | @-moz-keyframes show { 396 | 0% { 397 | opacity: 0; } 398 | 399 | 100% { 400 | opacity: 1; } } 401 | 402 | @-o-keyframes show { 403 | 0% { 404 | opacity: 0; } 405 | 406 | 100% { 407 | opacity: 1; } } 408 | 409 | @keyframes show { 410 | 0% { 411 | opacity: 0; } 412 | 413 | 100% { 414 | opacity: 1; } } 415 | 416 | @-webkit-keyframes hide { 417 | 0% { 418 | opacity: 1; } 419 | 420 | 100% { 421 | opacity: 0; } } 422 | 423 | @-moz-keyframes hide { 424 | 0% { 425 | opacity: 1; } 426 | 427 | 100% { 428 | opacity: 0; } } 429 | 430 | @-o-keyframes hide { 431 | 0% { 432 | opacity: 1; } 433 | 434 | 100% { 435 | opacity: 0; } } 436 | 437 | @keyframes hide { 438 | 0% { 439 | opacity: 1; } 440 | 441 | 100% { 442 | opacity: 0; } } 443 | -------------------------------------------------------------------------------- /js/flipclock.js: -------------------------------------------------------------------------------- 1 | /* 2 | Base.js, version 1.1a 3 | Copyright 2006-2010, Dean Edwards 4 | License: http://www.opensource.org/licenses/mit-license.php 5 | */ 6 | 7 | var Base = function() { 8 | // dummy 9 | }; 10 | 11 | Base.extend = function(_instance, _static) { // subclass 12 | 13 | "use strict"; 14 | 15 | var extend = Base.prototype.extend; 16 | 17 | // build the prototype 18 | Base._prototyping = true; 19 | 20 | var proto = new this(); 21 | 22 | extend.call(proto, _instance); 23 | 24 | proto.base = function() { 25 | // call this method from any other method to invoke that method's ancestor 26 | }; 27 | 28 | delete Base._prototyping; 29 | 30 | // create the wrapper for the constructor function 31 | //var constructor = proto.constructor.valueOf(); //-dean 32 | var constructor = proto.constructor; 33 | var klass = proto.constructor = function() { 34 | if (!Base._prototyping) { 35 | if (this._constructing || this.constructor == klass) { // instantiation 36 | this._constructing = true; 37 | constructor.apply(this, arguments); 38 | delete this._constructing; 39 | } else if (arguments[0] !== null) { // casting 40 | return (arguments[0].extend || extend).call(arguments[0], proto); 41 | } 42 | } 43 | }; 44 | 45 | // build the class interface 46 | klass.ancestor = this; 47 | klass.extend = this.extend; 48 | klass.forEach = this.forEach; 49 | klass.implement = this.implement; 50 | klass.prototype = proto; 51 | klass.toString = this.toString; 52 | klass.valueOf = function(type) { 53 | //return (type == "object") ? klass : constructor; //-dean 54 | return (type == "object") ? klass : constructor.valueOf(); 55 | }; 56 | extend.call(klass, _static); 57 | // class initialisation 58 | if (typeof klass.init == "function") klass.init(); 59 | return klass; 60 | }; 61 | 62 | Base.prototype = { 63 | extend: function(source, value) { 64 | if (arguments.length > 1) { // extending with a name/value pair 65 | var ancestor = this[source]; 66 | if (ancestor && (typeof value == "function") && // overriding a method? 67 | // the valueOf() comparison is to avoid circular references 68 | (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && 69 | /\bbase\b/.test(value)) { 70 | // get the underlying method 71 | var method = value.valueOf(); 72 | // override 73 | value = function() { 74 | var previous = this.base || Base.prototype.base; 75 | this.base = ancestor; 76 | var returnValue = method.apply(this, arguments); 77 | this.base = previous; 78 | return returnValue; 79 | }; 80 | // point to the underlying method 81 | value.valueOf = function(type) { 82 | return (type == "object") ? value : method; 83 | }; 84 | value.toString = Base.toString; 85 | } 86 | this[source] = value; 87 | } else if (source) { // extending with an object literal 88 | var extend = Base.prototype.extend; 89 | // if this object has a customised extend method then use it 90 | if (!Base._prototyping && typeof this != "function") { 91 | extend = this.extend || extend; 92 | } 93 | var proto = {toSource: null}; 94 | // do the "toString" and other methods manually 95 | var hidden = ["constructor", "toString", "valueOf"]; 96 | // if we are prototyping then include the constructor 97 | var i = Base._prototyping ? 0 : 1; 98 | while (key = hidden[i++]) { 99 | if (source[key] != proto[key]) { 100 | extend.call(this, key, source[key]); 101 | 102 | } 103 | } 104 | // copy each of the source object's properties to this object 105 | for (var key in source) { 106 | if (!proto[key]) extend.call(this, key, source[key]); 107 | } 108 | } 109 | return this; 110 | } 111 | }; 112 | 113 | // initialise 114 | Base = Base.extend({ 115 | constructor: function() { 116 | this.extend(arguments[0]); 117 | } 118 | }, { 119 | ancestor: Object, 120 | version: "1.1", 121 | 122 | forEach: function(object, block, context) { 123 | for (var key in object) { 124 | if (this.prototype[key] === undefined) { 125 | block.call(context, object[key], key, object); 126 | } 127 | } 128 | }, 129 | 130 | implement: function() { 131 | for (var i = 0; i < arguments.length; i++) { 132 | if (typeof arguments[i] == "function") { 133 | // if it's a function, call it 134 | arguments[i](this.prototype); 135 | } else { 136 | // add the interface using the extend method 137 | this.prototype.extend(arguments[i]); 138 | } 139 | } 140 | return this; 141 | }, 142 | 143 | toString: function() { 144 | return String(this.valueOf()); 145 | } 146 | }); 147 | /*jshint smarttabs:true */ 148 | 149 | var FlipClock; 150 | 151 | /** 152 | * FlipClock.js 153 | * 154 | * @author Justin Kimbrell 155 | * @copyright 2013 - Objective HTML, LLC 156 | * @licesnse http://www.opensource.org/licenses/mit-license.php 157 | */ 158 | 159 | (function($) { 160 | 161 | "use strict"; 162 | 163 | /** 164 | * FlipFlock Helper 165 | * 166 | * @param object A jQuery object or CSS select 167 | * @param int An integer used to start the clock (no. seconds) 168 | * @param object An object of properties to override the default 169 | */ 170 | 171 | FlipClock = function(obj, digit, options) { 172 | if(digit instanceof Object && digit instanceof Date === false) { 173 | options = digit; 174 | digit = 0; 175 | } 176 | 177 | return new FlipClock.Factory(obj, digit, options); 178 | }; 179 | 180 | /** 181 | * The global FlipClock.Lang object 182 | */ 183 | 184 | FlipClock.Lang = {}; 185 | 186 | /** 187 | * The Base FlipClock class is used to extend all other FlipFlock 188 | * classes. It handles the callbacks and the basic setters/getters 189 | * 190 | * @param object An object of the default properties 191 | * @param object An object of properties to override the default 192 | */ 193 | 194 | FlipClock.Base = Base.extend({ 195 | 196 | /** 197 | * Build Date 198 | */ 199 | 200 | buildDate: '2014-12-12', 201 | 202 | /** 203 | * Version 204 | */ 205 | 206 | version: '0.7.7', 207 | 208 | /** 209 | * Sets the default options 210 | * 211 | * @param object The default options 212 | * @param object The override options 213 | */ 214 | 215 | constructor: function(_default, options) { 216 | if(typeof _default !== "object") { 217 | _default = {}; 218 | } 219 | if(typeof options !== "object") { 220 | options = {}; 221 | } 222 | this.setOptions($.extend(true, {}, _default, options)); 223 | }, 224 | 225 | /** 226 | * Delegates the callback to the defined method 227 | * 228 | * @param object The default options 229 | * @param object The override options 230 | */ 231 | 232 | callback: function(method) { 233 | if(typeof method === "function") { 234 | var args = []; 235 | 236 | for(var x = 1; x <= arguments.length; x++) { 237 | if(arguments[x]) { 238 | args.push(arguments[x]); 239 | } 240 | } 241 | 242 | method.apply(this, args); 243 | } 244 | }, 245 | 246 | /** 247 | * Log a string into the console if it exists 248 | * 249 | * @param string The name of the option 250 | * @return mixed 251 | */ 252 | 253 | log: function(str) { 254 | if(window.console && console.log) { 255 | console.log(str); 256 | } 257 | }, 258 | 259 | /** 260 | * Get an single option value. Returns false if option does not exist 261 | * 262 | * @param string The name of the option 263 | * @return mixed 264 | */ 265 | 266 | getOption: function(index) { 267 | if(this[index]) { 268 | return this[index]; 269 | } 270 | return false; 271 | }, 272 | 273 | /** 274 | * Get all options 275 | * 276 | * @return bool 277 | */ 278 | 279 | getOptions: function() { 280 | return this; 281 | }, 282 | 283 | /** 284 | * Set a single option value 285 | * 286 | * @param string The name of the option 287 | * @param mixed The value of the option 288 | */ 289 | 290 | setOption: function(index, value) { 291 | this[index] = value; 292 | }, 293 | 294 | /** 295 | * Set a multiple options by passing a JSON object 296 | * 297 | * @param object The object with the options 298 | * @param mixed The value of the option 299 | */ 300 | 301 | setOptions: function(options) { 302 | for(var key in options) { 303 | if(typeof options[key] !== "undefined") { 304 | this.setOption(key, options[key]); 305 | } 306 | } 307 | } 308 | 309 | }); 310 | 311 | }(jQuery)); 312 | 313 | /*jshint smarttabs:true */ 314 | 315 | /** 316 | * FlipClock.js 317 | * 318 | * @author Justin Kimbrell 319 | * @copyright 2013 - Objective HTML, LLC 320 | * @licesnse http://www.opensource.org/licenses/mit-license.php 321 | */ 322 | 323 | (function($) { 324 | 325 | "use strict"; 326 | 327 | /** 328 | * The FlipClock Face class is the base class in which to extend 329 | * all other FlockClock.Face classes. 330 | * 331 | * @param object The parent FlipClock.Factory object 332 | * @param object An object of properties to override the default 333 | */ 334 | 335 | FlipClock.Face = FlipClock.Base.extend({ 336 | 337 | /** 338 | * Sets whether or not the clock should start upon instantiation 339 | */ 340 | 341 | autoStart: true, 342 | 343 | /** 344 | * An array of jQuery objects used for the dividers (the colons) 345 | */ 346 | 347 | dividers: [], 348 | 349 | /** 350 | * An array of FlipClock.List objects 351 | */ 352 | 353 | factory: false, 354 | 355 | /** 356 | * An array of FlipClock.List objects 357 | */ 358 | 359 | lists: [], 360 | 361 | /** 362 | * Constructor 363 | * 364 | * @param object The parent FlipClock.Factory object 365 | * @param object An object of properties to override the default 366 | */ 367 | 368 | constructor: function(factory, options) { 369 | this.dividers = []; 370 | this.lists = []; 371 | this.base(options); 372 | this.factory = factory; 373 | }, 374 | 375 | /** 376 | * Build the clock face 377 | */ 378 | 379 | build: function() { 380 | if(this.autoStart) { 381 | this.start(); 382 | } 383 | }, 384 | 385 | /** 386 | * Creates a jQuery object used for the digit divider 387 | * 388 | * @param mixed The divider label text 389 | * @param mixed Set true to exclude the dots in the divider. 390 | * If not set, is false. 391 | */ 392 | 393 | createDivider: function(label, css, excludeDots) { 394 | if(typeof css == "boolean" || !css) { 395 | excludeDots = css; 396 | css = label; 397 | } 398 | 399 | var dots = [ 400 | '', 401 | '' 402 | ].join(''); 403 | 404 | if(excludeDots) { 405 | dots = ''; 406 | } 407 | 408 | label = this.factory.localize(label); 409 | 410 | var html = [ 411 | '', 412 | ''+(label ? label : '')+'', 413 | dots, 414 | '' 415 | ]; 416 | 417 | var $html = $(html.join('')); 418 | 419 | this.dividers.push($html); 420 | 421 | return $html; 422 | }, 423 | 424 | /** 425 | * Creates a FlipClock.List object and appends it to the DOM 426 | * 427 | * @param mixed The digit to select in the list 428 | * @param object An object to override the default properties 429 | */ 430 | 431 | createList: function(digit, options) { 432 | if(typeof digit === "object") { 433 | options = digit; 434 | digit = 0; 435 | } 436 | 437 | var obj = new FlipClock.List(this.factory, digit, options); 438 | 439 | this.lists.push(obj); 440 | 441 | return obj; 442 | }, 443 | 444 | /** 445 | * Triggers when the clock is reset 446 | */ 447 | 448 | reset: function() { 449 | this.factory.time = new FlipClock.Time( 450 | this.factory, 451 | this.factory.original ? Math.round(this.factory.original) : 0, 452 | { 453 | minimumDigits: this.factory.minimumDigits 454 | } 455 | ); 456 | 457 | this.flip(this.factory.original, false); 458 | }, 459 | 460 | /** 461 | * Append a newly created list to the clock 462 | */ 463 | 464 | appendDigitToClock: function(obj) { 465 | obj.$el.append(false); 466 | }, 467 | 468 | /** 469 | * Add a digit to the clock face 470 | */ 471 | 472 | addDigit: function(digit) { 473 | var obj = this.createList(digit, { 474 | classes: { 475 | active: this.factory.classes.active, 476 | before: this.factory.classes.before, 477 | flip: this.factory.classes.flip 478 | } 479 | }); 480 | 481 | this.appendDigitToClock(obj); 482 | }, 483 | 484 | /** 485 | * Triggers when the clock is started 486 | */ 487 | 488 | start: function() {}, 489 | 490 | /** 491 | * Triggers when the time on the clock stops 492 | */ 493 | 494 | stop: function() {}, 495 | 496 | /** 497 | * Auto increments/decrements the value of the clock face 498 | */ 499 | 500 | autoIncrement: function() { 501 | if(!this.factory.countdown) { 502 | this.increment(); 503 | } 504 | else { 505 | this.decrement(); 506 | } 507 | }, 508 | 509 | /** 510 | * Increments the value of the clock face 511 | */ 512 | 513 | increment: function() { 514 | this.factory.time.addSecond(); 515 | }, 516 | 517 | /** 518 | * Decrements the value of the clock face 519 | */ 520 | 521 | decrement: function() { 522 | if(this.factory.time.getTimeSeconds() == 0) { 523 | this.factory.stop() 524 | } 525 | else { 526 | this.factory.time.subSecond(); 527 | } 528 | }, 529 | 530 | /** 531 | * Triggers when the numbers on the clock flip 532 | */ 533 | 534 | flip: function(time, doNotAddPlayClass) { 535 | var t = this; 536 | 537 | $.each(time, function(i, digit) { 538 | var list = t.lists[i]; 539 | 540 | if(list) { 541 | if(!doNotAddPlayClass && digit != list.digit) { 542 | list.play(); 543 | } 544 | 545 | list.select(digit); 546 | } 547 | else { 548 | t.addDigit(digit); 549 | } 550 | }); 551 | } 552 | 553 | }); 554 | 555 | }(jQuery)); 556 | 557 | /*jshint smarttabs:true */ 558 | 559 | /** 560 | * FlipClock.js 561 | * 562 | * @author Justin Kimbrell 563 | * @copyright 2013 - Objective HTML, LLC 564 | * @licesnse http://www.opensource.org/licenses/mit-license.php 565 | */ 566 | 567 | (function($) { 568 | 569 | "use strict"; 570 | 571 | /** 572 | * The FlipClock Factory class is used to build the clock and manage 573 | * all the public methods. 574 | * 575 | * @param object A jQuery object or CSS selector used to fetch 576 | the wrapping DOM nodes 577 | * @param mixed This is the digit used to set the clock. If an 578 | object is passed, 0 will be used. 579 | * @param object An object of properties to override the default 580 | */ 581 | 582 | FlipClock.Factory = FlipClock.Base.extend({ 583 | 584 | /** 585 | * The clock's animation rate. 586 | * 587 | * Note, currently this property doesn't do anything. 588 | * This property is here to be used in the future to 589 | * programmaticaly set the clock's animation speed 590 | */ 591 | 592 | animationRate: 1000, 593 | 594 | /** 595 | * Auto start the clock on page load (True|False) 596 | */ 597 | 598 | autoStart: true, 599 | 600 | /** 601 | * The callback methods 602 | */ 603 | 604 | callbacks: { 605 | destroy: false, 606 | create: false, 607 | init: false, 608 | interval: false, 609 | start: false, 610 | stop: false, 611 | reset: false 612 | }, 613 | 614 | /** 615 | * The CSS classes 616 | */ 617 | 618 | classes: { 619 | active: 'flip-clock-active', 620 | before: 'flip-clock-before', 621 | divider: 'flip-clock-divider', 622 | dot: 'flip-clock-dot', 623 | label: 'flip-clock-label', 624 | flip: 'flip', 625 | play: 'play', 626 | wrapper: 'flip-clock-wrapper' 627 | }, 628 | 629 | /** 630 | * The name of the clock face class in use 631 | */ 632 | 633 | clockFace: 'HourlyCounter', 634 | 635 | /** 636 | * The name of the clock face class in use 637 | */ 638 | 639 | countdown: false, 640 | 641 | /** 642 | * The name of the default clock face class to use if the defined 643 | * clockFace variable is not a valid FlipClock.Face object 644 | */ 645 | 646 | defaultClockFace: 'HourlyCounter', 647 | 648 | /** 649 | * The default language 650 | */ 651 | 652 | defaultLanguage: 'english', 653 | 654 | /** 655 | * The jQuery object 656 | */ 657 | 658 | $el: false, 659 | 660 | /** 661 | * The FlipClock.Face object 662 | */ 663 | 664 | face: true, 665 | 666 | /** 667 | * The language object after it has been loaded 668 | */ 669 | 670 | lang: false, 671 | 672 | /** 673 | * The language being used to display labels (string) 674 | */ 675 | 676 | language: 'english', 677 | 678 | /** 679 | * The minimum digits the clock must have 680 | */ 681 | 682 | minimumDigits: 0, 683 | 684 | /** 685 | * The original starting value of the clock. Used for the reset method. 686 | */ 687 | 688 | original: false, 689 | 690 | /** 691 | * Is the clock running? (True|False) 692 | */ 693 | 694 | running: false, 695 | 696 | /** 697 | * The FlipClock.Time object 698 | */ 699 | 700 | time: false, 701 | 702 | /** 703 | * The FlipClock.Timer object 704 | */ 705 | 706 | timer: false, 707 | 708 | /** 709 | * The jQuery object (depcrecated) 710 | */ 711 | 712 | $wrapper: false, 713 | 714 | /** 715 | * Constructor 716 | * 717 | * @param object The wrapping jQuery object 718 | * @param object Number of seconds used to start the clock 719 | * @param object An object override options 720 | */ 721 | 722 | constructor: function(obj, digit, options) { 723 | 724 | if(!options) { 725 | options = {}; 726 | } 727 | 728 | this.lists = []; 729 | this.running = false; 730 | this.base(options); 731 | 732 | this.$el = $(obj).addClass(this.classes.wrapper); 733 | 734 | // Depcrated support of the $wrapper property. 735 | this.$wrapper = this.$el; 736 | 737 | this.original = (digit instanceof Date) ? digit : (digit ? Math.round(digit) : 0); 738 | 739 | this.time = new FlipClock.Time(this, this.original, { 740 | minimumDigits: this.minimumDigits, 741 | animationRate: this.animationRate 742 | }); 743 | 744 | this.timer = new FlipClock.Timer(this, options); 745 | 746 | this.loadLanguage(this.language); 747 | 748 | this.loadClockFace(this.clockFace, options); 749 | 750 | if(this.autoStart) { 751 | this.start(); 752 | } 753 | 754 | }, 755 | 756 | /** 757 | * Load the FlipClock.Face object 758 | * 759 | * @param object The name of the FlickClock.Face class 760 | * @param object An object override options 761 | */ 762 | 763 | loadClockFace: function(name, options) { 764 | var face, suffix = 'Face', hasStopped = false; 765 | 766 | name = name.ucfirst()+suffix; 767 | 768 | if(this.face.stop) { 769 | this.stop(); 770 | hasStopped = true; 771 | } 772 | 773 | this.$el.html(''); 774 | 775 | this.time.minimumDigits = this.minimumDigits; 776 | 777 | if(FlipClock[name]) { 778 | face = new FlipClock[name](this, options); 779 | } 780 | else { 781 | face = new FlipClock[this.defaultClockFace+suffix](this, options); 782 | } 783 | 784 | face.build(); 785 | 786 | this.face = face 787 | 788 | if(hasStopped) { 789 | this.start(); 790 | } 791 | 792 | return this.face; 793 | }, 794 | 795 | /** 796 | * Load the FlipClock.Lang object 797 | * 798 | * @param object The name of the language to load 799 | */ 800 | 801 | loadLanguage: function(name) { 802 | var lang; 803 | 804 | if(FlipClock.Lang[name.ucfirst()]) { 805 | lang = FlipClock.Lang[name.ucfirst()]; 806 | } 807 | else if(FlipClock.Lang[name]) { 808 | lang = FlipClock.Lang[name]; 809 | } 810 | else { 811 | lang = FlipClock.Lang[this.defaultLanguage]; 812 | } 813 | 814 | return this.lang = lang; 815 | }, 816 | 817 | /** 818 | * Localize strings into various languages 819 | * 820 | * @param string The index of the localized string 821 | * @param object Optionally pass a lang object 822 | */ 823 | 824 | localize: function(index, obj) { 825 | var lang = this.lang; 826 | 827 | if(!index) { 828 | return null; 829 | } 830 | 831 | var lindex = index.toLowerCase(); 832 | 833 | if(typeof obj == "object") { 834 | lang = obj; 835 | } 836 | 837 | if(lang && lang[lindex]) { 838 | return lang[lindex]; 839 | } 840 | 841 | return index; 842 | }, 843 | 844 | 845 | /** 846 | * Starts the clock 847 | */ 848 | 849 | start: function(callback) { 850 | var t = this; 851 | 852 | if(!t.running && (!t.countdown || t.countdown && t.time.time > 0)) { 853 | t.face.start(t.time); 854 | t.timer.start(function() { 855 | t.flip(); 856 | 857 | if(typeof callback === "function") { 858 | callback(); 859 | } 860 | }); 861 | } 862 | else { 863 | t.log('Trying to start timer when countdown already at 0'); 864 | } 865 | }, 866 | 867 | /** 868 | * Stops the clock 869 | */ 870 | 871 | stop: function(callback) { 872 | this.face.stop(); 873 | this.timer.stop(callback); 874 | 875 | for(var x in this.lists) { 876 | if (this.lists.hasOwnProperty(x)) { 877 | this.lists[x].stop(); 878 | } 879 | } 880 | }, 881 | 882 | /** 883 | * Reset the clock 884 | */ 885 | 886 | reset: function(callback) { 887 | this.timer.reset(callback); 888 | this.face.reset(); 889 | }, 890 | 891 | /** 892 | * Sets the clock time 893 | */ 894 | 895 | setTime: function(time) { 896 | this.time.time = time; 897 | this.flip(true); 898 | }, 899 | 900 | /** 901 | * Get the clock time 902 | * 903 | * @return object Returns a FlipClock.Time object 904 | */ 905 | 906 | getTime: function(time) { 907 | return this.time; 908 | }, 909 | 910 | /** 911 | * Changes the increment of time to up or down (add/sub) 912 | */ 913 | 914 | setCountdown: function(value) { 915 | var running = this.running; 916 | 917 | this.countdown = value ? true : false; 918 | 919 | if(running) { 920 | this.stop(); 921 | this.start(); 922 | } 923 | }, 924 | 925 | /** 926 | * Flip the digits on the clock 927 | * 928 | * @param array An array of digits 929 | */ 930 | flip: function(doNotAddPlayClass) { 931 | this.face.flip(false, doNotAddPlayClass); 932 | } 933 | 934 | }); 935 | 936 | }(jQuery)); 937 | 938 | /*jshint smarttabs:true */ 939 | 940 | /** 941 | * FlipClock.js 942 | * 943 | * @author Justin Kimbrell 944 | * @copyright 2013 - Objective HTML, LLC 945 | * @licesnse http://www.opensource.org/licenses/mit-license.php 946 | */ 947 | 948 | (function($) { 949 | 950 | "use strict"; 951 | 952 | /** 953 | * The FlipClock List class is used to build the list used to create 954 | * the card flip effect. This object fascilates selecting the correct 955 | * node by passing a specific digit. 956 | * 957 | * @param object A FlipClock.Factory object 958 | * @param mixed This is the digit used to set the clock. If an 959 | * object is passed, 0 will be used. 960 | * @param object An object of properties to override the default 961 | */ 962 | 963 | FlipClock.List = FlipClock.Base.extend({ 964 | 965 | /** 966 | * The digit (0-9) 967 | */ 968 | 969 | digit: 0, 970 | 971 | /** 972 | * The CSS classes 973 | */ 974 | 975 | classes: { 976 | active: 'flip-clock-active', 977 | before: 'flip-clock-before', 978 | flip: 'flip' 979 | }, 980 | 981 | /** 982 | * The parent FlipClock.Factory object 983 | */ 984 | 985 | factory: false, 986 | 987 | /** 988 | * The jQuery object 989 | */ 990 | 991 | $el: false, 992 | 993 | /** 994 | * The jQuery object (deprecated) 995 | */ 996 | 997 | $obj: false, 998 | 999 | /** 1000 | * The items in the list 1001 | */ 1002 | 1003 | items: [], 1004 | 1005 | /** 1006 | * The last digit 1007 | */ 1008 | 1009 | lastDigit: 0, 1010 | 1011 | /** 1012 | * Constructor 1013 | * 1014 | * @param object A FlipClock.Factory object 1015 | * @param int An integer use to select the correct digit 1016 | * @param object An object to override the default properties 1017 | */ 1018 | 1019 | constructor: function(factory, digit, options) { 1020 | this.factory = factory; 1021 | this.digit = digit; 1022 | this.lastDigit = digit; 1023 | this.$el = this.createList(); 1024 | 1025 | // Depcrated support of the $obj property. 1026 | this.$obj = this.$el; 1027 | 1028 | if(digit > 0) { 1029 | this.select(digit); 1030 | } 1031 | 1032 | this.factory.$el.append(this.$el); 1033 | }, 1034 | 1035 | /** 1036 | * Select the digit in the list 1037 | * 1038 | * @param int A digit 0-9 1039 | */ 1040 | 1041 | select: function(digit) { 1042 | if(typeof digit === "undefined") { 1043 | digit = this.digit; 1044 | } 1045 | else { 1046 | this.digit = digit; 1047 | } 1048 | 1049 | if(this.digit != this.lastDigit) { 1050 | var $delete = this.$el.find('.'+this.classes.before).removeClass(this.classes.before); 1051 | 1052 | this.$el.find('.'+this.classes.active).removeClass(this.classes.active) 1053 | .addClass(this.classes.before); 1054 | 1055 | this.appendListItem(this.classes.active, this.digit); 1056 | 1057 | $delete.remove(); 1058 | 1059 | this.lastDigit = this.digit; 1060 | } 1061 | }, 1062 | 1063 | /** 1064 | * Adds the play class to the DOM object 1065 | */ 1066 | 1067 | play: function() { 1068 | this.$el.addClass(this.factory.classes.play); 1069 | }, 1070 | 1071 | /** 1072 | * Removes the play class to the DOM object 1073 | */ 1074 | 1075 | stop: function() { 1076 | var t = this; 1077 | 1078 | setTimeout(function() { 1079 | t.$el.removeClass(t.factory.classes.play); 1080 | }, this.factory.timer.interval); 1081 | }, 1082 | 1083 | /** 1084 | * Creates the list item HTML and returns as a string 1085 | */ 1086 | 1087 | createListItem: function(css, value) { 1088 | return [ 1089 | '
  • ', 1090 | '', 1091 | '
    ', 1092 | '
    ', 1093 | '
    '+(value ? value : '')+'
    ', 1094 | '
    ', 1095 | '
    ', 1096 | '
    ', 1097 | '
    '+(value ? value : '')+'
    ', 1098 | '
    ', 1099 | '
    ', 1100 | '
  • ' 1101 | ].join(''); 1102 | }, 1103 | 1104 | /** 1105 | * Append the list item to the parent DOM node 1106 | */ 1107 | 1108 | appendListItem: function(css, value) { 1109 | var html = this.createListItem(css, value); 1110 | 1111 | this.$el.append(html); 1112 | }, 1113 | 1114 | /** 1115 | * Create the list of digits and appends it to the DOM object 1116 | */ 1117 | 1118 | createList: function() { 1119 | 1120 | var lastDigit = this.getPrevDigit() ? this.getPrevDigit() : this.digit; 1121 | 1122 | var html = $([ 1123 | '' 1127 | ].join('')); 1128 | 1129 | return html; 1130 | }, 1131 | 1132 | getNextDigit: function() { 1133 | return this.digit == 9 ? 0 : this.digit + 1; 1134 | }, 1135 | 1136 | getPrevDigit: function() { 1137 | return this.digit == 0 ? 9 : this.digit - 1; 1138 | } 1139 | 1140 | }); 1141 | 1142 | 1143 | }(jQuery)); 1144 | 1145 | /*jshint smarttabs:true */ 1146 | 1147 | /** 1148 | * FlipClock.js 1149 | * 1150 | * @author Justin Kimbrell 1151 | * @copyright 2013 - Objective HTML, LLC 1152 | * @licesnse http://www.opensource.org/licenses/mit-license.php 1153 | */ 1154 | 1155 | (function($) { 1156 | 1157 | "use strict"; 1158 | 1159 | /** 1160 | * Capitalize the first letter in a string 1161 | * 1162 | * @return string 1163 | */ 1164 | 1165 | String.prototype.ucfirst = function() { 1166 | return this.substr(0, 1).toUpperCase() + this.substr(1); 1167 | }; 1168 | 1169 | /** 1170 | * jQuery helper method 1171 | * 1172 | * @param int An integer used to start the clock (no. seconds) 1173 | * @param object An object of properties to override the default 1174 | */ 1175 | 1176 | $.fn.FlipClock = function(digit, options) { 1177 | return new FlipClock($(this), digit, options); 1178 | }; 1179 | 1180 | /** 1181 | * jQuery helper method 1182 | * 1183 | * @param int An integer used to start the clock (no. seconds) 1184 | * @param object An object of properties to override the default 1185 | */ 1186 | 1187 | $.fn.flipClock = function(digit, options) { 1188 | return $.fn.FlipClock(digit, options); 1189 | }; 1190 | 1191 | }(jQuery)); 1192 | 1193 | /*jshint smarttabs:true */ 1194 | 1195 | /** 1196 | * FlipClock.js 1197 | * 1198 | * @author Justin Kimbrell 1199 | * @copyright 2013 - Objective HTML, LLC 1200 | * @licesnse http://www.opensource.org/licenses/mit-license.php 1201 | */ 1202 | 1203 | (function($) { 1204 | 1205 | "use strict"; 1206 | 1207 | /** 1208 | * The FlipClock Time class is used to manage all the time 1209 | * calculations. 1210 | * 1211 | * @param object A FlipClock.Factory object 1212 | * @param mixed This is the digit used to set the clock. If an 1213 | * object is passed, 0 will be used. 1214 | * @param object An object of properties to override the default 1215 | */ 1216 | 1217 | FlipClock.Time = FlipClock.Base.extend({ 1218 | 1219 | /** 1220 | * The time (in seconds) or a date object 1221 | */ 1222 | 1223 | time: 0, 1224 | 1225 | /** 1226 | * The parent FlipClock.Factory object 1227 | */ 1228 | 1229 | factory: false, 1230 | 1231 | /** 1232 | * The minimum number of digits the clock face must have 1233 | */ 1234 | 1235 | minimumDigits: 0, 1236 | 1237 | /** 1238 | * Constructor 1239 | * 1240 | * @param object A FlipClock.Factory object 1241 | * @param int An integer use to select the correct digit 1242 | * @param object An object to override the default properties 1243 | */ 1244 | 1245 | constructor: function(factory, time, options) { 1246 | if(typeof options != "object") { 1247 | options = {}; 1248 | } 1249 | 1250 | if(!options.minimumDigits) { 1251 | options.minimumDigits = factory.minimumDigits; 1252 | } 1253 | 1254 | this.base(options); 1255 | this.factory = factory; 1256 | 1257 | if(time) { 1258 | this.time = time; 1259 | } 1260 | }, 1261 | 1262 | /** 1263 | * Convert a string or integer to an array of digits 1264 | * 1265 | * @param mixed String or Integer of digits 1266 | * @return array An array of digits 1267 | */ 1268 | 1269 | convertDigitsToArray: function(str) { 1270 | var data = []; 1271 | 1272 | str = str.toString(); 1273 | 1274 | for(var x = 0;x < str.length; x++) { 1275 | if(str[x].match(/^\d*$/g)) { 1276 | data.push(str[x]); 1277 | } 1278 | } 1279 | 1280 | return data; 1281 | }, 1282 | 1283 | /** 1284 | * Get a specific digit from the time integer 1285 | * 1286 | * @param int The specific digit to select from the time 1287 | * @return mixed Returns FALSE if no digit is found, otherwise 1288 | * the method returns the defined digit 1289 | */ 1290 | 1291 | digit: function(i) { 1292 | var timeStr = this.toString(); 1293 | var length = timeStr.length; 1294 | 1295 | if(timeStr[length - i]) { 1296 | return timeStr[length - i]; 1297 | } 1298 | 1299 | return false; 1300 | }, 1301 | 1302 | /** 1303 | * Formats any array of digits into a valid array of digits 1304 | * 1305 | * @param mixed An array of digits 1306 | * @return array An array of digits 1307 | */ 1308 | 1309 | digitize: function(obj) { 1310 | var data = []; 1311 | 1312 | $.each(obj, function(i, value) { 1313 | value = value.toString(); 1314 | 1315 | if(value.length == 1) { 1316 | value = '0'+value; 1317 | } 1318 | 1319 | for(var x = 0; x < value.length; x++) { 1320 | data.push(value.charAt(x)); 1321 | } 1322 | }); 1323 | 1324 | if(data.length > this.minimumDigits) { 1325 | this.minimumDigits = data.length; 1326 | } 1327 | 1328 | if(this.minimumDigits > data.length) { 1329 | for(var x = data.length; x < this.minimumDigits; x++) { 1330 | data.unshift('0'); 1331 | } 1332 | } 1333 | 1334 | return data; 1335 | }, 1336 | 1337 | /** 1338 | * Gets a new Date object for the current time 1339 | * 1340 | * @return array Returns a Date object 1341 | */ 1342 | 1343 | getDateObject: function() { 1344 | if(this.time instanceof Date) { 1345 | return this.time; 1346 | } 1347 | 1348 | return new Date((new Date()).getTime() + this.getTimeSeconds() * 1000); 1349 | }, 1350 | 1351 | /** 1352 | * Gets a digitized daily counter 1353 | * 1354 | * @return object Returns a digitized object 1355 | */ 1356 | 1357 | getDayCounter: function(includeSeconds) { 1358 | var digits = [ 1359 | this.getDays(), 1360 | this.getHours(true), 1361 | this.getMinutes(true) 1362 | ]; 1363 | 1364 | if(includeSeconds) { 1365 | digits.push(this.getSeconds(true)); 1366 | } 1367 | 1368 | return this.digitize(digits); 1369 | }, 1370 | 1371 | /** 1372 | * Gets number of days 1373 | * 1374 | * @param bool Should perform a modulus? If not sent, then no. 1375 | * @return int Retuns a floored integer 1376 | */ 1377 | 1378 | getDays: function(mod) { 1379 | var days = this.getTimeSeconds() / 60 / 60 / 24; 1380 | 1381 | if(mod) { 1382 | days = days % 7; 1383 | } 1384 | 1385 | return Math.floor(days); 1386 | }, 1387 | 1388 | /** 1389 | * Gets an hourly breakdown 1390 | * 1391 | * @return object Returns a digitized object 1392 | */ 1393 | 1394 | getHourCounter: function() { 1395 | var obj = this.digitize([ 1396 | this.getHours(), 1397 | this.getMinutes(true), 1398 | this.getSeconds(true) 1399 | ]); 1400 | 1401 | return obj; 1402 | }, 1403 | 1404 | /** 1405 | * Gets an hourly breakdown 1406 | * 1407 | * @return object Returns a digitized object 1408 | */ 1409 | 1410 | getHourly: function() { 1411 | return this.getHourCounter(); 1412 | }, 1413 | 1414 | /** 1415 | * Gets number of hours 1416 | * 1417 | * @param bool Should perform a modulus? If not sent, then no. 1418 | * @return int Retuns a floored integer 1419 | */ 1420 | 1421 | getHours: function(mod) { 1422 | var hours = this.getTimeSeconds() / 60 / 60; 1423 | 1424 | if(mod) { 1425 | hours = hours % 24; 1426 | } 1427 | 1428 | return Math.floor(hours); 1429 | }, 1430 | 1431 | /** 1432 | * Gets the twenty-four hour time 1433 | * 1434 | * @return object returns a digitized object 1435 | */ 1436 | 1437 | getMilitaryTime: function(date, showSeconds) { 1438 | if(typeof showSeconds === "undefined") { 1439 | showSeconds = true; 1440 | } 1441 | 1442 | if(!date) { 1443 | date = this.getDateObject(); 1444 | } 1445 | 1446 | var data = [ 1447 | date.getHours(), 1448 | date.getMinutes() 1449 | ]; 1450 | 1451 | if(showSeconds === true) { 1452 | data.push(date.getSeconds()); 1453 | } 1454 | 1455 | return this.digitize(data); 1456 | }, 1457 | 1458 | /** 1459 | * Gets number of minutes 1460 | * 1461 | * @param bool Should perform a modulus? If not sent, then no. 1462 | * @return int Retuns a floored integer 1463 | */ 1464 | 1465 | getMinutes: function(mod) { 1466 | var minutes = this.getTimeSeconds() / 60; 1467 | 1468 | if(mod) { 1469 | minutes = minutes % 60; 1470 | } 1471 | 1472 | return Math.floor(minutes); 1473 | }, 1474 | 1475 | /** 1476 | * Gets a minute breakdown 1477 | */ 1478 | 1479 | getMinuteCounter: function() { 1480 | var obj = this.digitize([ 1481 | this.getMinutes(), 1482 | this.getSeconds(true) 1483 | ]); 1484 | 1485 | return obj; 1486 | }, 1487 | 1488 | /** 1489 | * Gets time count in seconds regardless of if targetting date or not. 1490 | * 1491 | * @return int Returns a floored integer 1492 | */ 1493 | 1494 | getTimeSeconds: function(date) { 1495 | if(!date) { 1496 | date = new Date(); 1497 | } 1498 | 1499 | if (this.time instanceof Date) { 1500 | if (this.factory.countdown) { 1501 | return Math.max(this.time.getTime()/1000 - date.getTime()/1000,0); 1502 | } else { 1503 | return date.getTime()/1000 - this.time.getTime()/1000 ; 1504 | } 1505 | } else { 1506 | return this.time; 1507 | } 1508 | }, 1509 | 1510 | /** 1511 | * Gets the current twelve hour time 1512 | * 1513 | * @return object Returns a digitized object 1514 | */ 1515 | 1516 | getTime: function(date, showSeconds) { 1517 | if(typeof showSeconds === "undefined") { 1518 | showSeconds = true; 1519 | } 1520 | 1521 | if(!date) { 1522 | date = this.getDateObject(); 1523 | } 1524 | 1525 | console.log(date); 1526 | 1527 | 1528 | var hours = date.getHours(); 1529 | var merid = hours > 12 ? 'PM' : 'AM'; 1530 | var data = [ 1531 | hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours), 1532 | date.getMinutes() 1533 | ]; 1534 | 1535 | if(showSeconds === true) { 1536 | data.push(date.getSeconds()); 1537 | } 1538 | 1539 | return this.digitize(data); 1540 | }, 1541 | 1542 | /** 1543 | * Gets number of seconds 1544 | * 1545 | * @param bool Should perform a modulus? If not sent, then no. 1546 | * @return int Retuns a ceiled integer 1547 | */ 1548 | 1549 | getSeconds: function(mod) { 1550 | var seconds = this.getTimeSeconds(); 1551 | 1552 | if(mod) { 1553 | if(seconds == 60) { 1554 | seconds = 0; 1555 | } 1556 | else { 1557 | seconds = seconds % 60; 1558 | } 1559 | } 1560 | 1561 | return Math.ceil(seconds); 1562 | }, 1563 | 1564 | /** 1565 | * Gets number of weeks 1566 | * 1567 | * @param bool Should perform a modulus? If not sent, then no. 1568 | * @return int Retuns a floored integer 1569 | */ 1570 | 1571 | getWeeks: function(mod) { 1572 | var weeks = this.getTimeSeconds() / 60 / 60 / 24 / 7; 1573 | 1574 | if(mod) { 1575 | weeks = weeks % 52; 1576 | } 1577 | 1578 | return Math.floor(weeks); 1579 | }, 1580 | 1581 | /** 1582 | * Removes a specific number of leading zeros from the array. 1583 | * This method prevents you from removing too many digits, even 1584 | * if you try. 1585 | * 1586 | * @param int Total number of digits to remove 1587 | * @return array An array of digits 1588 | */ 1589 | 1590 | removeLeadingZeros: function(totalDigits, digits) { 1591 | var total = 0; 1592 | var newArray = []; 1593 | 1594 | $.each(digits, function(i, digit) { 1595 | if(i < totalDigits) { 1596 | total += parseInt(digits[i], 10); 1597 | } 1598 | else { 1599 | newArray.push(digits[i]); 1600 | } 1601 | }); 1602 | 1603 | if(total === 0) { 1604 | return newArray; 1605 | } 1606 | 1607 | return digits; 1608 | }, 1609 | 1610 | /** 1611 | * Adds X second to the current time 1612 | */ 1613 | 1614 | addSeconds: function(x) { 1615 | if(this.time instanceof Date) { 1616 | this.time.setSeconds(this.time.getSeconds() + x); 1617 | } 1618 | else { 1619 | this.time += x; 1620 | } 1621 | }, 1622 | 1623 | /** 1624 | * Adds 1 second to the current time 1625 | */ 1626 | 1627 | addSecond: function() { 1628 | this.addSeconds(1); 1629 | }, 1630 | 1631 | /** 1632 | * Substracts X seconds from the current time 1633 | */ 1634 | 1635 | subSeconds: function(x) { 1636 | if(this.time instanceof Date) { 1637 | this.time.setSeconds(this.time.getSeconds() - x); 1638 | } 1639 | else { 1640 | this.time -= x; 1641 | } 1642 | }, 1643 | 1644 | /** 1645 | * Substracts 1 second from the current time 1646 | */ 1647 | 1648 | subSecond: function() { 1649 | this.subSeconds(1); 1650 | }, 1651 | 1652 | /** 1653 | * Converts the object to a human readable string 1654 | */ 1655 | 1656 | toString: function() { 1657 | return this.getTimeSeconds().toString(); 1658 | } 1659 | 1660 | /* 1661 | getYears: function() { 1662 | return Math.floor(this.time / 60 / 60 / 24 / 7 / 52); 1663 | }, 1664 | 1665 | getDecades: function() { 1666 | return Math.floor(this.getWeeks() / 10); 1667 | }*/ 1668 | }); 1669 | 1670 | }(jQuery)); 1671 | 1672 | /*jshint smarttabs:true */ 1673 | 1674 | /** 1675 | * FlipClock.js 1676 | * 1677 | * @author Justin Kimbrell 1678 | * @copyright 2013 - Objective HTML, LLC 1679 | * @licesnse http://www.opensource.org/licenses/mit-license.php 1680 | */ 1681 | 1682 | (function($) { 1683 | 1684 | "use strict"; 1685 | 1686 | /** 1687 | * The FlipClock.Timer object managers the JS timers 1688 | * 1689 | * @param object The parent FlipClock.Factory object 1690 | * @param object Override the default options 1691 | */ 1692 | 1693 | FlipClock.Timer = FlipClock.Base.extend({ 1694 | 1695 | /** 1696 | * Callbacks 1697 | */ 1698 | 1699 | callbacks: { 1700 | destroy: false, 1701 | create: false, 1702 | init: false, 1703 | interval: false, 1704 | start: false, 1705 | stop: false, 1706 | reset: false 1707 | }, 1708 | 1709 | /** 1710 | * FlipClock timer count (how many intervals have passed) 1711 | */ 1712 | 1713 | count: 0, 1714 | 1715 | /** 1716 | * The parent FlipClock.Factory object 1717 | */ 1718 | 1719 | factory: false, 1720 | 1721 | /** 1722 | * Timer interval (1 second by default) 1723 | */ 1724 | 1725 | interval: 1000, 1726 | 1727 | /** 1728 | * The rate of the animation in milliseconds (not currently in use) 1729 | */ 1730 | 1731 | animationRate: 1000, 1732 | 1733 | /** 1734 | * Constructor 1735 | * 1736 | * @return void 1737 | */ 1738 | 1739 | constructor: function(factory, options) { 1740 | this.base(options); 1741 | this.factory = factory; 1742 | this.callback(this.callbacks.init); 1743 | this.callback(this.callbacks.create); 1744 | }, 1745 | 1746 | /** 1747 | * This method gets the elapsed the time as an interger 1748 | * 1749 | * @return void 1750 | */ 1751 | 1752 | getElapsed: function() { 1753 | return this.count * this.interval; 1754 | }, 1755 | 1756 | /** 1757 | * This method gets the elapsed the time as a Date object 1758 | * 1759 | * @return void 1760 | */ 1761 | 1762 | getElapsedTime: function() { 1763 | return new Date(this.time + this.getElapsed()); 1764 | }, 1765 | 1766 | /** 1767 | * This method is resets the timer 1768 | * 1769 | * @param callback This method resets the timer back to 0 1770 | * @return void 1771 | */ 1772 | 1773 | reset: function(callback) { 1774 | clearInterval(this.timer); 1775 | this.count = 0; 1776 | this._setInterval(callback); 1777 | this.callback(this.callbacks.reset); 1778 | }, 1779 | 1780 | /** 1781 | * This method is starts the timer 1782 | * 1783 | * @param callback A function that is called once the timer is destroyed 1784 | * @return void 1785 | */ 1786 | 1787 | start: function(callback) { 1788 | this.factory.running = true; 1789 | this._createTimer(callback); 1790 | this.callback(this.callbacks.start); 1791 | }, 1792 | 1793 | /** 1794 | * This method is stops the timer 1795 | * 1796 | * @param callback A function that is called once the timer is destroyed 1797 | * @return void 1798 | */ 1799 | 1800 | stop: function(callback) { 1801 | this.factory.running = false; 1802 | this._clearInterval(callback); 1803 | this.callback(this.callbacks.stop); 1804 | this.callback(callback); 1805 | }, 1806 | 1807 | /** 1808 | * Clear the timer interval 1809 | * 1810 | * @return void 1811 | */ 1812 | 1813 | _clearInterval: function() { 1814 | clearInterval(this.timer); 1815 | }, 1816 | 1817 | /** 1818 | * Create the timer object 1819 | * 1820 | * @param callback A function that is called once the timer is created 1821 | * @return void 1822 | */ 1823 | 1824 | _createTimer: function(callback) { 1825 | this._setInterval(callback); 1826 | }, 1827 | 1828 | /** 1829 | * Destroy the timer object 1830 | * 1831 | * @param callback A function that is called once the timer is destroyed 1832 | * @return void 1833 | */ 1834 | 1835 | _destroyTimer: function(callback) { 1836 | this._clearInterval(); 1837 | this.timer = false; 1838 | this.callback(callback); 1839 | this.callback(this.callbacks.destroy); 1840 | }, 1841 | 1842 | /** 1843 | * This method is called each time the timer interval is ran 1844 | * 1845 | * @param callback A function that is called once the timer is destroyed 1846 | * @return void 1847 | */ 1848 | 1849 | _interval: function(callback) { 1850 | this.callback(this.callbacks.interval); 1851 | this.callback(callback); 1852 | this.count++; 1853 | }, 1854 | 1855 | /** 1856 | * This sets the timer interval 1857 | * 1858 | * @param callback A function that is called once the timer is destroyed 1859 | * @return void 1860 | */ 1861 | 1862 | _setInterval: function(callback) { 1863 | var t = this; 1864 | 1865 | t._interval(callback); 1866 | 1867 | t.timer = setInterval(function() { 1868 | t._interval(callback); 1869 | }, this.interval); 1870 | } 1871 | 1872 | }); 1873 | 1874 | }(jQuery)); 1875 | 1876 | (function($) { 1877 | 1878 | /** 1879 | * Twenty-Four Hour Clock Face 1880 | * 1881 | * This class will generate a twenty-four our clock for FlipClock.js 1882 | * 1883 | * @param object The parent FlipClock.Factory object 1884 | * @param object An object of properties to override the default 1885 | */ 1886 | 1887 | FlipClock.TwentyFourHourClockFace = FlipClock.Face.extend({ 1888 | 1889 | /** 1890 | * Constructor 1891 | * 1892 | * @param object The parent FlipClock.Factory object 1893 | * @param object An object of properties to override the default 1894 | */ 1895 | 1896 | constructor: function(factory, options) { 1897 | this.base(factory, options); 1898 | }, 1899 | 1900 | /** 1901 | * Build the clock face 1902 | * 1903 | * @param object Pass the time that should be used to display on the clock. 1904 | */ 1905 | 1906 | build: function(time) { 1907 | var t = this; 1908 | var children = this.factory.$el.find('ul'); 1909 | 1910 | if(!this.factory.time.time) { 1911 | this.factory.original = new Date(); 1912 | 1913 | this.factory.time = new FlipClock.Time(this.factory, this.factory.original); 1914 | } 1915 | 1916 | var time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); 1917 | 1918 | if(time.length > children.length) { 1919 | $.each(time, function(i, digit) { 1920 | t.createList(digit); 1921 | }); 1922 | } 1923 | 1924 | this.createDivider(); 1925 | this.createDivider(); 1926 | 1927 | $(this.dividers[0]).insertBefore(this.lists[this.lists.length - 2].$el); 1928 | $(this.dividers[1]).insertBefore(this.lists[this.lists.length - 4].$el); 1929 | 1930 | this.base(); 1931 | }, 1932 | 1933 | /** 1934 | * Flip the clock face 1935 | */ 1936 | 1937 | flip: function(time, doNotAddPlayClass) { 1938 | this.autoIncrement(); 1939 | 1940 | time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); 1941 | 1942 | this.base(time, doNotAddPlayClass); 1943 | } 1944 | 1945 | }); 1946 | 1947 | }(jQuery)); 1948 | (function($) { 1949 | 1950 | /** 1951 | * Counter Clock Face 1952 | * 1953 | * This class will generate a generice flip counter. The timer has been 1954 | * disabled. clock.increment() and clock.decrement() have been added. 1955 | * 1956 | * @param object The parent FlipClock.Factory object 1957 | * @param object An object of properties to override the default 1958 | */ 1959 | 1960 | FlipClock.CounterFace = FlipClock.Face.extend({ 1961 | 1962 | /** 1963 | * Tells the counter clock face if it should auto-increment 1964 | */ 1965 | 1966 | shouldAutoIncrement: false, 1967 | 1968 | /** 1969 | * Constructor 1970 | * 1971 | * @param object The parent FlipClock.Factory object 1972 | * @param object An object of properties to override the default 1973 | */ 1974 | 1975 | constructor: function(factory, options) { 1976 | 1977 | if(typeof options != "object") { 1978 | options = {}; 1979 | } 1980 | 1981 | factory.autoStart = options.autoStart ? true : false; 1982 | 1983 | if(options.autoStart) { 1984 | this.shouldAutoIncrement = true; 1985 | } 1986 | 1987 | factory.increment = function() { 1988 | factory.countdown = false; 1989 | factory.setTime(factory.getTime().getTimeSeconds() + 1); 1990 | }; 1991 | 1992 | factory.decrement = function() { 1993 | factory.countdown = true; 1994 | var time = factory.getTime().getTimeSeconds(); 1995 | if(time > 0) { 1996 | factory.setTime(time - 1); 1997 | } 1998 | }; 1999 | 2000 | factory.setValue = function(digits) { 2001 | factory.setTime(digits); 2002 | }; 2003 | 2004 | factory.setCounter = function(digits) { 2005 | factory.setTime(digits); 2006 | }; 2007 | 2008 | this.base(factory, options); 2009 | }, 2010 | 2011 | /** 2012 | * Build the clock face 2013 | */ 2014 | 2015 | build: function() { 2016 | var t = this; 2017 | var children = this.factory.$el.find('ul'); 2018 | var time = this.factory.getTime().digitize([this.factory.getTime().time]); 2019 | 2020 | if(time.length > children.length) { 2021 | $.each(time, function(i, digit) { 2022 | var list = t.createList(digit); 2023 | 2024 | list.select(digit); 2025 | }); 2026 | 2027 | } 2028 | 2029 | $.each(this.lists, function(i, list) { 2030 | list.play(); 2031 | }); 2032 | 2033 | this.base(); 2034 | }, 2035 | 2036 | /** 2037 | * Flip the clock face 2038 | */ 2039 | 2040 | flip: function(time, doNotAddPlayClass) { 2041 | if(this.shouldAutoIncrement) { 2042 | this.autoIncrement(); 2043 | } 2044 | 2045 | if(!time) { 2046 | time = this.factory.getTime().digitize([this.factory.getTime().time]); 2047 | } 2048 | 2049 | this.base(time, doNotAddPlayClass); 2050 | }, 2051 | 2052 | /** 2053 | * Reset the clock face 2054 | */ 2055 | 2056 | reset: function() { 2057 | this.factory.time = new FlipClock.Time( 2058 | this.factory, 2059 | this.factory.original ? Math.round(this.factory.original) : 0 2060 | ); 2061 | 2062 | this.flip(); 2063 | } 2064 | }); 2065 | 2066 | }(jQuery)); 2067 | (function($) { 2068 | 2069 | /** 2070 | * Daily Counter Clock Face 2071 | * 2072 | * This class will generate a daily counter for FlipClock.js. A 2073 | * daily counter will track days, hours, minutes, and seconds. If 2074 | * the number of available digits is exceeded in the count, a new 2075 | * digit will be created. 2076 | * 2077 | * @param object The parent FlipClock.Factory object 2078 | * @param object An object of properties to override the default 2079 | */ 2080 | 2081 | FlipClock.DailyCounterFace = FlipClock.Face.extend({ 2082 | 2083 | showSeconds: true, 2084 | 2085 | /** 2086 | * Constructor 2087 | * 2088 | * @param object The parent FlipClock.Factory object 2089 | * @param object An object of properties to override the default 2090 | */ 2091 | 2092 | constructor: function(factory, options) { 2093 | this.base(factory, options); 2094 | }, 2095 | 2096 | /** 2097 | * Build the clock face 2098 | */ 2099 | 2100 | build: function(time) { 2101 | var t = this; 2102 | var children = this.factory.$el.find('ul'); 2103 | var offset = 0; 2104 | 2105 | time = time ? time : this.factory.time.getDayCounter(this.showSeconds); 2106 | 2107 | if(time.length > children.length) { 2108 | $.each(time, function(i, digit) { 2109 | t.createList(digit); 2110 | }); 2111 | } 2112 | 2113 | if(this.showSeconds) { 2114 | $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); 2115 | } 2116 | else 2117 | { 2118 | offset = 2; 2119 | } 2120 | 2121 | $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4 + offset].$el); 2122 | $(this.createDivider('Hours')).insertBefore(this.lists[this.lists.length - 6 + offset].$el); 2123 | $(this.createDivider('Days', true)).insertBefore(this.lists[0].$el); 2124 | 2125 | this.base(); 2126 | }, 2127 | 2128 | /** 2129 | * Flip the clock face 2130 | */ 2131 | 2132 | flip: function(time, doNotAddPlayClass) { 2133 | if(!time) { 2134 | time = this.factory.time.getDayCounter(this.showSeconds); 2135 | } 2136 | 2137 | this.autoIncrement(); 2138 | 2139 | this.base(time, doNotAddPlayClass); 2140 | } 2141 | 2142 | }); 2143 | 2144 | }(jQuery)); 2145 | (function($) { 2146 | 2147 | /** 2148 | * Hourly Counter Clock Face 2149 | * 2150 | * This class will generate an hourly counter for FlipClock.js. An 2151 | * hour counter will track hours, minutes, and seconds. If number of 2152 | * available digits is exceeded in the count, a new digit will be 2153 | * created. 2154 | * 2155 | * @param object The parent FlipClock.Factory object 2156 | * @param object An object of properties to override the default 2157 | */ 2158 | 2159 | FlipClock.HourlyCounterFace = FlipClock.Face.extend({ 2160 | 2161 | // clearExcessDigits: true, 2162 | 2163 | /** 2164 | * Constructor 2165 | * 2166 | * @param object The parent FlipClock.Factory object 2167 | * @param object An object of properties to override the default 2168 | */ 2169 | 2170 | constructor: function(factory, options) { 2171 | this.base(factory, options); 2172 | }, 2173 | 2174 | /** 2175 | * Build the clock face 2176 | */ 2177 | 2178 | build: function(excludeHours, time) { 2179 | var t = this; 2180 | var children = this.factory.$el.find('ul'); 2181 | 2182 | time = time ? time : this.factory.time.getHourCounter(); 2183 | 2184 | if(time.length > children.length) { 2185 | $.each(time, function(i, digit) { 2186 | t.createList(digit); 2187 | }); 2188 | } 2189 | 2190 | $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); 2191 | $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4].$el); 2192 | 2193 | if(!excludeHours) { 2194 | $(this.createDivider('Hours', true)).insertBefore(this.lists[0].$el); 2195 | } 2196 | 2197 | this.base(); 2198 | }, 2199 | 2200 | /** 2201 | * Flip the clock face 2202 | */ 2203 | 2204 | flip: function(time, doNotAddPlayClass) { 2205 | if(!time) { 2206 | time = this.factory.time.getHourCounter(); 2207 | } 2208 | 2209 | this.autoIncrement(); 2210 | 2211 | this.base(time, doNotAddPlayClass); 2212 | }, 2213 | 2214 | /** 2215 | * Append a newly created list to the clock 2216 | */ 2217 | 2218 | appendDigitToClock: function(obj) { 2219 | this.base(obj); 2220 | 2221 | this.dividers[0].insertAfter(this.dividers[0].next()); 2222 | } 2223 | 2224 | }); 2225 | 2226 | }(jQuery)); 2227 | (function($) { 2228 | 2229 | /** 2230 | * Minute Counter Clock Face 2231 | * 2232 | * This class will generate a minute counter for FlipClock.js. A 2233 | * minute counter will track minutes and seconds. If an hour is 2234 | * reached, the counter will reset back to 0. (4 digits max) 2235 | * 2236 | * @param object The parent FlipClock.Factory object 2237 | * @param object An object of properties to override the default 2238 | */ 2239 | 2240 | FlipClock.MinuteCounterFace = FlipClock.HourlyCounterFace.extend({ 2241 | 2242 | clearExcessDigits: false, 2243 | 2244 | /** 2245 | * Constructor 2246 | * 2247 | * @param object The parent FlipClock.Factory object 2248 | * @param object An object of properties to override the default 2249 | */ 2250 | 2251 | constructor: function(factory, options) { 2252 | this.base(factory, options); 2253 | }, 2254 | 2255 | /** 2256 | * Build the clock face 2257 | */ 2258 | 2259 | build: function() { 2260 | this.base(true, this.factory.time.getMinuteCounter()); 2261 | }, 2262 | 2263 | /** 2264 | * Flip the clock face 2265 | */ 2266 | 2267 | flip: function(time, doNotAddPlayClass) { 2268 | if(!time) { 2269 | time = this.factory.time.getMinuteCounter(); 2270 | } 2271 | 2272 | this.base(time, doNotAddPlayClass); 2273 | } 2274 | 2275 | }); 2276 | 2277 | }(jQuery)); 2278 | (function($) { 2279 | 2280 | /** 2281 | * Twelve Hour Clock Face 2282 | * 2283 | * This class will generate a twelve hour clock for FlipClock.js 2284 | * 2285 | * @param object The parent FlipClock.Factory object 2286 | * @param object An object of properties to override the default 2287 | */ 2288 | 2289 | FlipClock.TwelveHourClockFace = FlipClock.TwentyFourHourClockFace.extend({ 2290 | 2291 | /** 2292 | * The meridium jQuery DOM object 2293 | */ 2294 | 2295 | meridium: false, 2296 | 2297 | /** 2298 | * The meridium text as string for easy access 2299 | */ 2300 | 2301 | meridiumText: 'AM', 2302 | 2303 | /** 2304 | * Build the clock face 2305 | * 2306 | * @param object Pass the time that should be used to display on the clock. 2307 | */ 2308 | 2309 | build: function() { 2310 | var t = this; 2311 | 2312 | var time = this.factory.time.getTime(false, this.showSeconds); 2313 | 2314 | this.base(time); 2315 | this.meridiumText = this.getMeridium(); 2316 | this.meridium = $([ 2317 | '' 2322 | ].join('')); 2323 | 2324 | this.meridium.insertAfter(this.lists[this.lists.length-1].$el); 2325 | }, 2326 | 2327 | /** 2328 | * Flip the clock face 2329 | */ 2330 | 2331 | flip: function(time, doNotAddPlayClass) { 2332 | if(this.meridiumText != this.getMeridium()) { 2333 | this.meridiumText = this.getMeridium(); 2334 | this.meridium.find('a').html(this.meridiumText); 2335 | } 2336 | this.base(this.factory.time.getTime(false, this.showSeconds), doNotAddPlayClass); 2337 | }, 2338 | 2339 | /** 2340 | * Get the current meridium 2341 | * 2342 | * @return string Returns the meridium (AM|PM) 2343 | */ 2344 | 2345 | getMeridium: function() { 2346 | return new Date().getHours() >= 12 ? 'PM' : 'AM'; 2347 | }, 2348 | 2349 | /** 2350 | * Is it currently in the post-medirium? 2351 | * 2352 | * @return bool Returns true or false 2353 | */ 2354 | 2355 | isPM: function() { 2356 | return this.getMeridium() == 'PM' ? true : false; 2357 | }, 2358 | 2359 | /** 2360 | * Is it currently before the post-medirium? 2361 | * 2362 | * @return bool Returns true or false 2363 | */ 2364 | 2365 | isAM: function() { 2366 | return this.getMeridium() == 'AM' ? true : false; 2367 | } 2368 | 2369 | }); 2370 | 2371 | }(jQuery)); 2372 | (function($) { 2373 | 2374 | /** 2375 | * FlipClock Arabic Language Pack 2376 | * 2377 | * This class will be used to translate tokens into the Arabic language. 2378 | * 2379 | */ 2380 | 2381 | FlipClock.Lang.Arabic = { 2382 | 2383 | 'years' : 'سنوات', 2384 | 'months' : 'شهور', 2385 | 'days' : 'أيام', 2386 | 'hours' : 'ساعات', 2387 | 'minutes' : 'دقائق', 2388 | 'seconds' : 'ثواني' 2389 | 2390 | }; 2391 | 2392 | /* Create various aliases for convenience */ 2393 | 2394 | FlipClock.Lang['ar'] = FlipClock.Lang.Arabic; 2395 | FlipClock.Lang['ar-ar'] = FlipClock.Lang.Arabic; 2396 | FlipClock.Lang['arabic'] = FlipClock.Lang.Arabic; 2397 | 2398 | }(jQuery)); 2399 | (function($) { 2400 | 2401 | /** 2402 | * FlipClock Danish Language Pack 2403 | * 2404 | * This class will used to translate tokens into the Danish language. 2405 | * 2406 | */ 2407 | 2408 | FlipClock.Lang.Danish = { 2409 | 2410 | 'years' : 'År', 2411 | 'months' : 'Måneder', 2412 | 'days' : 'Dage', 2413 | 'hours' : 'Timer', 2414 | 'minutes' : 'Minutter', 2415 | 'seconds' : 'Sekunder' 2416 | 2417 | }; 2418 | 2419 | /* Create various aliases for convenience */ 2420 | 2421 | FlipClock.Lang['da'] = FlipClock.Lang.Danish; 2422 | FlipClock.Lang['da-dk'] = FlipClock.Lang.Danish; 2423 | FlipClock.Lang['danish'] = FlipClock.Lang.Danish; 2424 | 2425 | }(jQuery)); 2426 | (function($) { 2427 | 2428 | /** 2429 | * FlipClock German Language Pack 2430 | * 2431 | * This class will used to translate tokens into the German language. 2432 | * 2433 | */ 2434 | 2435 | FlipClock.Lang.German = { 2436 | 2437 | 'years' : 'Jahre', 2438 | 'months' : 'Monate', 2439 | 'days' : 'Tage', 2440 | 'hours' : 'Stunden', 2441 | 'minutes' : 'Minuten', 2442 | 'seconds' : 'Sekunden' 2443 | 2444 | }; 2445 | 2446 | /* Create various aliases for convenience */ 2447 | 2448 | FlipClock.Lang['de'] = FlipClock.Lang.German; 2449 | FlipClock.Lang['de-de'] = FlipClock.Lang.German; 2450 | FlipClock.Lang['german'] = FlipClock.Lang.German; 2451 | 2452 | }(jQuery)); 2453 | (function($) { 2454 | 2455 | /** 2456 | * FlipClock English Language Pack 2457 | * 2458 | * This class will used to translate tokens into the English language. 2459 | * 2460 | */ 2461 | 2462 | FlipClock.Lang.English = { 2463 | 2464 | 'years' : 'Years', 2465 | 'months' : 'Months', 2466 | 'days' : 'Days', 2467 | 'hours' : 'Hours', 2468 | 'minutes' : 'Minutes', 2469 | 'seconds' : 'Seconds' 2470 | 2471 | }; 2472 | 2473 | /* Create various aliases for convenience */ 2474 | 2475 | FlipClock.Lang['en'] = FlipClock.Lang.English; 2476 | FlipClock.Lang['en-us'] = FlipClock.Lang.English; 2477 | FlipClock.Lang['english'] = FlipClock.Lang.English; 2478 | 2479 | }(jQuery)); 2480 | (function($) { 2481 | 2482 | /** 2483 | * FlipClock Spanish Language Pack 2484 | * 2485 | * This class will used to translate tokens into the Spanish language. 2486 | * 2487 | */ 2488 | 2489 | FlipClock.Lang.Spanish = { 2490 | 2491 | 'years' : 'Años', 2492 | 'months' : 'Meses', 2493 | 'days' : 'DÍas', 2494 | 'hours' : 'Horas', 2495 | 'minutes' : 'Minutos', 2496 | 'seconds' : 'Segundo' 2497 | 2498 | }; 2499 | 2500 | /* Create various aliases for convenience */ 2501 | 2502 | FlipClock.Lang['es'] = FlipClock.Lang.Spanish; 2503 | FlipClock.Lang['es-es'] = FlipClock.Lang.Spanish; 2504 | FlipClock.Lang['spanish'] = FlipClock.Lang.Spanish; 2505 | 2506 | }(jQuery)); 2507 | (function($) { 2508 | 2509 | /** 2510 | * FlipClock Finnish Language Pack 2511 | * 2512 | * This class will used to translate tokens into the Finnish language. 2513 | * 2514 | */ 2515 | 2516 | FlipClock.Lang.Finnish = { 2517 | 2518 | 'years' : 'Vuotta', 2519 | 'months' : 'Kuukautta', 2520 | 'days' : 'Päivää', 2521 | 'hours' : 'Tuntia', 2522 | 'minutes' : 'Minuuttia', 2523 | 'seconds' : 'Sekuntia' 2524 | 2525 | }; 2526 | 2527 | /* Create various aliases for convenience */ 2528 | 2529 | FlipClock.Lang['fi'] = FlipClock.Lang.Finnish; 2530 | FlipClock.Lang['fi-fi'] = FlipClock.Lang.Finnish; 2531 | FlipClock.Lang['finnish'] = FlipClock.Lang.Finnish; 2532 | 2533 | }(jQuery)); 2534 | 2535 | (function($) { 2536 | 2537 | /** 2538 | * FlipClock Canadian French Language Pack 2539 | * 2540 | * This class will used to translate tokens into the Canadian French language. 2541 | * 2542 | */ 2543 | 2544 | FlipClock.Lang.French = { 2545 | 2546 | 'years' : 'Ans', 2547 | 'months' : 'Mois', 2548 | 'days' : 'Jours', 2549 | 'hours' : 'Heures', 2550 | 'minutes' : 'Minutes', 2551 | 'seconds' : 'Secondes' 2552 | 2553 | }; 2554 | 2555 | /* Create various aliases for convenience */ 2556 | 2557 | FlipClock.Lang['fr'] = FlipClock.Lang.French; 2558 | FlipClock.Lang['fr-ca'] = FlipClock.Lang.French; 2559 | FlipClock.Lang['french'] = FlipClock.Lang.French; 2560 | 2561 | }(jQuery)); 2562 | 2563 | (function($) { 2564 | 2565 | /** 2566 | * FlipClock Italian Language Pack 2567 | * 2568 | * This class will used to translate tokens into the Italian language. 2569 | * 2570 | */ 2571 | 2572 | FlipClock.Lang.Italian = { 2573 | 2574 | 'years' : 'Anni', 2575 | 'months' : 'Mesi', 2576 | 'days' : 'Giorni', 2577 | 'hours' : 'Ore', 2578 | 'minutes' : 'Minuti', 2579 | 'seconds' : 'Secondi' 2580 | 2581 | }; 2582 | 2583 | /* Create various aliases for convenience */ 2584 | 2585 | FlipClock.Lang['it'] = FlipClock.Lang.Italian; 2586 | FlipClock.Lang['it-it'] = FlipClock.Lang.Italian; 2587 | FlipClock.Lang['italian'] = FlipClock.Lang.Italian; 2588 | 2589 | }(jQuery)); 2590 | 2591 | (function($) { 2592 | 2593 | /** 2594 | * FlipClock Latvian Language Pack 2595 | * 2596 | * This class will used to translate tokens into the Latvian language. 2597 | * 2598 | */ 2599 | 2600 | FlipClock.Lang.Latvian = { 2601 | 2602 | 'years' : 'Gadi', 2603 | 'months' : 'Mēneši', 2604 | 'days' : 'Dienas', 2605 | 'hours' : 'Stundas', 2606 | 'minutes' : 'Minūtes', 2607 | 'seconds' : 'Sekundes' 2608 | 2609 | }; 2610 | 2611 | /* Create various aliases for convenience */ 2612 | 2613 | FlipClock.Lang['lv'] = FlipClock.Lang.Latvian; 2614 | FlipClock.Lang['lv-lv'] = FlipClock.Lang.Latvian; 2615 | FlipClock.Lang['latvian'] = FlipClock.Lang.Latvian; 2616 | 2617 | }(jQuery)); 2618 | (function($) { 2619 | 2620 | /** 2621 | * FlipClock Dutch Language Pack 2622 | * 2623 | * This class will used to translate tokens into the Dutch language. 2624 | */ 2625 | 2626 | FlipClock.Lang.Dutch = { 2627 | 2628 | 'years' : 'Jaren', 2629 | 'months' : 'Maanden', 2630 | 'days' : 'Dagen', 2631 | 'hours' : 'Uren', 2632 | 'minutes' : 'Minuten', 2633 | 'seconds' : 'Seconden' 2634 | 2635 | }; 2636 | 2637 | /* Create various aliases for convenience */ 2638 | 2639 | FlipClock.Lang['nl'] = FlipClock.Lang.Dutch; 2640 | FlipClock.Lang['nl-be'] = FlipClock.Lang.Dutch; 2641 | FlipClock.Lang['dutch'] = FlipClock.Lang.Dutch; 2642 | 2643 | }(jQuery)); 2644 | 2645 | (function($) { 2646 | 2647 | /** 2648 | * FlipClock Norwegian-Bokmål Language Pack 2649 | * 2650 | * This class will used to translate tokens into the Norwegian language. 2651 | * 2652 | */ 2653 | 2654 | FlipClock.Lang.Norwegian = { 2655 | 2656 | 'years' : 'År', 2657 | 'months' : 'Måneder', 2658 | 'days' : 'Dager', 2659 | 'hours' : 'Timer', 2660 | 'minutes' : 'Minutter', 2661 | 'seconds' : 'Sekunder' 2662 | 2663 | }; 2664 | 2665 | /* Create various aliases for convenience */ 2666 | 2667 | FlipClock.Lang['no'] = FlipClock.Lang.Norwegian; 2668 | FlipClock.Lang['nb'] = FlipClock.Lang.Norwegian; 2669 | FlipClock.Lang['no-nb'] = FlipClock.Lang.Norwegian; 2670 | FlipClock.Lang['norwegian'] = FlipClock.Lang.Norwegian; 2671 | 2672 | }(jQuery)); 2673 | 2674 | (function($) { 2675 | 2676 | /** 2677 | * FlipClock Portuguese Language Pack 2678 | * 2679 | * This class will used to translate tokens into the Portuguese language. 2680 | * 2681 | */ 2682 | 2683 | FlipClock.Lang.Portuguese = { 2684 | 2685 | 'years' : 'Anos', 2686 | 'months' : 'Meses', 2687 | 'days' : 'Dias', 2688 | 'hours' : 'Horas', 2689 | 'minutes' : 'Minutos', 2690 | 'seconds' : 'Segundos' 2691 | 2692 | }; 2693 | 2694 | /* Create various aliases for convenience */ 2695 | 2696 | FlipClock.Lang['pt'] = FlipClock.Lang.Portuguese; 2697 | FlipClock.Lang['pt-br'] = FlipClock.Lang.Portuguese; 2698 | FlipClock.Lang['portuguese'] = FlipClock.Lang.Portuguese; 2699 | 2700 | }(jQuery)); 2701 | (function($) { 2702 | 2703 | /** 2704 | * FlipClock Russian Language Pack 2705 | * 2706 | * This class will used to translate tokens into the Russian language. 2707 | * 2708 | */ 2709 | 2710 | FlipClock.Lang.Russian = { 2711 | 2712 | 'years' : 'лет', 2713 | 'months' : 'месяцев', 2714 | 'days' : 'дней', 2715 | 'hours' : 'часов', 2716 | 'minutes' : 'минут', 2717 | 'seconds' : 'секунд' 2718 | 2719 | }; 2720 | 2721 | /* Create various aliases for convenience */ 2722 | 2723 | FlipClock.Lang['ru'] = FlipClock.Lang.Russian; 2724 | FlipClock.Lang['ru-ru'] = FlipClock.Lang.Russian; 2725 | FlipClock.Lang['russian'] = FlipClock.Lang.Russian; 2726 | 2727 | }(jQuery)); 2728 | (function($) { 2729 | 2730 | /** 2731 | * FlipClock Swedish Language Pack 2732 | * 2733 | * This class will used to translate tokens into the Swedish language. 2734 | * 2735 | */ 2736 | 2737 | FlipClock.Lang.Swedish = { 2738 | 2739 | 'years' : 'År', 2740 | 'months' : 'Månader', 2741 | 'days' : 'Dagar', 2742 | 'hours' : 'Timmar', 2743 | 'minutes' : 'Minuter', 2744 | 'seconds' : 'Sekunder' 2745 | 2746 | }; 2747 | 2748 | /* Create various aliases for convenience */ 2749 | 2750 | FlipClock.Lang['sv'] = FlipClock.Lang.Swedish; 2751 | FlipClock.Lang['sv-se'] = FlipClock.Lang.Swedish; 2752 | FlipClock.Lang['swedish'] = FlipClock.Lang.Swedish; 2753 | 2754 | }(jQuery)); 2755 | -------------------------------------------------------------------------------- /css/animate.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /*! 3 | Animate.css - http://daneden.me/animate 4 | Licensed under the MIT license - http://opensource.org/licenses/MIT 5 | 6 | Copyright (c) 2014 Daniel Eden 7 | */ 8 | 9 | .animated { 10 | -webkit-animation-duration: 1s; 11 | animation-duration: 1s; 12 | -webkit-animation-fill-mode: both; 13 | animation-fill-mode: both; 14 | } 15 | 16 | .animated.infinite { 17 | -webkit-animation-iteration-count: infinite; 18 | animation-iteration-count: infinite; 19 | } 20 | 21 | .animated.hinge { 22 | -webkit-animation-duration: 2s; 23 | animation-duration: 2s; 24 | } 25 | 26 | @-webkit-keyframes bounce { 27 | 0%, 20%, 53%, 80%, 100% { 28 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 29 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 30 | -webkit-transform: translate3d(0,0,0); 31 | transform: translate3d(0,0,0); 32 | } 33 | 34 | 40%, 43% { 35 | -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 36 | transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 37 | -webkit-transform: translate3d(0, -30px, 0); 38 | transform: translate3d(0, -30px, 0); 39 | } 40 | 41 | 70% { 42 | -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 43 | transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 44 | -webkit-transform: translate3d(0, -15px, 0); 45 | transform: translate3d(0, -15px, 0); 46 | } 47 | 48 | 90% { 49 | -webkit-transform: translate3d(0,-4px,0); 50 | transform: translate3d(0,-4px,0); 51 | } 52 | } 53 | 54 | @keyframes bounce { 55 | 0%, 20%, 53%, 80%, 100% { 56 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 57 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 58 | -webkit-transform: translate3d(0,0,0); 59 | transform: translate3d(0,0,0); 60 | } 61 | 62 | 40%, 43% { 63 | -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 64 | transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 65 | -webkit-transform: translate3d(0, -30px, 0); 66 | transform: translate3d(0, -30px, 0); 67 | } 68 | 69 | 70% { 70 | -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 71 | transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 72 | -webkit-transform: translate3d(0, -15px, 0); 73 | transform: translate3d(0, -15px, 0); 74 | } 75 | 76 | 90% { 77 | -webkit-transform: translate3d(0,-4px,0); 78 | transform: translate3d(0,-4px,0); 79 | } 80 | } 81 | 82 | .bounce { 83 | -webkit-animation-name: bounce; 84 | animation-name: bounce; 85 | -webkit-transform-origin: center bottom; 86 | -ms-transform-origin: center bottom; 87 | transform-origin: center bottom; 88 | } 89 | 90 | @-webkit-keyframes flash { 91 | 0%, 50%, 100% { 92 | opacity: 1; 93 | } 94 | 95 | 25%, 75% { 96 | opacity: 0; 97 | } 98 | } 99 | 100 | @keyframes flash { 101 | 0%, 50%, 100% { 102 | opacity: 1; 103 | } 104 | 105 | 25%, 75% { 106 | opacity: 0; 107 | } 108 | } 109 | 110 | .flash { 111 | -webkit-animation-name: flash; 112 | animation-name: flash; 113 | } 114 | 115 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 116 | 117 | @-webkit-keyframes pulse { 118 | 0% { 119 | -webkit-transform: scale3d(1, 1, 1); 120 | transform: scale3d(1, 1, 1); 121 | } 122 | 123 | 50% { 124 | -webkit-transform: scale3d(1.05, 1.05, 1.05); 125 | transform: scale3d(1.05, 1.05, 1.05); 126 | } 127 | 128 | 100% { 129 | -webkit-transform: scale3d(1, 1, 1); 130 | transform: scale3d(1, 1, 1); 131 | } 132 | } 133 | 134 | @keyframes pulse { 135 | 0% { 136 | -webkit-transform: scale3d(1, 1, 1); 137 | transform: scale3d(1, 1, 1); 138 | } 139 | 140 | 50% { 141 | -webkit-transform: scale3d(1.05, 1.05, 1.05); 142 | transform: scale3d(1.05, 1.05, 1.05); 143 | } 144 | 145 | 100% { 146 | -webkit-transform: scale3d(1, 1, 1); 147 | transform: scale3d(1, 1, 1); 148 | } 149 | } 150 | 151 | .pulse { 152 | -webkit-animation-name: pulse; 153 | animation-name: pulse; 154 | } 155 | 156 | @-webkit-keyframes rubberBand { 157 | 0% { 158 | -webkit-transform: scale3d(1, 1, 1); 159 | transform: scale3d(1, 1, 1); 160 | } 161 | 162 | 30% { 163 | -webkit-transform: scale3d(1.25, 0.75, 1); 164 | transform: scale3d(1.25, 0.75, 1); 165 | } 166 | 167 | 40% { 168 | -webkit-transform: scale3d(0.75, 1.25, 1); 169 | transform: scale3d(0.75, 1.25, 1); 170 | } 171 | 172 | 50% { 173 | -webkit-transform: scale3d(1.15, 0.85, 1); 174 | transform: scale3d(1.15, 0.85, 1); 175 | } 176 | 177 | 65% { 178 | -webkit-transform: scale3d(.95, 1.05, 1); 179 | transform: scale3d(.95, 1.05, 1); 180 | } 181 | 182 | 75% { 183 | -webkit-transform: scale3d(1.05, .95, 1); 184 | transform: scale3d(1.05, .95, 1); 185 | } 186 | 187 | 100% { 188 | -webkit-transform: scale3d(1, 1, 1); 189 | transform: scale3d(1, 1, 1); 190 | } 191 | } 192 | 193 | @keyframes rubberBand { 194 | 0% { 195 | -webkit-transform: scale3d(1, 1, 1); 196 | transform: scale3d(1, 1, 1); 197 | } 198 | 199 | 30% { 200 | -webkit-transform: scale3d(1.25, 0.75, 1); 201 | transform: scale3d(1.25, 0.75, 1); 202 | } 203 | 204 | 40% { 205 | -webkit-transform: scale3d(0.75, 1.25, 1); 206 | transform: scale3d(0.75, 1.25, 1); 207 | } 208 | 209 | 50% { 210 | -webkit-transform: scale3d(1.15, 0.85, 1); 211 | transform: scale3d(1.15, 0.85, 1); 212 | } 213 | 214 | 65% { 215 | -webkit-transform: scale3d(.95, 1.05, 1); 216 | transform: scale3d(.95, 1.05, 1); 217 | } 218 | 219 | 75% { 220 | -webkit-transform: scale3d(1.05, .95, 1); 221 | transform: scale3d(1.05, .95, 1); 222 | } 223 | 224 | 100% { 225 | -webkit-transform: scale3d(1, 1, 1); 226 | transform: scale3d(1, 1, 1); 227 | } 228 | } 229 | 230 | .rubberBand { 231 | -webkit-animation-name: rubberBand; 232 | animation-name: rubberBand; 233 | } 234 | 235 | @-webkit-keyframes shake { 236 | 0%, 100% { 237 | -webkit-transform: translate3d(0, 0, 0); 238 | transform: translate3d(0, 0, 0); 239 | } 240 | 241 | 10%, 30%, 50%, 70%, 90% { 242 | -webkit-transform: translate3d(-10px, 0, 0); 243 | transform: translate3d(-10px, 0, 0); 244 | } 245 | 246 | 20%, 40%, 60%, 80% { 247 | -webkit-transform: translate3d(10px, 0, 0); 248 | transform: translate3d(10px, 0, 0); 249 | } 250 | } 251 | 252 | @keyframes shake { 253 | 0%, 100% { 254 | -webkit-transform: translate3d(0, 0, 0); 255 | transform: translate3d(0, 0, 0); 256 | } 257 | 258 | 10%, 30%, 50%, 70%, 90% { 259 | -webkit-transform: translate3d(-10px, 0, 0); 260 | transform: translate3d(-10px, 0, 0); 261 | } 262 | 263 | 20%, 40%, 60%, 80% { 264 | -webkit-transform: translate3d(10px, 0, 0); 265 | transform: translate3d(10px, 0, 0); 266 | } 267 | } 268 | 269 | .shake { 270 | -webkit-animation-name: shake; 271 | animation-name: shake; 272 | } 273 | 274 | @-webkit-keyframes swing { 275 | 20% { 276 | -webkit-transform: rotate3d(0, 0, 1, 15deg); 277 | transform: rotate3d(0, 0, 1, 15deg); 278 | } 279 | 280 | 40% { 281 | -webkit-transform: rotate3d(0, 0, 1, -10deg); 282 | transform: rotate3d(0, 0, 1, -10deg); 283 | } 284 | 285 | 60% { 286 | -webkit-transform: rotate3d(0, 0, 1, 5deg); 287 | transform: rotate3d(0, 0, 1, 5deg); 288 | } 289 | 290 | 80% { 291 | -webkit-transform: rotate3d(0, 0, 1, -5deg); 292 | transform: rotate3d(0, 0, 1, -5deg); 293 | } 294 | 295 | 100% { 296 | -webkit-transform: rotate3d(0, 0, 1, 0deg); 297 | transform: rotate3d(0, 0, 1, 0deg); 298 | } 299 | } 300 | 301 | @keyframes swing { 302 | 20% { 303 | -webkit-transform: rotate3d(0, 0, 1, 15deg); 304 | transform: rotate3d(0, 0, 1, 15deg); 305 | } 306 | 307 | 40% { 308 | -webkit-transform: rotate3d(0, 0, 1, -10deg); 309 | transform: rotate3d(0, 0, 1, -10deg); 310 | } 311 | 312 | 60% { 313 | -webkit-transform: rotate3d(0, 0, 1, 5deg); 314 | transform: rotate3d(0, 0, 1, 5deg); 315 | } 316 | 317 | 80% { 318 | -webkit-transform: rotate3d(0, 0, 1, -5deg); 319 | transform: rotate3d(0, 0, 1, -5deg); 320 | } 321 | 322 | 100% { 323 | -webkit-transform: rotate3d(0, 0, 1, 0deg); 324 | transform: rotate3d(0, 0, 1, 0deg); 325 | } 326 | } 327 | 328 | .swing { 329 | -webkit-transform-origin: top center; 330 | -ms-transform-origin: top center; 331 | transform-origin: top center; 332 | -webkit-animation-name: swing; 333 | animation-name: swing; 334 | } 335 | 336 | @-webkit-keyframes tada { 337 | 0% { 338 | -webkit-transform: scale3d(1, 1, 1); 339 | transform: scale3d(1, 1, 1); 340 | } 341 | 342 | 10%, 20% { 343 | -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); 344 | transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); 345 | } 346 | 347 | 30%, 50%, 70%, 90% { 348 | -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); 349 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); 350 | } 351 | 352 | 40%, 60%, 80% { 353 | -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); 354 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); 355 | } 356 | 357 | 100% { 358 | -webkit-transform: scale3d(1, 1, 1); 359 | transform: scale3d(1, 1, 1); 360 | } 361 | } 362 | 363 | @keyframes tada { 364 | 0% { 365 | -webkit-transform: scale3d(1, 1, 1); 366 | transform: scale3d(1, 1, 1); 367 | } 368 | 369 | 10%, 20% { 370 | -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); 371 | transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); 372 | } 373 | 374 | 30%, 50%, 70%, 90% { 375 | -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); 376 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); 377 | } 378 | 379 | 40%, 60%, 80% { 380 | -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); 381 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); 382 | } 383 | 384 | 100% { 385 | -webkit-transform: scale3d(1, 1, 1); 386 | transform: scale3d(1, 1, 1); 387 | } 388 | } 389 | 390 | .tada { 391 | -webkit-animation-name: tada; 392 | animation-name: tada; 393 | } 394 | 395 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 396 | 397 | @-webkit-keyframes wobble { 398 | 0% { 399 | -webkit-transform: none; 400 | transform: none; 401 | } 402 | 403 | 15% { 404 | -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); 405 | transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); 406 | } 407 | 408 | 30% { 409 | -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); 410 | transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); 411 | } 412 | 413 | 45% { 414 | -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); 415 | transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); 416 | } 417 | 418 | 60% { 419 | -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); 420 | transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); 421 | } 422 | 423 | 75% { 424 | -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); 425 | transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); 426 | } 427 | 428 | 100% { 429 | -webkit-transform: none; 430 | transform: none; 431 | } 432 | } 433 | 434 | @keyframes wobble { 435 | 0% { 436 | -webkit-transform: none; 437 | transform: none; 438 | } 439 | 440 | 15% { 441 | -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); 442 | transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); 443 | } 444 | 445 | 30% { 446 | -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); 447 | transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); 448 | } 449 | 450 | 45% { 451 | -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); 452 | transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); 453 | } 454 | 455 | 60% { 456 | -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); 457 | transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); 458 | } 459 | 460 | 75% { 461 | -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); 462 | transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); 463 | } 464 | 465 | 100% { 466 | -webkit-transform: none; 467 | transform: none; 468 | } 469 | } 470 | 471 | .wobble { 472 | -webkit-animation-name: wobble; 473 | animation-name: wobble; 474 | } 475 | 476 | @-webkit-keyframes bounceIn { 477 | 0%, 20%, 40%, 60%, 80%, 100% { 478 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 479 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 480 | } 481 | 482 | 0% { 483 | opacity: 0; 484 | -webkit-transform: scale3d(.3, .3, .3); 485 | transform: scale3d(.3, .3, .3); 486 | } 487 | 488 | 20% { 489 | -webkit-transform: scale3d(1.1, 1.1, 1.1); 490 | transform: scale3d(1.1, 1.1, 1.1); 491 | } 492 | 493 | 40% { 494 | -webkit-transform: scale3d(.9, .9, .9); 495 | transform: scale3d(.9, .9, .9); 496 | } 497 | 498 | 60% { 499 | opacity: 1; 500 | -webkit-transform: scale3d(1.03, 1.03, 1.03); 501 | transform: scale3d(1.03, 1.03, 1.03); 502 | } 503 | 504 | 80% { 505 | -webkit-transform: scale3d(.97, .97, .97); 506 | transform: scale3d(.97, .97, .97); 507 | } 508 | 509 | 100% { 510 | opacity: 1; 511 | -webkit-transform: scale3d(1, 1, 1); 512 | transform: scale3d(1, 1, 1); 513 | } 514 | } 515 | 516 | @keyframes bounceIn { 517 | 0%, 20%, 40%, 60%, 80%, 100% { 518 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 519 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 520 | } 521 | 522 | 0% { 523 | opacity: 0; 524 | -webkit-transform: scale3d(.3, .3, .3); 525 | transform: scale3d(.3, .3, .3); 526 | } 527 | 528 | 20% { 529 | -webkit-transform: scale3d(1.1, 1.1, 1.1); 530 | transform: scale3d(1.1, 1.1, 1.1); 531 | } 532 | 533 | 40% { 534 | -webkit-transform: scale3d(.9, .9, .9); 535 | transform: scale3d(.9, .9, .9); 536 | } 537 | 538 | 60% { 539 | opacity: 1; 540 | -webkit-transform: scale3d(1.03, 1.03, 1.03); 541 | transform: scale3d(1.03, 1.03, 1.03); 542 | } 543 | 544 | 80% { 545 | -webkit-transform: scale3d(.97, .97, .97); 546 | transform: scale3d(.97, .97, .97); 547 | } 548 | 549 | 100% { 550 | opacity: 1; 551 | -webkit-transform: scale3d(1, 1, 1); 552 | transform: scale3d(1, 1, 1); 553 | } 554 | } 555 | 556 | .bounceIn { 557 | -webkit-animation-name: bounceIn; 558 | animation-name: bounceIn; 559 | -webkit-animation-duration: .75s; 560 | animation-duration: .75s; 561 | } 562 | 563 | @-webkit-keyframes bounceInDown { 564 | 0%, 60%, 75%, 90%, 100% { 565 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 566 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 567 | } 568 | 569 | 0% { 570 | opacity: 0; 571 | -webkit-transform: translate3d(0, -3000px, 0); 572 | transform: translate3d(0, -3000px, 0); 573 | } 574 | 575 | 60% { 576 | opacity: 1; 577 | -webkit-transform: translate3d(0, 25px, 0); 578 | transform: translate3d(0, 25px, 0); 579 | } 580 | 581 | 75% { 582 | -webkit-transform: translate3d(0, -10px, 0); 583 | transform: translate3d(0, -10px, 0); 584 | } 585 | 586 | 90% { 587 | -webkit-transform: translate3d(0, 5px, 0); 588 | transform: translate3d(0, 5px, 0); 589 | } 590 | 591 | 100% { 592 | -webkit-transform: none; 593 | transform: none; 594 | } 595 | } 596 | 597 | @keyframes bounceInDown { 598 | 0%, 60%, 75%, 90%, 100% { 599 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 600 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 601 | } 602 | 603 | 0% { 604 | opacity: 0; 605 | -webkit-transform: translate3d(0, -3000px, 0); 606 | transform: translate3d(0, -3000px, 0); 607 | } 608 | 609 | 60% { 610 | opacity: 1; 611 | -webkit-transform: translate3d(0, 25px, 0); 612 | transform: translate3d(0, 25px, 0); 613 | } 614 | 615 | 75% { 616 | -webkit-transform: translate3d(0, -10px, 0); 617 | transform: translate3d(0, -10px, 0); 618 | } 619 | 620 | 90% { 621 | -webkit-transform: translate3d(0, 5px, 0); 622 | transform: translate3d(0, 5px, 0); 623 | } 624 | 625 | 100% { 626 | -webkit-transform: none; 627 | transform: none; 628 | } 629 | } 630 | 631 | .bounceInDown { 632 | -webkit-animation-name: bounceInDown; 633 | animation-name: bounceInDown; 634 | } 635 | 636 | @-webkit-keyframes bounceInLeft { 637 | 0%, 60%, 75%, 90%, 100% { 638 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 639 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 640 | } 641 | 642 | 0% { 643 | opacity: 0; 644 | -webkit-transform: translate3d(-3000px, 0, 0); 645 | transform: translate3d(-3000px, 0, 0); 646 | } 647 | 648 | 60% { 649 | opacity: 1; 650 | -webkit-transform: translate3d(25px, 0, 0); 651 | transform: translate3d(25px, 0, 0); 652 | } 653 | 654 | 75% { 655 | -webkit-transform: translate3d(-10px, 0, 0); 656 | transform: translate3d(-10px, 0, 0); 657 | } 658 | 659 | 90% { 660 | -webkit-transform: translate3d(5px, 0, 0); 661 | transform: translate3d(5px, 0, 0); 662 | } 663 | 664 | 100% { 665 | -webkit-transform: none; 666 | transform: none; 667 | } 668 | } 669 | 670 | @keyframes bounceInLeft { 671 | 0%, 60%, 75%, 90%, 100% { 672 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 673 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 674 | } 675 | 676 | 0% { 677 | opacity: 0; 678 | -webkit-transform: translate3d(-3000px, 0, 0); 679 | transform: translate3d(-3000px, 0, 0); 680 | } 681 | 682 | 60% { 683 | opacity: 1; 684 | -webkit-transform: translate3d(25px, 0, 0); 685 | transform: translate3d(25px, 0, 0); 686 | } 687 | 688 | 75% { 689 | -webkit-transform: translate3d(-10px, 0, 0); 690 | transform: translate3d(-10px, 0, 0); 691 | } 692 | 693 | 90% { 694 | -webkit-transform: translate3d(5px, 0, 0); 695 | transform: translate3d(5px, 0, 0); 696 | } 697 | 698 | 100% { 699 | -webkit-transform: none; 700 | transform: none; 701 | } 702 | } 703 | 704 | .bounceInLeft { 705 | -webkit-animation-name: bounceInLeft; 706 | animation-name: bounceInLeft; 707 | } 708 | 709 | @-webkit-keyframes bounceInRight { 710 | 0%, 60%, 75%, 90%, 100% { 711 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 712 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 713 | } 714 | 715 | 0% { 716 | opacity: 0; 717 | -webkit-transform: translate3d(3000px, 0, 0); 718 | transform: translate3d(3000px, 0, 0); 719 | } 720 | 721 | 60% { 722 | opacity: 1; 723 | -webkit-transform: translate3d(-25px, 0, 0); 724 | transform: translate3d(-25px, 0, 0); 725 | } 726 | 727 | 75% { 728 | -webkit-transform: translate3d(10px, 0, 0); 729 | transform: translate3d(10px, 0, 0); 730 | } 731 | 732 | 90% { 733 | -webkit-transform: translate3d(-5px, 0, 0); 734 | transform: translate3d(-5px, 0, 0); 735 | } 736 | 737 | 100% { 738 | -webkit-transform: none; 739 | transform: none; 740 | } 741 | } 742 | 743 | @keyframes bounceInRight { 744 | 0%, 60%, 75%, 90%, 100% { 745 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 746 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 747 | } 748 | 749 | 0% { 750 | opacity: 0; 751 | -webkit-transform: translate3d(3000px, 0, 0); 752 | transform: translate3d(3000px, 0, 0); 753 | } 754 | 755 | 60% { 756 | opacity: 1; 757 | -webkit-transform: translate3d(-25px, 0, 0); 758 | transform: translate3d(-25px, 0, 0); 759 | } 760 | 761 | 75% { 762 | -webkit-transform: translate3d(10px, 0, 0); 763 | transform: translate3d(10px, 0, 0); 764 | } 765 | 766 | 90% { 767 | -webkit-transform: translate3d(-5px, 0, 0); 768 | transform: translate3d(-5px, 0, 0); 769 | } 770 | 771 | 100% { 772 | -webkit-transform: none; 773 | transform: none; 774 | } 775 | } 776 | 777 | .bounceInRight { 778 | -webkit-animation-name: bounceInRight; 779 | animation-name: bounceInRight; 780 | } 781 | 782 | @-webkit-keyframes bounceInUp { 783 | 0%, 60%, 75%, 90%, 100% { 784 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 785 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 786 | } 787 | 788 | 0% { 789 | opacity: 0; 790 | -webkit-transform: translate3d(0, 3000px, 0); 791 | transform: translate3d(0, 3000px, 0); 792 | } 793 | 794 | 60% { 795 | opacity: 1; 796 | -webkit-transform: translate3d(0, -20px, 0); 797 | transform: translate3d(0, -20px, 0); 798 | } 799 | 800 | 75% { 801 | -webkit-transform: translate3d(0, 10px, 0); 802 | transform: translate3d(0, 10px, 0); 803 | } 804 | 805 | 90% { 806 | -webkit-transform: translate3d(0, -5px, 0); 807 | transform: translate3d(0, -5px, 0); 808 | } 809 | 810 | 100% { 811 | -webkit-transform: translate3d(0, 0, 0); 812 | transform: translate3d(0, 0, 0); 813 | } 814 | } 815 | 816 | @keyframes bounceInUp { 817 | 0%, 60%, 75%, 90%, 100% { 818 | -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 819 | transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 820 | } 821 | 822 | 0% { 823 | opacity: 0; 824 | -webkit-transform: translate3d(0, 3000px, 0); 825 | transform: translate3d(0, 3000px, 0); 826 | } 827 | 828 | 60% { 829 | opacity: 1; 830 | -webkit-transform: translate3d(0, -20px, 0); 831 | transform: translate3d(0, -20px, 0); 832 | } 833 | 834 | 75% { 835 | -webkit-transform: translate3d(0, 10px, 0); 836 | transform: translate3d(0, 10px, 0); 837 | } 838 | 839 | 90% { 840 | -webkit-transform: translate3d(0, -5px, 0); 841 | transform: translate3d(0, -5px, 0); 842 | } 843 | 844 | 100% { 845 | -webkit-transform: translate3d(0, 0, 0); 846 | transform: translate3d(0, 0, 0); 847 | } 848 | } 849 | 850 | .bounceInUp { 851 | -webkit-animation-name: bounceInUp; 852 | animation-name: bounceInUp; 853 | } 854 | 855 | @-webkit-keyframes bounceOut { 856 | 20% { 857 | -webkit-transform: scale3d(.9, .9, .9); 858 | transform: scale3d(.9, .9, .9); 859 | } 860 | 861 | 50%, 55% { 862 | opacity: 1; 863 | -webkit-transform: scale3d(1.1, 1.1, 1.1); 864 | transform: scale3d(1.1, 1.1, 1.1); 865 | } 866 | 867 | 100% { 868 | opacity: 0; 869 | -webkit-transform: scale3d(.3, .3, .3); 870 | transform: scale3d(.3, .3, .3); 871 | } 872 | } 873 | 874 | @keyframes bounceOut { 875 | 20% { 876 | -webkit-transform: scale3d(.9, .9, .9); 877 | transform: scale3d(.9, .9, .9); 878 | } 879 | 880 | 50%, 55% { 881 | opacity: 1; 882 | -webkit-transform: scale3d(1.1, 1.1, 1.1); 883 | transform: scale3d(1.1, 1.1, 1.1); 884 | } 885 | 886 | 100% { 887 | opacity: 0; 888 | -webkit-transform: scale3d(.3, .3, .3); 889 | transform: scale3d(.3, .3, .3); 890 | } 891 | } 892 | 893 | .bounceOut { 894 | -webkit-animation-name: bounceOut; 895 | animation-name: bounceOut; 896 | -webkit-animation-duration: .75s; 897 | animation-duration: .75s; 898 | } 899 | 900 | @-webkit-keyframes bounceOutDown { 901 | 20% { 902 | -webkit-transform: translate3d(0, 10px, 0); 903 | transform: translate3d(0, 10px, 0); 904 | } 905 | 906 | 40%, 45% { 907 | opacity: 1; 908 | -webkit-transform: translate3d(0, -20px, 0); 909 | transform: translate3d(0, -20px, 0); 910 | } 911 | 912 | 100% { 913 | opacity: 0; 914 | -webkit-transform: translate3d(0, 2000px, 0); 915 | transform: translate3d(0, 2000px, 0); 916 | } 917 | } 918 | 919 | @keyframes bounceOutDown { 920 | 20% { 921 | -webkit-transform: translate3d(0, 10px, 0); 922 | transform: translate3d(0, 10px, 0); 923 | } 924 | 925 | 40%, 45% { 926 | opacity: 1; 927 | -webkit-transform: translate3d(0, -20px, 0); 928 | transform: translate3d(0, -20px, 0); 929 | } 930 | 931 | 100% { 932 | opacity: 0; 933 | -webkit-transform: translate3d(0, 2000px, 0); 934 | transform: translate3d(0, 2000px, 0); 935 | } 936 | } 937 | 938 | .bounceOutDown { 939 | -webkit-animation-name: bounceOutDown; 940 | animation-name: bounceOutDown; 941 | } 942 | 943 | @-webkit-keyframes bounceOutLeft { 944 | 20% { 945 | opacity: 1; 946 | -webkit-transform: translate3d(20px, 0, 0); 947 | transform: translate3d(20px, 0, 0); 948 | } 949 | 950 | 100% { 951 | opacity: 0; 952 | -webkit-transform: translate3d(-2000px, 0, 0); 953 | transform: translate3d(-2000px, 0, 0); 954 | } 955 | } 956 | 957 | @keyframes bounceOutLeft { 958 | 20% { 959 | opacity: 1; 960 | -webkit-transform: translate3d(20px, 0, 0); 961 | transform: translate3d(20px, 0, 0); 962 | } 963 | 964 | 100% { 965 | opacity: 0; 966 | -webkit-transform: translate3d(-2000px, 0, 0); 967 | transform: translate3d(-2000px, 0, 0); 968 | } 969 | } 970 | 971 | .bounceOutLeft { 972 | -webkit-animation-name: bounceOutLeft; 973 | animation-name: bounceOutLeft; 974 | } 975 | 976 | @-webkit-keyframes bounceOutRight { 977 | 20% { 978 | opacity: 1; 979 | -webkit-transform: translate3d(-20px, 0, 0); 980 | transform: translate3d(-20px, 0, 0); 981 | } 982 | 983 | 100% { 984 | opacity: 0; 985 | -webkit-transform: translate3d(2000px, 0, 0); 986 | transform: translate3d(2000px, 0, 0); 987 | } 988 | } 989 | 990 | @keyframes bounceOutRight { 991 | 20% { 992 | opacity: 1; 993 | -webkit-transform: translate3d(-20px, 0, 0); 994 | transform: translate3d(-20px, 0, 0); 995 | } 996 | 997 | 100% { 998 | opacity: 0; 999 | -webkit-transform: translate3d(2000px, 0, 0); 1000 | transform: translate3d(2000px, 0, 0); 1001 | } 1002 | } 1003 | 1004 | .bounceOutRight { 1005 | -webkit-animation-name: bounceOutRight; 1006 | animation-name: bounceOutRight; 1007 | } 1008 | 1009 | @-webkit-keyframes bounceOutUp { 1010 | 20% { 1011 | -webkit-transform: translate3d(0, -10px, 0); 1012 | transform: translate3d(0, -10px, 0); 1013 | } 1014 | 1015 | 40%, 45% { 1016 | opacity: 1; 1017 | -webkit-transform: translate3d(0, 20px, 0); 1018 | transform: translate3d(0, 20px, 0); 1019 | } 1020 | 1021 | 100% { 1022 | opacity: 0; 1023 | -webkit-transform: translate3d(0, -2000px, 0); 1024 | transform: translate3d(0, -2000px, 0); 1025 | } 1026 | } 1027 | 1028 | @keyframes bounceOutUp { 1029 | 20% { 1030 | -webkit-transform: translate3d(0, -10px, 0); 1031 | transform: translate3d(0, -10px, 0); 1032 | } 1033 | 1034 | 40%, 45% { 1035 | opacity: 1; 1036 | -webkit-transform: translate3d(0, 20px, 0); 1037 | transform: translate3d(0, 20px, 0); 1038 | } 1039 | 1040 | 100% { 1041 | opacity: 0; 1042 | -webkit-transform: translate3d(0, -2000px, 0); 1043 | transform: translate3d(0, -2000px, 0); 1044 | } 1045 | } 1046 | 1047 | .bounceOutUp { 1048 | -webkit-animation-name: bounceOutUp; 1049 | animation-name: bounceOutUp; 1050 | } 1051 | 1052 | @-webkit-keyframes fadeIn { 1053 | 0% {opacity: 0;} 1054 | 100% {opacity: 1;} 1055 | } 1056 | 1057 | @keyframes fadeIn { 1058 | 0% {opacity: 0;} 1059 | 100% {opacity: 1;} 1060 | } 1061 | 1062 | .fadeIn { 1063 | -webkit-animation-name: fadeIn; 1064 | animation-name: fadeIn; 1065 | } 1066 | 1067 | @-webkit-keyframes fadeInDown { 1068 | 0% { 1069 | opacity: 0; 1070 | -webkit-transform: translate3d(0, -100%, 0); 1071 | transform: translate3d(0, -100%, 0); 1072 | } 1073 | 1074 | 100% { 1075 | opacity: 1; 1076 | -webkit-transform: none; 1077 | transform: none; 1078 | } 1079 | } 1080 | 1081 | @keyframes fadeInDown { 1082 | 0% { 1083 | opacity: 0; 1084 | -webkit-transform: translate3d(0, -100%, 0); 1085 | transform: translate3d(0, -100%, 0); 1086 | } 1087 | 1088 | 100% { 1089 | opacity: 1; 1090 | -webkit-transform: none; 1091 | transform: none; 1092 | } 1093 | } 1094 | 1095 | .fadeInDown { 1096 | -webkit-animation-name: fadeInDown; 1097 | animation-name: fadeInDown; 1098 | } 1099 | 1100 | @-webkit-keyframes fadeInDownBig { 1101 | 0% { 1102 | opacity: 0; 1103 | -webkit-transform: translate3d(0, -2000px, 0); 1104 | transform: translate3d(0, -2000px, 0); 1105 | } 1106 | 1107 | 100% { 1108 | opacity: 1; 1109 | -webkit-transform: none; 1110 | transform: none; 1111 | } 1112 | } 1113 | 1114 | @keyframes fadeInDownBig { 1115 | 0% { 1116 | opacity: 0; 1117 | -webkit-transform: translate3d(0, -2000px, 0); 1118 | transform: translate3d(0, -2000px, 0); 1119 | } 1120 | 1121 | 100% { 1122 | opacity: 1; 1123 | -webkit-transform: none; 1124 | transform: none; 1125 | } 1126 | } 1127 | 1128 | .fadeInDownBig { 1129 | -webkit-animation-name: fadeInDownBig; 1130 | animation-name: fadeInDownBig; 1131 | } 1132 | 1133 | @-webkit-keyframes fadeInLeft { 1134 | 0% { 1135 | opacity: 0; 1136 | -webkit-transform: translate3d(-100%, 0, 0); 1137 | transform: translate3d(-100%, 0, 0); 1138 | } 1139 | 1140 | 100% { 1141 | opacity: 1; 1142 | -webkit-transform: none; 1143 | transform: none; 1144 | } 1145 | } 1146 | 1147 | @keyframes fadeInLeft { 1148 | 0% { 1149 | opacity: 0; 1150 | -webkit-transform: translate3d(-100%, 0, 0); 1151 | transform: translate3d(-100%, 0, 0); 1152 | } 1153 | 1154 | 100% { 1155 | opacity: 1; 1156 | -webkit-transform: none; 1157 | transform: none; 1158 | } 1159 | } 1160 | 1161 | .fadeInLeft { 1162 | -webkit-animation-name: fadeInLeft; 1163 | animation-name: fadeInLeft; 1164 | } 1165 | 1166 | @-webkit-keyframes fadeInLeftBig { 1167 | 0% { 1168 | opacity: 0; 1169 | -webkit-transform: translate3d(-2000px, 0, 0); 1170 | transform: translate3d(-2000px, 0, 0); 1171 | } 1172 | 1173 | 100% { 1174 | opacity: 1; 1175 | -webkit-transform: none; 1176 | transform: none; 1177 | } 1178 | } 1179 | 1180 | @keyframes fadeInLeftBig { 1181 | 0% { 1182 | opacity: 0; 1183 | -webkit-transform: translate3d(-2000px, 0, 0); 1184 | transform: translate3d(-2000px, 0, 0); 1185 | } 1186 | 1187 | 100% { 1188 | opacity: 1; 1189 | -webkit-transform: none; 1190 | transform: none; 1191 | } 1192 | } 1193 | 1194 | .fadeInLeftBig { 1195 | -webkit-animation-name: fadeInLeftBig; 1196 | animation-name: fadeInLeftBig; 1197 | } 1198 | 1199 | @-webkit-keyframes fadeInRight { 1200 | 0% { 1201 | opacity: 0; 1202 | -webkit-transform: translate3d(100%, 0, 0); 1203 | transform: translate3d(100%, 0, 0); 1204 | } 1205 | 1206 | 100% { 1207 | opacity: 1; 1208 | -webkit-transform: none; 1209 | transform: none; 1210 | } 1211 | } 1212 | 1213 | @keyframes fadeInRight { 1214 | 0% { 1215 | opacity: 0; 1216 | -webkit-transform: translate3d(100%, 0, 0); 1217 | transform: translate3d(100%, 0, 0); 1218 | } 1219 | 1220 | 100% { 1221 | opacity: 1; 1222 | -webkit-transform: none; 1223 | transform: none; 1224 | } 1225 | } 1226 | 1227 | .fadeInRight { 1228 | -webkit-animation-name: fadeInRight; 1229 | animation-name: fadeInRight; 1230 | } 1231 | 1232 | @-webkit-keyframes fadeInRightBig { 1233 | 0% { 1234 | opacity: 0; 1235 | -webkit-transform: translate3d(2000px, 0, 0); 1236 | transform: translate3d(2000px, 0, 0); 1237 | } 1238 | 1239 | 100% { 1240 | opacity: 1; 1241 | -webkit-transform: none; 1242 | transform: none; 1243 | } 1244 | } 1245 | 1246 | @keyframes fadeInRightBig { 1247 | 0% { 1248 | opacity: 0; 1249 | -webkit-transform: translate3d(2000px, 0, 0); 1250 | transform: translate3d(2000px, 0, 0); 1251 | } 1252 | 1253 | 100% { 1254 | opacity: 1; 1255 | -webkit-transform: none; 1256 | transform: none; 1257 | } 1258 | } 1259 | 1260 | .fadeInRightBig { 1261 | -webkit-animation-name: fadeInRightBig; 1262 | animation-name: fadeInRightBig; 1263 | } 1264 | 1265 | @-webkit-keyframes fadeInUp { 1266 | 0% { 1267 | opacity: 0; 1268 | -webkit-transform: translate3d(0, 100%, 0); 1269 | transform: translate3d(0, 100%, 0); 1270 | } 1271 | 1272 | 100% { 1273 | opacity: 1; 1274 | -webkit-transform: none; 1275 | transform: none; 1276 | } 1277 | } 1278 | 1279 | @keyframes fadeInUp { 1280 | 0% { 1281 | opacity: 0; 1282 | -webkit-transform: translate3d(0, 100%, 0); 1283 | transform: translate3d(0, 100%, 0); 1284 | } 1285 | 1286 | 100% { 1287 | opacity: 1; 1288 | -webkit-transform: none; 1289 | transform: none; 1290 | } 1291 | } 1292 | 1293 | .fadeInUp { 1294 | -webkit-animation-name: fadeInUp; 1295 | animation-name: fadeInUp; 1296 | } 1297 | 1298 | @-webkit-keyframes fadeInUpBig { 1299 | 0% { 1300 | opacity: 0; 1301 | -webkit-transform: translate3d(0, 2000px, 0); 1302 | transform: translate3d(0, 2000px, 0); 1303 | } 1304 | 1305 | 100% { 1306 | opacity: 1; 1307 | -webkit-transform: none; 1308 | transform: none; 1309 | } 1310 | } 1311 | 1312 | @keyframes fadeInUpBig { 1313 | 0% { 1314 | opacity: 0; 1315 | -webkit-transform: translate3d(0, 2000px, 0); 1316 | transform: translate3d(0, 2000px, 0); 1317 | } 1318 | 1319 | 100% { 1320 | opacity: 1; 1321 | -webkit-transform: none; 1322 | transform: none; 1323 | } 1324 | } 1325 | 1326 | .fadeInUpBig { 1327 | -webkit-animation-name: fadeInUpBig; 1328 | animation-name: fadeInUpBig; 1329 | } 1330 | 1331 | @-webkit-keyframes fadeOut { 1332 | 0% {opacity: 1;} 1333 | 100% {opacity: 0;} 1334 | } 1335 | 1336 | @keyframes fadeOut { 1337 | 0% {opacity: 1;} 1338 | 100% {opacity: 0;} 1339 | } 1340 | 1341 | .fadeOut { 1342 | -webkit-animation-name: fadeOut; 1343 | animation-name: fadeOut; 1344 | } 1345 | 1346 | @-webkit-keyframes fadeOutDown { 1347 | 0% { 1348 | opacity: 1; 1349 | } 1350 | 1351 | 100% { 1352 | opacity: 0; 1353 | -webkit-transform: translate3d(0, 100%, 0); 1354 | transform: translate3d(0, 100%, 0); 1355 | } 1356 | } 1357 | 1358 | @keyframes fadeOutDown { 1359 | 0% { 1360 | opacity: 1; 1361 | } 1362 | 1363 | 100% { 1364 | opacity: 0; 1365 | -webkit-transform: translate3d(0, 100%, 0); 1366 | transform: translate3d(0, 100%, 0); 1367 | } 1368 | } 1369 | 1370 | .fadeOutDown { 1371 | -webkit-animation-name: fadeOutDown; 1372 | animation-name: fadeOutDown; 1373 | } 1374 | 1375 | @-webkit-keyframes fadeOutDownBig { 1376 | 0% { 1377 | opacity: 1; 1378 | } 1379 | 1380 | 100% { 1381 | opacity: 0; 1382 | -webkit-transform: translate3d(0, 2000px, 0); 1383 | transform: translate3d(0, 2000px, 0); 1384 | } 1385 | } 1386 | 1387 | @keyframes fadeOutDownBig { 1388 | 0% { 1389 | opacity: 1; 1390 | } 1391 | 1392 | 100% { 1393 | opacity: 0; 1394 | -webkit-transform: translate3d(0, 2000px, 0); 1395 | transform: translate3d(0, 2000px, 0); 1396 | } 1397 | } 1398 | 1399 | .fadeOutDownBig { 1400 | -webkit-animation-name: fadeOutDownBig; 1401 | animation-name: fadeOutDownBig; 1402 | } 1403 | 1404 | @-webkit-keyframes fadeOutLeft { 1405 | 0% { 1406 | opacity: 1; 1407 | } 1408 | 1409 | 100% { 1410 | opacity: 0; 1411 | -webkit-transform: translate3d(-100%, 0, 0); 1412 | transform: translate3d(-100%, 0, 0); 1413 | } 1414 | } 1415 | 1416 | @keyframes fadeOutLeft { 1417 | 0% { 1418 | opacity: 1; 1419 | } 1420 | 1421 | 100% { 1422 | opacity: 0; 1423 | -webkit-transform: translate3d(-100%, 0, 0); 1424 | transform: translate3d(-100%, 0, 0); 1425 | } 1426 | } 1427 | 1428 | .fadeOutLeft { 1429 | -webkit-animation-name: fadeOutLeft; 1430 | animation-name: fadeOutLeft; 1431 | } 1432 | 1433 | @-webkit-keyframes fadeOutLeftBig { 1434 | 0% { 1435 | opacity: 1; 1436 | } 1437 | 1438 | 100% { 1439 | opacity: 0; 1440 | -webkit-transform: translate3d(-2000px, 0, 0); 1441 | transform: translate3d(-2000px, 0, 0); 1442 | } 1443 | } 1444 | 1445 | @keyframes fadeOutLeftBig { 1446 | 0% { 1447 | opacity: 1; 1448 | } 1449 | 1450 | 100% { 1451 | opacity: 0; 1452 | -webkit-transform: translate3d(-2000px, 0, 0); 1453 | transform: translate3d(-2000px, 0, 0); 1454 | } 1455 | } 1456 | 1457 | .fadeOutLeftBig { 1458 | -webkit-animation-name: fadeOutLeftBig; 1459 | animation-name: fadeOutLeftBig; 1460 | } 1461 | 1462 | @-webkit-keyframes fadeOutRight { 1463 | 0% { 1464 | opacity: 1; 1465 | } 1466 | 1467 | 100% { 1468 | opacity: 0; 1469 | -webkit-transform: translate3d(100%, 0, 0); 1470 | transform: translate3d(100%, 0, 0); 1471 | } 1472 | } 1473 | 1474 | @keyframes fadeOutRight { 1475 | 0% { 1476 | opacity: 1; 1477 | } 1478 | 1479 | 100% { 1480 | opacity: 0; 1481 | -webkit-transform: translate3d(100%, 0, 0); 1482 | transform: translate3d(100%, 0, 0); 1483 | } 1484 | } 1485 | 1486 | .fadeOutRight { 1487 | -webkit-animation-name: fadeOutRight; 1488 | animation-name: fadeOutRight; 1489 | } 1490 | 1491 | @-webkit-keyframes fadeOutRightBig { 1492 | 0% { 1493 | opacity: 1; 1494 | } 1495 | 1496 | 100% { 1497 | opacity: 0; 1498 | -webkit-transform: translate3d(2000px, 0, 0); 1499 | transform: translate3d(2000px, 0, 0); 1500 | } 1501 | } 1502 | 1503 | @keyframes fadeOutRightBig { 1504 | 0% { 1505 | opacity: 1; 1506 | } 1507 | 1508 | 100% { 1509 | opacity: 0; 1510 | -webkit-transform: translate3d(2000px, 0, 0); 1511 | transform: translate3d(2000px, 0, 0); 1512 | } 1513 | } 1514 | 1515 | .fadeOutRightBig { 1516 | -webkit-animation-name: fadeOutRightBig; 1517 | animation-name: fadeOutRightBig; 1518 | } 1519 | 1520 | @-webkit-keyframes fadeOutUp { 1521 | 0% { 1522 | opacity: 1; 1523 | } 1524 | 1525 | 100% { 1526 | opacity: 0; 1527 | -webkit-transform: translate3d(0, -100%, 0); 1528 | transform: translate3d(0, -100%, 0); 1529 | } 1530 | } 1531 | 1532 | @keyframes fadeOutUp { 1533 | 0% { 1534 | opacity: 1; 1535 | } 1536 | 1537 | 100% { 1538 | opacity: 0; 1539 | -webkit-transform: translate3d(0, -100%, 0); 1540 | transform: translate3d(0, -100%, 0); 1541 | } 1542 | } 1543 | 1544 | .fadeOutUp { 1545 | -webkit-animation-name: fadeOutUp; 1546 | animation-name: fadeOutUp; 1547 | } 1548 | 1549 | @-webkit-keyframes fadeOutUpBig { 1550 | 0% { 1551 | opacity: 1; 1552 | } 1553 | 1554 | 100% { 1555 | opacity: 0; 1556 | -webkit-transform: translate3d(0, -2000px, 0); 1557 | transform: translate3d(0, -2000px, 0); 1558 | } 1559 | } 1560 | 1561 | @keyframes fadeOutUpBig { 1562 | 0% { 1563 | opacity: 1; 1564 | } 1565 | 1566 | 100% { 1567 | opacity: 0; 1568 | -webkit-transform: translate3d(0, -2000px, 0); 1569 | transform: translate3d(0, -2000px, 0); 1570 | } 1571 | } 1572 | 1573 | .fadeOutUpBig { 1574 | -webkit-animation-name: fadeOutUpBig; 1575 | animation-name: fadeOutUpBig; 1576 | } 1577 | 1578 | @-webkit-keyframes flip { 1579 | 0% { 1580 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); 1581 | transform: perspective(400px) rotate3d(0, 1, 0, -360deg); 1582 | -webkit-animation-timing-function: ease-out; 1583 | animation-timing-function: ease-out; 1584 | } 1585 | 1586 | 40% { 1587 | -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); 1588 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); 1589 | -webkit-animation-timing-function: ease-out; 1590 | animation-timing-function: ease-out; 1591 | } 1592 | 1593 | 50% { 1594 | -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); 1595 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); 1596 | -webkit-animation-timing-function: ease-in; 1597 | animation-timing-function: ease-in; 1598 | } 1599 | 1600 | 80% { 1601 | -webkit-transform: perspective(400px) scale3d(.95, .95, .95); 1602 | transform: perspective(400px) scale3d(.95, .95, .95); 1603 | -webkit-animation-timing-function: ease-in; 1604 | animation-timing-function: ease-in; 1605 | } 1606 | 1607 | 100% { 1608 | -webkit-transform: perspective(400px); 1609 | transform: perspective(400px); 1610 | -webkit-animation-timing-function: ease-in; 1611 | animation-timing-function: ease-in; 1612 | } 1613 | } 1614 | 1615 | @keyframes flip { 1616 | 0% { 1617 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); 1618 | transform: perspective(400px) rotate3d(0, 1, 0, -360deg); 1619 | -webkit-animation-timing-function: ease-out; 1620 | animation-timing-function: ease-out; 1621 | } 1622 | 1623 | 40% { 1624 | -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); 1625 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); 1626 | -webkit-animation-timing-function: ease-out; 1627 | animation-timing-function: ease-out; 1628 | } 1629 | 1630 | 50% { 1631 | -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); 1632 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); 1633 | -webkit-animation-timing-function: ease-in; 1634 | animation-timing-function: ease-in; 1635 | } 1636 | 1637 | 80% { 1638 | -webkit-transform: perspective(400px) scale3d(.95, .95, .95); 1639 | transform: perspective(400px) scale3d(.95, .95, .95); 1640 | -webkit-animation-timing-function: ease-in; 1641 | animation-timing-function: ease-in; 1642 | } 1643 | 1644 | 100% { 1645 | -webkit-transform: perspective(400px); 1646 | transform: perspective(400px); 1647 | -webkit-animation-timing-function: ease-in; 1648 | animation-timing-function: ease-in; 1649 | } 1650 | } 1651 | 1652 | .animated.flip { 1653 | -webkit-backface-visibility: visible; 1654 | backface-visibility: visible; 1655 | -webkit-animation-name: flip; 1656 | animation-name: flip; 1657 | } 1658 | 1659 | @-webkit-keyframes flipInX { 1660 | 0% { 1661 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1662 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1663 | -webkit-transition-timing-function: ease-in; 1664 | transition-timing-function: ease-in; 1665 | opacity: 0; 1666 | } 1667 | 1668 | 40% { 1669 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1670 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1671 | -webkit-transition-timing-function: ease-in; 1672 | transition-timing-function: ease-in; 1673 | } 1674 | 1675 | 60% { 1676 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 1677 | transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 1678 | opacity: 1; 1679 | } 1680 | 1681 | 80% { 1682 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 1683 | transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 1684 | } 1685 | 1686 | 100% { 1687 | -webkit-transform: perspective(400px); 1688 | transform: perspective(400px); 1689 | } 1690 | } 1691 | 1692 | @keyframes flipInX { 1693 | 0% { 1694 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1695 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1696 | -webkit-transition-timing-function: ease-in; 1697 | transition-timing-function: ease-in; 1698 | opacity: 0; 1699 | } 1700 | 1701 | 40% { 1702 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1703 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1704 | -webkit-transition-timing-function: ease-in; 1705 | transition-timing-function: ease-in; 1706 | } 1707 | 1708 | 60% { 1709 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 1710 | transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 1711 | opacity: 1; 1712 | } 1713 | 1714 | 80% { 1715 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 1716 | transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 1717 | } 1718 | 1719 | 100% { 1720 | -webkit-transform: perspective(400px); 1721 | transform: perspective(400px); 1722 | } 1723 | } 1724 | 1725 | .flipInX { 1726 | -webkit-backface-visibility: visible !important; 1727 | backface-visibility: visible !important; 1728 | -webkit-animation-name: flipInX; 1729 | animation-name: flipInX; 1730 | } 1731 | 1732 | @-webkit-keyframes flipInY { 1733 | 0% { 1734 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1735 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1736 | -webkit-transition-timing-function: ease-in; 1737 | transition-timing-function: ease-in; 1738 | opacity: 0; 1739 | } 1740 | 1741 | 40% { 1742 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); 1743 | transform: perspective(400px) rotate3d(0, 1, 0, -20deg); 1744 | -webkit-transition-timing-function: ease-in; 1745 | transition-timing-function: ease-in; 1746 | } 1747 | 1748 | 60% { 1749 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); 1750 | transform: perspective(400px) rotate3d(0, 1, 0, 10deg); 1751 | opacity: 1; 1752 | } 1753 | 1754 | 80% { 1755 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); 1756 | transform: perspective(400px) rotate3d(0, 1, 0, -5deg); 1757 | } 1758 | 1759 | 100% { 1760 | -webkit-transform: perspective(400px); 1761 | transform: perspective(400px); 1762 | } 1763 | } 1764 | 1765 | @keyframes flipInY { 1766 | 0% { 1767 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1768 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1769 | -webkit-transition-timing-function: ease-in; 1770 | transition-timing-function: ease-in; 1771 | opacity: 0; 1772 | } 1773 | 1774 | 40% { 1775 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); 1776 | transform: perspective(400px) rotate3d(0, 1, 0, -20deg); 1777 | -webkit-transition-timing-function: ease-in; 1778 | transition-timing-function: ease-in; 1779 | } 1780 | 1781 | 60% { 1782 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); 1783 | transform: perspective(400px) rotate3d(0, 1, 0, 10deg); 1784 | opacity: 1; 1785 | } 1786 | 1787 | 80% { 1788 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); 1789 | transform: perspective(400px) rotate3d(0, 1, 0, -5deg); 1790 | } 1791 | 1792 | 100% { 1793 | -webkit-transform: perspective(400px); 1794 | transform: perspective(400px); 1795 | } 1796 | } 1797 | 1798 | .flipInY { 1799 | -webkit-backface-visibility: visible !important; 1800 | backface-visibility: visible !important; 1801 | -webkit-animation-name: flipInY; 1802 | animation-name: flipInY; 1803 | } 1804 | 1805 | @-webkit-keyframes flipOutX { 1806 | 0% { 1807 | -webkit-transform: perspective(400px); 1808 | transform: perspective(400px); 1809 | } 1810 | 1811 | 30% { 1812 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1813 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1814 | opacity: 1; 1815 | } 1816 | 1817 | 100% { 1818 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1819 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1820 | opacity: 0; 1821 | } 1822 | } 1823 | 1824 | @keyframes flipOutX { 1825 | 0% { 1826 | -webkit-transform: perspective(400px); 1827 | transform: perspective(400px); 1828 | } 1829 | 1830 | 30% { 1831 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1832 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 1833 | opacity: 1; 1834 | } 1835 | 1836 | 100% { 1837 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1838 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 1839 | opacity: 0; 1840 | } 1841 | } 1842 | 1843 | .flipOutX { 1844 | -webkit-animation-name: flipOutX; 1845 | animation-name: flipOutX; 1846 | -webkit-animation-duration: .75s; 1847 | animation-duration: .75s; 1848 | -webkit-backface-visibility: visible !important; 1849 | backface-visibility: visible !important; 1850 | } 1851 | 1852 | @-webkit-keyframes flipOutY { 1853 | 0% { 1854 | -webkit-transform: perspective(400px); 1855 | transform: perspective(400px); 1856 | } 1857 | 1858 | 30% { 1859 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); 1860 | transform: perspective(400px) rotate3d(0, 1, 0, -15deg); 1861 | opacity: 1; 1862 | } 1863 | 1864 | 100% { 1865 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1866 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1867 | opacity: 0; 1868 | } 1869 | } 1870 | 1871 | @keyframes flipOutY { 1872 | 0% { 1873 | -webkit-transform: perspective(400px); 1874 | transform: perspective(400px); 1875 | } 1876 | 1877 | 30% { 1878 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); 1879 | transform: perspective(400px) rotate3d(0, 1, 0, -15deg); 1880 | opacity: 1; 1881 | } 1882 | 1883 | 100% { 1884 | -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1885 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 1886 | opacity: 0; 1887 | } 1888 | } 1889 | 1890 | .flipOutY { 1891 | -webkit-backface-visibility: visible !important; 1892 | backface-visibility: visible !important; 1893 | -webkit-animation-name: flipOutY; 1894 | animation-name: flipOutY; 1895 | -webkit-animation-duration: .75s; 1896 | animation-duration: .75s; 1897 | } 1898 | 1899 | @-webkit-keyframes lightSpeedIn { 1900 | 0% { 1901 | -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); 1902 | transform: translate3d(100%, 0, 0) skewX(-30deg); 1903 | opacity: 0; 1904 | } 1905 | 1906 | 60% { 1907 | -webkit-transform: skewX(20deg); 1908 | transform: skewX(20deg); 1909 | opacity: 1; 1910 | } 1911 | 1912 | 80% { 1913 | -webkit-transform: skewX(-5deg); 1914 | transform: skewX(-5deg); 1915 | opacity: 1; 1916 | } 1917 | 1918 | 100% { 1919 | -webkit-transform: none; 1920 | transform: none; 1921 | opacity: 1; 1922 | } 1923 | } 1924 | 1925 | @keyframes lightSpeedIn { 1926 | 0% { 1927 | -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); 1928 | transform: translate3d(100%, 0, 0) skewX(-30deg); 1929 | opacity: 0; 1930 | } 1931 | 1932 | 60% { 1933 | -webkit-transform: skewX(20deg); 1934 | transform: skewX(20deg); 1935 | opacity: 1; 1936 | } 1937 | 1938 | 80% { 1939 | -webkit-transform: skewX(-5deg); 1940 | transform: skewX(-5deg); 1941 | opacity: 1; 1942 | } 1943 | 1944 | 100% { 1945 | -webkit-transform: none; 1946 | transform: none; 1947 | opacity: 1; 1948 | } 1949 | } 1950 | 1951 | .lightSpeedIn { 1952 | -webkit-animation-name: lightSpeedIn; 1953 | animation-name: lightSpeedIn; 1954 | -webkit-animation-timing-function: ease-out; 1955 | animation-timing-function: ease-out; 1956 | } 1957 | 1958 | @-webkit-keyframes lightSpeedOut { 1959 | 0% { 1960 | opacity: 1; 1961 | } 1962 | 1963 | 100% { 1964 | -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); 1965 | transform: translate3d(100%, 0, 0) skewX(30deg); 1966 | opacity: 0; 1967 | } 1968 | } 1969 | 1970 | @keyframes lightSpeedOut { 1971 | 0% { 1972 | opacity: 1; 1973 | } 1974 | 1975 | 100% { 1976 | -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); 1977 | transform: translate3d(100%, 0, 0) skewX(30deg); 1978 | opacity: 0; 1979 | } 1980 | } 1981 | 1982 | .lightSpeedOut { 1983 | -webkit-animation-name: lightSpeedOut; 1984 | animation-name: lightSpeedOut; 1985 | -webkit-animation-timing-function: ease-in; 1986 | animation-timing-function: ease-in; 1987 | } 1988 | 1989 | @-webkit-keyframes rotateIn { 1990 | 0% { 1991 | -webkit-transform-origin: center; 1992 | transform-origin: center; 1993 | -webkit-transform: rotate3d(0, 0, 1, -200deg); 1994 | transform: rotate3d(0, 0, 1, -200deg); 1995 | opacity: 0; 1996 | } 1997 | 1998 | 100% { 1999 | -webkit-transform-origin: center; 2000 | transform-origin: center; 2001 | -webkit-transform: none; 2002 | transform: none; 2003 | opacity: 1; 2004 | } 2005 | } 2006 | 2007 | @keyframes rotateIn { 2008 | 0% { 2009 | -webkit-transform-origin: center; 2010 | transform-origin: center; 2011 | -webkit-transform: rotate3d(0, 0, 1, -200deg); 2012 | transform: rotate3d(0, 0, 1, -200deg); 2013 | opacity: 0; 2014 | } 2015 | 2016 | 100% { 2017 | -webkit-transform-origin: center; 2018 | transform-origin: center; 2019 | -webkit-transform: none; 2020 | transform: none; 2021 | opacity: 1; 2022 | } 2023 | } 2024 | 2025 | .rotateIn { 2026 | -webkit-animation-name: rotateIn; 2027 | animation-name: rotateIn; 2028 | } 2029 | 2030 | @-webkit-keyframes rotateInDownLeft { 2031 | 0% { 2032 | -webkit-transform-origin: left bottom; 2033 | transform-origin: left bottom; 2034 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2035 | transform: rotate3d(0, 0, 1, -45deg); 2036 | opacity: 0; 2037 | } 2038 | 2039 | 100% { 2040 | -webkit-transform-origin: left bottom; 2041 | transform-origin: left bottom; 2042 | -webkit-transform: none; 2043 | transform: none; 2044 | opacity: 1; 2045 | } 2046 | } 2047 | 2048 | @keyframes rotateInDownLeft { 2049 | 0% { 2050 | -webkit-transform-origin: left bottom; 2051 | transform-origin: left bottom; 2052 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2053 | transform: rotate3d(0, 0, 1, -45deg); 2054 | opacity: 0; 2055 | } 2056 | 2057 | 100% { 2058 | -webkit-transform-origin: left bottom; 2059 | transform-origin: left bottom; 2060 | -webkit-transform: none; 2061 | transform: none; 2062 | opacity: 1; 2063 | } 2064 | } 2065 | 2066 | .rotateInDownLeft { 2067 | -webkit-animation-name: rotateInDownLeft; 2068 | animation-name: rotateInDownLeft; 2069 | } 2070 | 2071 | @-webkit-keyframes rotateInDownRight { 2072 | 0% { 2073 | -webkit-transform-origin: right bottom; 2074 | transform-origin: right bottom; 2075 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2076 | transform: rotate3d(0, 0, 1, 45deg); 2077 | opacity: 0; 2078 | } 2079 | 2080 | 100% { 2081 | -webkit-transform-origin: right bottom; 2082 | transform-origin: right bottom; 2083 | -webkit-transform: none; 2084 | transform: none; 2085 | opacity: 1; 2086 | } 2087 | } 2088 | 2089 | @keyframes rotateInDownRight { 2090 | 0% { 2091 | -webkit-transform-origin: right bottom; 2092 | transform-origin: right bottom; 2093 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2094 | transform: rotate3d(0, 0, 1, 45deg); 2095 | opacity: 0; 2096 | } 2097 | 2098 | 100% { 2099 | -webkit-transform-origin: right bottom; 2100 | transform-origin: right bottom; 2101 | -webkit-transform: none; 2102 | transform: none; 2103 | opacity: 1; 2104 | } 2105 | } 2106 | 2107 | .rotateInDownRight { 2108 | -webkit-animation-name: rotateInDownRight; 2109 | animation-name: rotateInDownRight; 2110 | } 2111 | 2112 | @-webkit-keyframes rotateInUpLeft { 2113 | 0% { 2114 | -webkit-transform-origin: left bottom; 2115 | transform-origin: left bottom; 2116 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2117 | transform: rotate3d(0, 0, 1, 45deg); 2118 | opacity: 0; 2119 | } 2120 | 2121 | 100% { 2122 | -webkit-transform-origin: left bottom; 2123 | transform-origin: left bottom; 2124 | -webkit-transform: none; 2125 | transform: none; 2126 | opacity: 1; 2127 | } 2128 | } 2129 | 2130 | @keyframes rotateInUpLeft { 2131 | 0% { 2132 | -webkit-transform-origin: left bottom; 2133 | transform-origin: left bottom; 2134 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2135 | transform: rotate3d(0, 0, 1, 45deg); 2136 | opacity: 0; 2137 | } 2138 | 2139 | 100% { 2140 | -webkit-transform-origin: left bottom; 2141 | transform-origin: left bottom; 2142 | -webkit-transform: none; 2143 | transform: none; 2144 | opacity: 1; 2145 | } 2146 | } 2147 | 2148 | .rotateInUpLeft { 2149 | -webkit-animation-name: rotateInUpLeft; 2150 | animation-name: rotateInUpLeft; 2151 | } 2152 | 2153 | @-webkit-keyframes rotateInUpRight { 2154 | 0% { 2155 | -webkit-transform-origin: right bottom; 2156 | transform-origin: right bottom; 2157 | -webkit-transform: rotate3d(0, 0, 1, -90deg); 2158 | transform: rotate3d(0, 0, 1, -90deg); 2159 | opacity: 0; 2160 | } 2161 | 2162 | 100% { 2163 | -webkit-transform-origin: right bottom; 2164 | transform-origin: right bottom; 2165 | -webkit-transform: none; 2166 | transform: none; 2167 | opacity: 1; 2168 | } 2169 | } 2170 | 2171 | @keyframes rotateInUpRight { 2172 | 0% { 2173 | -webkit-transform-origin: right bottom; 2174 | transform-origin: right bottom; 2175 | -webkit-transform: rotate3d(0, 0, 1, -90deg); 2176 | transform: rotate3d(0, 0, 1, -90deg); 2177 | opacity: 0; 2178 | } 2179 | 2180 | 100% { 2181 | -webkit-transform-origin: right bottom; 2182 | transform-origin: right bottom; 2183 | -webkit-transform: none; 2184 | transform: none; 2185 | opacity: 1; 2186 | } 2187 | } 2188 | 2189 | .rotateInUpRight { 2190 | -webkit-animation-name: rotateInUpRight; 2191 | animation-name: rotateInUpRight; 2192 | } 2193 | 2194 | @-webkit-keyframes rotateOut { 2195 | 0% { 2196 | -webkit-transform-origin: center; 2197 | transform-origin: center; 2198 | opacity: 1; 2199 | } 2200 | 2201 | 100% { 2202 | -webkit-transform-origin: center; 2203 | transform-origin: center; 2204 | -webkit-transform: rotate3d(0, 0, 1, 200deg); 2205 | transform: rotate3d(0, 0, 1, 200deg); 2206 | opacity: 0; 2207 | } 2208 | } 2209 | 2210 | @keyframes rotateOut { 2211 | 0% { 2212 | -webkit-transform-origin: center; 2213 | transform-origin: center; 2214 | opacity: 1; 2215 | } 2216 | 2217 | 100% { 2218 | -webkit-transform-origin: center; 2219 | transform-origin: center; 2220 | -webkit-transform: rotate3d(0, 0, 1, 200deg); 2221 | transform: rotate3d(0, 0, 1, 200deg); 2222 | opacity: 0; 2223 | } 2224 | } 2225 | 2226 | .rotateOut { 2227 | -webkit-animation-name: rotateOut; 2228 | animation-name: rotateOut; 2229 | } 2230 | 2231 | @-webkit-keyframes rotateOutDownLeft { 2232 | 0% { 2233 | -webkit-transform-origin: left bottom; 2234 | transform-origin: left bottom; 2235 | opacity: 1; 2236 | } 2237 | 2238 | 100% { 2239 | -webkit-transform-origin: left bottom; 2240 | transform-origin: left bottom; 2241 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2242 | transform: rotate3d(0, 0, 1, 45deg); 2243 | opacity: 0; 2244 | } 2245 | } 2246 | 2247 | @keyframes rotateOutDownLeft { 2248 | 0% { 2249 | -webkit-transform-origin: left bottom; 2250 | transform-origin: left bottom; 2251 | opacity: 1; 2252 | } 2253 | 2254 | 100% { 2255 | -webkit-transform-origin: left bottom; 2256 | transform-origin: left bottom; 2257 | -webkit-transform: rotate3d(0, 0, 1, 45deg); 2258 | transform: rotate3d(0, 0, 1, 45deg); 2259 | opacity: 0; 2260 | } 2261 | } 2262 | 2263 | .rotateOutDownLeft { 2264 | -webkit-animation-name: rotateOutDownLeft; 2265 | animation-name: rotateOutDownLeft; 2266 | } 2267 | 2268 | @-webkit-keyframes rotateOutDownRight { 2269 | 0% { 2270 | -webkit-transform-origin: right bottom; 2271 | transform-origin: right bottom; 2272 | opacity: 1; 2273 | } 2274 | 2275 | 100% { 2276 | -webkit-transform-origin: right bottom; 2277 | transform-origin: right bottom; 2278 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2279 | transform: rotate3d(0, 0, 1, -45deg); 2280 | opacity: 0; 2281 | } 2282 | } 2283 | 2284 | @keyframes rotateOutDownRight { 2285 | 0% { 2286 | -webkit-transform-origin: right bottom; 2287 | transform-origin: right bottom; 2288 | opacity: 1; 2289 | } 2290 | 2291 | 100% { 2292 | -webkit-transform-origin: right bottom; 2293 | transform-origin: right bottom; 2294 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2295 | transform: rotate3d(0, 0, 1, -45deg); 2296 | opacity: 0; 2297 | } 2298 | } 2299 | 2300 | .rotateOutDownRight { 2301 | -webkit-animation-name: rotateOutDownRight; 2302 | animation-name: rotateOutDownRight; 2303 | } 2304 | 2305 | @-webkit-keyframes rotateOutUpLeft { 2306 | 0% { 2307 | -webkit-transform-origin: left bottom; 2308 | transform-origin: left bottom; 2309 | opacity: 1; 2310 | } 2311 | 2312 | 100% { 2313 | -webkit-transform-origin: left bottom; 2314 | transform-origin: left bottom; 2315 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2316 | transform: rotate3d(0, 0, 1, -45deg); 2317 | opacity: 0; 2318 | } 2319 | } 2320 | 2321 | @keyframes rotateOutUpLeft { 2322 | 0% { 2323 | -webkit-transform-origin: left bottom; 2324 | transform-origin: left bottom; 2325 | opacity: 1; 2326 | } 2327 | 2328 | 100% { 2329 | -webkit-transform-origin: left bottom; 2330 | transform-origin: left bottom; 2331 | -webkit-transform: rotate3d(0, 0, 1, -45deg); 2332 | transform: rotate3d(0, 0, 1, -45deg); 2333 | opacity: 0; 2334 | } 2335 | } 2336 | 2337 | .rotateOutUpLeft { 2338 | -webkit-animation-name: rotateOutUpLeft; 2339 | animation-name: rotateOutUpLeft; 2340 | } 2341 | 2342 | @-webkit-keyframes rotateOutUpRight { 2343 | 0% { 2344 | -webkit-transform-origin: right bottom; 2345 | transform-origin: right bottom; 2346 | opacity: 1; 2347 | } 2348 | 2349 | 100% { 2350 | -webkit-transform-origin: right bottom; 2351 | transform-origin: right bottom; 2352 | -webkit-transform: rotate3d(0, 0, 1, 90deg); 2353 | transform: rotate3d(0, 0, 1, 90deg); 2354 | opacity: 0; 2355 | } 2356 | } 2357 | 2358 | @keyframes rotateOutUpRight { 2359 | 0% { 2360 | -webkit-transform-origin: right bottom; 2361 | transform-origin: right bottom; 2362 | opacity: 1; 2363 | } 2364 | 2365 | 100% { 2366 | -webkit-transform-origin: right bottom; 2367 | transform-origin: right bottom; 2368 | -webkit-transform: rotate3d(0, 0, 1, 90deg); 2369 | transform: rotate3d(0, 0, 1, 90deg); 2370 | opacity: 0; 2371 | } 2372 | } 2373 | 2374 | .rotateOutUpRight { 2375 | -webkit-animation-name: rotateOutUpRight; 2376 | animation-name: rotateOutUpRight; 2377 | } 2378 | 2379 | @-webkit-keyframes hinge { 2380 | 0% { 2381 | -webkit-transform-origin: top left; 2382 | transform-origin: top left; 2383 | -webkit-animation-timing-function: ease-in-out; 2384 | animation-timing-function: ease-in-out; 2385 | } 2386 | 2387 | 20%, 60% { 2388 | -webkit-transform: rotate3d(0, 0, 1, 80deg); 2389 | transform: rotate3d(0, 0, 1, 80deg); 2390 | -webkit-transform-origin: top left; 2391 | transform-origin: top left; 2392 | -webkit-animation-timing-function: ease-in-out; 2393 | animation-timing-function: ease-in-out; 2394 | } 2395 | 2396 | 40%, 80% { 2397 | -webkit-transform: rotate3d(0, 0, 1, 60deg); 2398 | transform: rotate3d(0, 0, 1, 60deg); 2399 | -webkit-transform-origin: top left; 2400 | transform-origin: top left; 2401 | -webkit-animation-timing-function: ease-in-out; 2402 | animation-timing-function: ease-in-out; 2403 | opacity: 1; 2404 | } 2405 | 2406 | 100% { 2407 | -webkit-transform: translate3d(0, 700px, 0); 2408 | transform: translate3d(0, 700px, 0); 2409 | opacity: 0; 2410 | } 2411 | } 2412 | 2413 | @keyframes hinge { 2414 | 0% { 2415 | -webkit-transform-origin: top left; 2416 | transform-origin: top left; 2417 | -webkit-animation-timing-function: ease-in-out; 2418 | animation-timing-function: ease-in-out; 2419 | } 2420 | 2421 | 20%, 60% { 2422 | -webkit-transform: rotate3d(0, 0, 1, 80deg); 2423 | transform: rotate3d(0, 0, 1, 80deg); 2424 | -webkit-transform-origin: top left; 2425 | transform-origin: top left; 2426 | -webkit-animation-timing-function: ease-in-out; 2427 | animation-timing-function: ease-in-out; 2428 | } 2429 | 2430 | 40%, 80% { 2431 | -webkit-transform: rotate3d(0, 0, 1, 60deg); 2432 | transform: rotate3d(0, 0, 1, 60deg); 2433 | -webkit-transform-origin: top left; 2434 | transform-origin: top left; 2435 | -webkit-animation-timing-function: ease-in-out; 2436 | animation-timing-function: ease-in-out; 2437 | opacity: 1; 2438 | } 2439 | 2440 | 100% { 2441 | -webkit-transform: translate3d(0, 700px, 0); 2442 | transform: translate3d(0, 700px, 0); 2443 | opacity: 0; 2444 | } 2445 | } 2446 | 2447 | .hinge { 2448 | -webkit-animation-name: hinge; 2449 | animation-name: hinge; 2450 | } 2451 | 2452 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2453 | 2454 | @-webkit-keyframes rollIn { 2455 | 0% { 2456 | opacity: 0; 2457 | -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); 2458 | transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); 2459 | } 2460 | 2461 | 100% { 2462 | opacity: 1; 2463 | -webkit-transform: none; 2464 | transform: none; 2465 | } 2466 | } 2467 | 2468 | @keyframes rollIn { 2469 | 0% { 2470 | opacity: 0; 2471 | -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); 2472 | transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); 2473 | } 2474 | 2475 | 100% { 2476 | opacity: 1; 2477 | -webkit-transform: none; 2478 | transform: none; 2479 | } 2480 | } 2481 | 2482 | .rollIn { 2483 | -webkit-animation-name: rollIn; 2484 | animation-name: rollIn; 2485 | } 2486 | 2487 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2488 | 2489 | @-webkit-keyframes rollOut { 2490 | 0% { 2491 | opacity: 1; 2492 | } 2493 | 2494 | 100% { 2495 | opacity: 0; 2496 | -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); 2497 | transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); 2498 | } 2499 | } 2500 | 2501 | @keyframes rollOut { 2502 | 0% { 2503 | opacity: 1; 2504 | } 2505 | 2506 | 100% { 2507 | opacity: 0; 2508 | -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); 2509 | transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); 2510 | } 2511 | } 2512 | 2513 | .rollOut { 2514 | -webkit-animation-name: rollOut; 2515 | animation-name: rollOut; 2516 | } 2517 | 2518 | @-webkit-keyframes zoomIn { 2519 | 0% { 2520 | opacity: 0; 2521 | -webkit-transform: scale3d(.3, .3, .3); 2522 | transform: scale3d(.3, .3, .3); 2523 | } 2524 | 2525 | 50% { 2526 | opacity: 1; 2527 | } 2528 | } 2529 | 2530 | @keyframes zoomIn { 2531 | 0% { 2532 | opacity: 0; 2533 | -webkit-transform: scale3d(.3, .3, .3); 2534 | transform: scale3d(.3, .3, .3); 2535 | } 2536 | 2537 | 50% { 2538 | opacity: 1; 2539 | } 2540 | } 2541 | 2542 | .zoomIn { 2543 | -webkit-animation-name: zoomIn; 2544 | animation-name: zoomIn; 2545 | } 2546 | 2547 | @-webkit-keyframes zoomInDown { 2548 | 0% { 2549 | opacity: 0; 2550 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); 2551 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); 2552 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2553 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2554 | } 2555 | 2556 | 60% { 2557 | opacity: 1; 2558 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2559 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2560 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2561 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2562 | } 2563 | } 2564 | 2565 | @keyframes zoomInDown { 2566 | 0% { 2567 | opacity: 0; 2568 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); 2569 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); 2570 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2571 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2572 | } 2573 | 2574 | 60% { 2575 | opacity: 1; 2576 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2577 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2578 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2579 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2580 | } 2581 | } 2582 | 2583 | .zoomInDown { 2584 | -webkit-animation-name: zoomInDown; 2585 | animation-name: zoomInDown; 2586 | } 2587 | 2588 | @-webkit-keyframes zoomInLeft { 2589 | 0% { 2590 | opacity: 0; 2591 | -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); 2592 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); 2593 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2594 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2595 | } 2596 | 2597 | 60% { 2598 | opacity: 1; 2599 | -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); 2600 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); 2601 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2602 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2603 | } 2604 | } 2605 | 2606 | @keyframes zoomInLeft { 2607 | 0% { 2608 | opacity: 0; 2609 | -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); 2610 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); 2611 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2612 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2613 | } 2614 | 2615 | 60% { 2616 | opacity: 1; 2617 | -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); 2618 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); 2619 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2620 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2621 | } 2622 | } 2623 | 2624 | .zoomInLeft { 2625 | -webkit-animation-name: zoomInLeft; 2626 | animation-name: zoomInLeft; 2627 | } 2628 | 2629 | @-webkit-keyframes zoomInRight { 2630 | 0% { 2631 | opacity: 0; 2632 | -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); 2633 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); 2634 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2635 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2636 | } 2637 | 2638 | 60% { 2639 | opacity: 1; 2640 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); 2641 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); 2642 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2643 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2644 | } 2645 | } 2646 | 2647 | @keyframes zoomInRight { 2648 | 0% { 2649 | opacity: 0; 2650 | -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); 2651 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); 2652 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2653 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2654 | } 2655 | 2656 | 60% { 2657 | opacity: 1; 2658 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); 2659 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); 2660 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2661 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2662 | } 2663 | } 2664 | 2665 | .zoomInRight { 2666 | -webkit-animation-name: zoomInRight; 2667 | animation-name: zoomInRight; 2668 | } 2669 | 2670 | @-webkit-keyframes zoomInUp { 2671 | 0% { 2672 | opacity: 0; 2673 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); 2674 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); 2675 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2676 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2677 | } 2678 | 2679 | 60% { 2680 | opacity: 1; 2681 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2682 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2683 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2684 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2685 | } 2686 | } 2687 | 2688 | @keyframes zoomInUp { 2689 | 0% { 2690 | opacity: 0; 2691 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); 2692 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); 2693 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2694 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2695 | } 2696 | 2697 | 60% { 2698 | opacity: 1; 2699 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2700 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2701 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2702 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2703 | } 2704 | } 2705 | 2706 | .zoomInUp { 2707 | -webkit-animation-name: zoomInUp; 2708 | animation-name: zoomInUp; 2709 | } 2710 | 2711 | @-webkit-keyframes zoomOut { 2712 | 0% { 2713 | opacity: 1; 2714 | } 2715 | 2716 | 50% { 2717 | opacity: 0; 2718 | -webkit-transform: scale3d(.3, .3, .3); 2719 | transform: scale3d(.3, .3, .3); 2720 | } 2721 | 2722 | 100% { 2723 | opacity: 0; 2724 | } 2725 | } 2726 | 2727 | @keyframes zoomOut { 2728 | 0% { 2729 | opacity: 1; 2730 | } 2731 | 2732 | 50% { 2733 | opacity: 0; 2734 | -webkit-transform: scale3d(.3, .3, .3); 2735 | transform: scale3d(.3, .3, .3); 2736 | } 2737 | 2738 | 100% { 2739 | opacity: 0; 2740 | } 2741 | } 2742 | 2743 | .zoomOut { 2744 | -webkit-animation-name: zoomOut; 2745 | animation-name: zoomOut; 2746 | } 2747 | 2748 | @-webkit-keyframes zoomOutDown { 2749 | 40% { 2750 | opacity: 1; 2751 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2752 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2753 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2754 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2755 | } 2756 | 2757 | 100% { 2758 | opacity: 0; 2759 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); 2760 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); 2761 | -webkit-transform-origin: center bottom; 2762 | transform-origin: center bottom; 2763 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2764 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2765 | } 2766 | } 2767 | 2768 | @keyframes zoomOutDown { 2769 | 40% { 2770 | opacity: 1; 2771 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2772 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 2773 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2774 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2775 | } 2776 | 2777 | 100% { 2778 | opacity: 0; 2779 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); 2780 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); 2781 | -webkit-transform-origin: center bottom; 2782 | transform-origin: center bottom; 2783 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2784 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2785 | } 2786 | } 2787 | 2788 | .zoomOutDown { 2789 | -webkit-animation-name: zoomOutDown; 2790 | animation-name: zoomOutDown; 2791 | } 2792 | 2793 | @-webkit-keyframes zoomOutLeft { 2794 | 40% { 2795 | opacity: 1; 2796 | -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); 2797 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); 2798 | } 2799 | 2800 | 100% { 2801 | opacity: 0; 2802 | -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); 2803 | transform: scale(.1) translate3d(-2000px, 0, 0); 2804 | -webkit-transform-origin: left center; 2805 | transform-origin: left center; 2806 | } 2807 | } 2808 | 2809 | @keyframes zoomOutLeft { 2810 | 40% { 2811 | opacity: 1; 2812 | -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); 2813 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); 2814 | } 2815 | 2816 | 100% { 2817 | opacity: 0; 2818 | -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); 2819 | transform: scale(.1) translate3d(-2000px, 0, 0); 2820 | -webkit-transform-origin: left center; 2821 | transform-origin: left center; 2822 | } 2823 | } 2824 | 2825 | .zoomOutLeft { 2826 | -webkit-animation-name: zoomOutLeft; 2827 | animation-name: zoomOutLeft; 2828 | } 2829 | 2830 | @-webkit-keyframes zoomOutRight { 2831 | 40% { 2832 | opacity: 1; 2833 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); 2834 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); 2835 | } 2836 | 2837 | 100% { 2838 | opacity: 0; 2839 | -webkit-transform: scale(.1) translate3d(2000px, 0, 0); 2840 | transform: scale(.1) translate3d(2000px, 0, 0); 2841 | -webkit-transform-origin: right center; 2842 | transform-origin: right center; 2843 | } 2844 | } 2845 | 2846 | @keyframes zoomOutRight { 2847 | 40% { 2848 | opacity: 1; 2849 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); 2850 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); 2851 | } 2852 | 2853 | 100% { 2854 | opacity: 0; 2855 | -webkit-transform: scale(.1) translate3d(2000px, 0, 0); 2856 | transform: scale(.1) translate3d(2000px, 0, 0); 2857 | -webkit-transform-origin: right center; 2858 | transform-origin: right center; 2859 | } 2860 | } 2861 | 2862 | .zoomOutRight { 2863 | -webkit-animation-name: zoomOutRight; 2864 | animation-name: zoomOutRight; 2865 | } 2866 | 2867 | @-webkit-keyframes zoomOutUp { 2868 | 40% { 2869 | opacity: 1; 2870 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2871 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2872 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2873 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2874 | } 2875 | 2876 | 100% { 2877 | opacity: 0; 2878 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); 2879 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); 2880 | -webkit-transform-origin: center bottom; 2881 | transform-origin: center bottom; 2882 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2883 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2884 | } 2885 | } 2886 | 2887 | @keyframes zoomOutUp { 2888 | 40% { 2889 | opacity: 1; 2890 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2891 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 2892 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2893 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 2894 | } 2895 | 2896 | 100% { 2897 | opacity: 0; 2898 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); 2899 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); 2900 | -webkit-transform-origin: center bottom; 2901 | transform-origin: center bottom; 2902 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2903 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 2904 | } 2905 | } 2906 | 2907 | .zoomOutUp { 2908 | -webkit-animation-name: zoomOutUp; 2909 | animation-name: zoomOutUp; 2910 | } 2911 | 2912 | @-webkit-keyframes slideInDown { 2913 | 0% { 2914 | -webkit-transform: translateY(-100%); 2915 | transform: translateY(-100%); 2916 | visibility: visible; 2917 | } 2918 | 2919 | 100% { 2920 | -webkit-transform: translateY(0); 2921 | transform: translateY(0); 2922 | } 2923 | } 2924 | 2925 | @keyframes slideInDown { 2926 | 0% { 2927 | -webkit-transform: translateY(-100%); 2928 | transform: translateY(-100%); 2929 | visibility: visible; 2930 | } 2931 | 2932 | 100% { 2933 | -webkit-transform: translateY(0); 2934 | transform: translateY(0); 2935 | } 2936 | } 2937 | 2938 | .slideInDown { 2939 | -webkit-animation-name: slideInDown; 2940 | animation-name: slideInDown; 2941 | } 2942 | 2943 | @-webkit-keyframes slideInLeft { 2944 | 0% { 2945 | -webkit-transform: translateX(-100%); 2946 | transform: translateX(-100%); 2947 | visibility: visible; 2948 | } 2949 | 2950 | 100% { 2951 | -webkit-transform: translateX(0); 2952 | transform: translateX(0); 2953 | } 2954 | } 2955 | 2956 | @keyframes slideInLeft { 2957 | 0% { 2958 | -webkit-transform: translateX(-100%); 2959 | transform: translateX(-100%); 2960 | visibility: visible; 2961 | } 2962 | 2963 | 100% { 2964 | -webkit-transform: translateX(0); 2965 | transform: translateX(0); 2966 | } 2967 | } 2968 | 2969 | .slideInLeft { 2970 | -webkit-animation-name: slideInLeft; 2971 | animation-name: slideInLeft; 2972 | } 2973 | 2974 | @-webkit-keyframes slideInRight { 2975 | 0% { 2976 | -webkit-transform: translateX(100%); 2977 | transform: translateX(100%); 2978 | visibility: visible; 2979 | } 2980 | 2981 | 100% { 2982 | -webkit-transform: translateX(0); 2983 | transform: translateX(0); 2984 | } 2985 | } 2986 | 2987 | @keyframes slideInRight { 2988 | 0% { 2989 | -webkit-transform: translateX(100%); 2990 | transform: translateX(100%); 2991 | visibility: visible; 2992 | } 2993 | 2994 | 100% { 2995 | -webkit-transform: translateX(0); 2996 | transform: translateX(0); 2997 | } 2998 | } 2999 | 3000 | .slideInRight { 3001 | -webkit-animation-name: slideInRight; 3002 | animation-name: slideInRight; 3003 | } 3004 | 3005 | @-webkit-keyframes slideInUp { 3006 | 0% { 3007 | -webkit-transform: translateY(100%); 3008 | transform: translateY(100%); 3009 | visibility: visible; 3010 | } 3011 | 3012 | 100% { 3013 | -webkit-transform: translateY(0); 3014 | transform: translateY(0); 3015 | } 3016 | } 3017 | 3018 | @keyframes slideInUp { 3019 | 0% { 3020 | -webkit-transform: translateY(100%); 3021 | transform: translateY(100%); 3022 | visibility: visible; 3023 | } 3024 | 3025 | 100% { 3026 | -webkit-transform: translateY(0); 3027 | transform: translateY(0); 3028 | } 3029 | } 3030 | 3031 | .slideInUp { 3032 | -webkit-animation-name: slideInUp; 3033 | animation-name: slideInUp; 3034 | } 3035 | 3036 | @-webkit-keyframes slideOutDown { 3037 | 0% { 3038 | -webkit-transform: translateY(0); 3039 | transform: translateY(0); 3040 | } 3041 | 3042 | 100% { 3043 | visibility: hidden; 3044 | -webkit-transform: translateY(100%); 3045 | transform: translateY(100%); 3046 | } 3047 | } 3048 | 3049 | @keyframes slideOutDown { 3050 | 0% { 3051 | -webkit-transform: translateY(0); 3052 | transform: translateY(0); 3053 | } 3054 | 3055 | 100% { 3056 | visibility: hidden; 3057 | -webkit-transform: translateY(100%); 3058 | transform: translateY(100%); 3059 | } 3060 | } 3061 | 3062 | .slideOutDown { 3063 | -webkit-animation-name: slideOutDown; 3064 | animation-name: slideOutDown; 3065 | } 3066 | 3067 | @-webkit-keyframes slideOutLeft { 3068 | 0% { 3069 | -webkit-transform: translateX(0); 3070 | transform: translateX(0); 3071 | } 3072 | 3073 | 100% { 3074 | visibility: hidden; 3075 | -webkit-transform: translateX(-100%); 3076 | transform: translateX(-100%); 3077 | } 3078 | } 3079 | 3080 | @keyframes slideOutLeft { 3081 | 0% { 3082 | -webkit-transform: translateX(0); 3083 | transform: translateX(0); 3084 | } 3085 | 3086 | 100% { 3087 | visibility: hidden; 3088 | -webkit-transform: translateX(-100%); 3089 | transform: translateX(-100%); 3090 | } 3091 | } 3092 | 3093 | .slideOutLeft { 3094 | -webkit-animation-name: slideOutLeft; 3095 | animation-name: slideOutLeft; 3096 | } 3097 | 3098 | @-webkit-keyframes slideOutRight { 3099 | 0% { 3100 | -webkit-transform: translateX(0); 3101 | transform: translateX(0); 3102 | } 3103 | 3104 | 100% { 3105 | visibility: hidden; 3106 | -webkit-transform: translateX(100%); 3107 | transform: translateX(100%); 3108 | } 3109 | } 3110 | 3111 | @keyframes slideOutRight { 3112 | 0% { 3113 | -webkit-transform: translateX(0); 3114 | transform: translateX(0); 3115 | } 3116 | 3117 | 100% { 3118 | visibility: hidden; 3119 | -webkit-transform: translateX(100%); 3120 | transform: translateX(100%); 3121 | } 3122 | } 3123 | 3124 | .slideOutRight { 3125 | -webkit-animation-name: slideOutRight; 3126 | animation-name: slideOutRight; 3127 | } 3128 | 3129 | @-webkit-keyframes slideOutUp { 3130 | 0% { 3131 | -webkit-transform: translateY(0); 3132 | transform: translateY(0); 3133 | } 3134 | 3135 | 100% { 3136 | visibility: hidden; 3137 | -webkit-transform: translateY(-100%); 3138 | transform: translateY(-100%); 3139 | } 3140 | } 3141 | 3142 | @keyframes slideOutUp { 3143 | 0% { 3144 | -webkit-transform: translateY(0); 3145 | transform: translateY(0); 3146 | } 3147 | 3148 | 100% { 3149 | visibility: hidden; 3150 | -webkit-transform: translateY(-100%); 3151 | transform: translateY(-100%); 3152 | } 3153 | } 3154 | 3155 | .slideOutUp { 3156 | -webkit-animation-name: slideOutUp; 3157 | animation-name: slideOutUp; 3158 | } 3159 | --------------------------------------------------------------------------------