1/* Material Design for Bootstrap 2www.mdbootstrap.com */ 3 4 5/* 61. Waves 72. Buttons 83. Velocity 94. Global 105. Dropdown 116. Jquery easing 127. Carousel 138. Collapsible 149. Tooltip (initialization) 15 16*/ 17 18 19 20 21 22 23/* COLLAPSIBLE */ 24 25(function ($) { 26 27 /* TOOLTIP */ 28 29 $(document).ready(function(){ 30 $('[data-toggle="tooltip"]').tooltip({animation: true, delay: {show: 300, hide: 300}}); 31 }); 32 33 34 $.fn.collapsible = function(options) { 35 var defaults = { 36 accordion: undefined 37 }; 38 39 options = $.extend(defaults, options); 40 41 42 return this.each(function() { 43 44 var $this = $(this); 45 46 var $panel_headers = $(this).find('> li > .collapsible-header'); 47 48 var collapsible_type = $this.data("collapsible"); 49 50 // Turn off any existing event handlers 51 $this.off('click.collapse', '.collapsible-header'); 52 $panel_headers.off('click.collapse'); 53 54 55 /**************** 56 Helper Functions 57 ****************/ 58 59 // Accordion Open 60 function accordionOpen(object) { 61 $panel_headers = $this.find('> li > .collapsible-header'); 62 if (object.hasClass('active')) { 63 object.parent().addClass('active'); 64 } 65 else { 66 object.parent().removeClass('active'); 67 } 68 if (object.parent().hasClass('active')){ 69 object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); 70 } 71 else{ 72 object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); 73 } 74 75 $panel_headers.not(object).removeClass('active').parent().removeClass('active'); 76 $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).slideUp( 77 { 78 duration: 350, 79 easing: "easeOutQuart", 80 queue: false, 81 complete: 82 function() { 83 $(this).css('height', ''); 84 } 85 }); 86 } 87 88 // Expandable Open 89 function expandableOpen(object) { 90 if (object.hasClass('active')) { 91 object.parent().addClass('active'); 92 } 93 else { 94 object.parent().removeClass('active'); 95 } 96 if (object.parent().hasClass('active')){ 97 object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); 98 } 99 else{ 100 object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); 101 } 102 } 103 104 /** 105 * Check if object is children of panel header 106 * @param {Object} object Jquery object 107 * @return {Boolean} true if it is children 108 */ 109 function isChildrenOfPanelHeader(object) { 110 111 var panelHeader = getPanelHeader(object); 112 113 return panelHeader.length > 0; 114 } 115 116 /** 117 * Get panel header from a children element 118 * @param {Object} object Jquery object 119 * @return {Object} panel header object 120 */ 121 function getPanelHeader(object) { 122 123 return object.closest('li > .collapsible-header'); 124 } 125 126 /***** End Helper Functions *****/ 127 128 129 130 if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion 131 // Add click handler to only direct collapsible header children 132 $panel_headers = $this.find('> li > .collapsible-header'); 133 $panel_headers.on('click.collapse', function (e) { 134 var element = $(e.target); 135 136 if (isChildrenOfPanelHeader(element)) { 137 element = getPanelHeader(element); 138 } 139 140 element.toggleClass('active'); 141 accordionOpen(element); 142 }); 143 // Open first active 144 accordionOpen($panel_headers.filter('.active').first()); 145 } 146 else { // Handle Expandables 147 $panel_headers.each(function () { 148 // Add click handler to only direct collapsible header children 149 $(this).on('click.collapse', function (e) { 150 var element = $(e.target); 151 if (isChildrenOfPanelHeader(element)) { 152 element = getPanelHeader(element); 153 } 154 element.toggleClass('active'); 155 expandableOpen(element); 156 }); 157 // Open any bodies that have the active class 158 if ($(this).hasClass('active')) { 159 expandableOpen($(this)); 160 } 161 162 }); 163 } 164 165 }); 166 }; 167 168 $(document).ready(function(){ 169 $('.collapsible').collapsible(); 170 }); 171}( jQuery )); 172 173 174 175(function($) { 176 /* CAROUSEL */ 177 178 var $myCarousel = $('#carousel-example-generic'); 179 180 // Initialize carousel
vendor: 4,735 bytes, lines 181-318
181 $myCarousel.carousel(); 182 183 function doAnimations(elems) { 184 var animEndEv = 'webkitAnimationEnd animationend'; 185 186 elems.each(function () { 187 var $this = $(this), 188 $animationType = $this.data('animation'); 189 190 // Add animate.css classes to 191 // the elements to be animated 192 // Remove animate.css classes 193 // once the animation event has ended 194 $this.addClass($animationType).one(animEndEv, function () { 195 $this.removeClass($animationType); 196 }); 197 }); 198 } 199 200 // Select the elements to be animated 201 // in the first slide on page load 202 var $firstAnimatingElems = $myCarousel.find('.item:first') 203 .find('[data-animation ^= "animated"]'); 204 205 // Apply the animation using our function 206 doAnimations($firstAnimatingElems); 207 208 // Pause the carousel 209 $myCarousel.carousel('pause'); 210 211 // Attach our doAnimations() function to the 212 // carousel's slide.bs.carousel event 213 $myCarousel.on('slide.bs.carousel', function (e) { 214 // Select the elements to be animated inside the active slide 215 var $animatingElems = $(e.relatedTarget) 216 .find("[data-animation ^= 'animated']"); 217 doAnimations($animatingElems); 218 }); 219})( jQuery ); 220 221 222 223/* JQUERY EASING 1.3 */ 224 225/* 226 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 227 * 228 * Uses the built in easing capabilities added In jQuery 1.1 229 * to offer multiple easing options 230 * 231 * TERMS OF USE - jQuery Easing 232 * 233 * Open source under the BSD License. 234 * 235 * Copyright © 2008 George McGinley Smith 236 * All rights reserved. 237 * 238 * Redistribution and use in source and binary forms, with or without modification, 239 * are permitted provided that the following conditions are met: 240 * 241 * Redistributions of source code must retain the above copyright notice, this list of 242 * conditions and the following disclaimer. 243 * Redistributions in binary form must reproduce the above copyright notice, this list 244 * of conditions and the following disclaimer in the documentation and/or other materials 245 * provided with the distribution. 246 * 247 * Neither the name of the author nor the names of contributors may be used to endorse 248 * or promote products derived from this software without specific prior written permission. 249 * 250 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 251 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 252 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 253 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 254 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 255 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 256 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 257 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 258 * OF THE POSSIBILITY OF SUCH DAMAGE. 259 * 260*/ 261 262// t: current time, b: begInnIng value, c: change In value, d: duration 263jQuery.easing['jswing'] = jQuery.easing['swing']; 264 265jQuery.extend( jQuery.easing, 266{ 267 def: 'easeOutQuad', 268 swing: function (x, t, b, c, d) { 269 //alert(jQuery.easing.default); 270 return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 271 }, 272 easeInQuad: function (x, t, b, c, d) { 273 return c*(t/=d)*t + b; 274 }, 275 easeOutQuad: function (x, t, b, c, d) { 276 return -c *(t/=d)*(t-2) + b; 277 }, 278 easeInOutQuad: function (x, t, b, c, d) { 279 if ((t/=d/2) < 1) return c/2*t*t + b; 280 return -c/2 * ((--t)*(t-2) - 1) + b; 281 }, 282 easeInCubic: function (x, t, b, c, d) { 283 return c*(t/=d)*t*t + b; 284 }, 285 easeOutCubic: function (x, t, b, c, d) { 286 return c*((t=t/d-1)*t*t + 1) + b; 287 }, 288 easeInOutCubic: function (x, t, b, c, d) { 289 if ((t/=d/2) < 1) return c/2*t*t*t + b; 290 return c/2*((t-=2)*t*t + 2) + b; 291 }, 292 easeInQuart: function (x, t, b, c, d) { 293 return c*(t/=d)*t*t*t + b; 294 }, 295 easeOutQuart: function (x, t, b, c, d) { 296 return -c * ((t=t/d-1)*t*t*t - 1) + b; 297 }, 298 easeInOutQuart: function (x, t, b, c, d) { 299 if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 300 return -c/2 * ((t-=2)*t*t*t - 2) + b; 301 }, 302 easeInQuint: function (x, t, b, c, d) { 303 return c*(t/=d)*t*t*t*t + b; 304 }, 305 easeOutQuint: function (x, t, b, c, d) { 306 return c*((t=t/d-1)*t*t*t*t + 1) + b; 307 }, 308 easeInOutQuint: function (x, t, b, c, d) { 309 if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 310 return c/2*((t-=2)*t*t*t*t + 2) + b; 311 }, 312 easeInSine: function (x, t, b, c, d) { 313 return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 314 }, 315 easeOutSine: function (x, t, b, c, d) { 316 return c * Math.sin(t/d * (Math.PI/2)) + b; 317 }, 318 easeInOutSine: function (x, t, b, c, d) {
vendor: 4,172 bytes, lines 319-422
319 return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 320 }, 321 easeInExpo: function (x, t, b, c, d) { 322 return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 323 }, 324 easeOutExpo: function (x, t, b, c, d) { 325 return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 326 }, 327 easeInOutExpo: function (x, t, b, c, d) { 328 if (t==0) return b; 329 if (t==d) return b+c; 330 if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 331 return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 332 }, 333 easeInCirc: function (x, t, b, c, d) { 334 return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 335 }, 336 easeOutCirc: function (x, t, b, c, d) { 337 return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 338 }, 339 easeInOutCirc: function (x, t, b, c, d) { 340 if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 341 return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 342 }, 343 easeInElastic: function (x, t, b, c, d) { 344 var s=1.70158;var p=0;var a=c; 345 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 346 if (a < Math.abs(c)) { a=c; var s=p/4; } 347 else var s = p/(2*Math.PI) * Math.asin (c/a); 348 return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 349 }, 350 easeOutElastic: function (x, t, b, c, d) { 351 var s=1.70158;var p=0;var a=c; 352 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 353 if (a < Math.abs(c)) { a=c; var s=p/4; } 354 else var s = p/(2*Math.PI) * Math.asin (c/a); 355 return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 356 }, 357 easeInOutElastic: function (x, t, b, c, d) { 358 var s=1.70158;var p=0;var a=c; 359 if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 360 if (a < Math.abs(c)) { a=c; var s=p/4; } 361 else var s = p/(2*Math.PI) * Math.asin (c/a); 362 if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 363 return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 364 }, 365 easeInBack: function (x, t, b, c, d, s) { 366 if (s == undefined) s = 1.70158; 367 return c*(t/=d)*t*((s+1)*t - s) + b; 368 }, 369 easeOutBack: function (x, t, b, c, d, s) { 370 if (s == undefined) s = 1.70158; 371 return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 372 }, 373 easeInOutBack: function (x, t, b, c, d, s) { 374 if (s == undefined) s = 1.70158; 375 if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 376 return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 377 }, 378 easeInBounce: function (x, t, b, c, d) { 379 return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 380 }, 381 easeOutBounce: function (x, t, b, c, d) { 382 if ((t/=d) < (1/2.75)) { 383 return c*(7.5625*t*t) + b; 384 } else if (t < (2/2.75)) { 385 return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 386 } else if (t < (2.5/2.75)) { 387 return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 388 } else { 389 return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 390 } 391 }, 392 easeInOutBounce: function (x, t, b, c, d) { 393 if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 394 return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 395 } 396}); 397 398/* 399 * 400 * TERMS OF USE - EASING EQUATIONS 401 * 402 * Open source under the BSD License. 403 * 404 * Copyright © 2001 Robert Penner 405 * All rights reserved. 406 * 407 * Redistribution and use in source and binary forms, with or without modification, 408 * are permitted provided that the following conditions are met: 409 * 410 * Redistributions of source code must retain the above copyright notice, this list of 411 * conditions and the following disclaimer. 412 * Redistributions in binary form must reproduce the above copyright notice, this list 413 * of conditions and the following disclaimer in the documentation and/or other materials 414 * provided with the distribution. 415 * 416 * Neither the name of the author nor the names of contributors may be used to endorse 417 * or promote products derived from this software without specific prior written permission. 418 * 419 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 420 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 421 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 422 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
423 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 424 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 425 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 426 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 427 * OF THE POSSIBILITY OF SUCH DAMAGE. 428 * 429 */ 430 431 432 433/* DROPDOWN */ 434 435(function ($) { 436 437 // Add posibility to scroll to selected option 438 // usefull for select for example 439 $.fn.scrollTo = function(elem) { 440 $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); 441 return this; 442 }; 443 444 $.fn.dropdown = function (option) { 445 var defaults = { 446 inDuration: 300, 447 outDuration: 225, 448 constrain_width: true, // Constrains width of dropdown to the activator 449 hover: false, 450 gutter: 0, // Spacing from edge 451 belowOrigin: false 452 }; 453 454 this.each(function(){ 455 var origin = $(this); 456 var options = $.extend({}, defaults, option); 457 458 // Dropdown menu 459 var activates = $("#"+ origin.attr('data-activates')); 460 461 function updateOptions() { 462 if (origin.data('induration') !== undefined) 463 options.inDuration = origin.data('inDuration'); 464 if (origin.data('outduration') !== undefined) 465 options.outDuration = origin.data('outDuration'); 466 if (origin.data('constrainwidth') !== undefined) 467 options.constrain_width = origin.data('constrainwidth'); 468 if (origin.data('hover') !== undefined) 469 options.hover = origin.data('hover'); 470 if (origin.data('gutter') !== undefined) 471 options.gutter = origin.data('gutter'); 472 if (origin.data('beloworigin') !== undefined) 473 options.belowOrigin = origin.data('beloworigin'); 474 } 475 476 updateOptions(); 477 478 // Attach dropdown to its activator 479 origin.after(activates); 480 481 /* 482 Helper function to position and resize dropdown. 483 Used in hover and click handler. 484 */ 485 function placeDropdown() { 486 // Check html data attributes 487 updateOptions(); 488 489 // Set Dropdown state 490 activates.addClass('active'); 491 492 // Constrain width 493 if (options.constrain_width === true) { 494 activates.css('width', origin.outerWidth()); 495 } 496 var offset = 0; 497 if (options.belowOrigin === true) { 498 offset = origin.height(); 499 } 500 501 // Handle edge alignment 502 var offsetLeft = origin.offset().left; 503 var width_difference = 0; 504 var gutter_spacing = options.gutter; 505 506 507 if (offsetLeft + activates.innerWidth() > $(window).width()) { 508 width_difference = origin.innerWidth() - activates.innerWidth(); 509 gutter_spacing = gutter_spacing * -1; 510 } 511 512 // Position dropdown 513 activates.css({ 514 position: 'absolute', 515 top: origin.position().top + offset, 516 left: origin.position().left + width_difference + gutter_spacing 517 }); 518 519 520 521 // Show dropdown 522 activates.stop(true, true).css('opacity', 0) 523 .slideDown({ 524 queue: false, 525 duration: options.inDuration, 526 easing: 'easeOutCubic', 527 complete: function() { 528 $(this).css('height', ''); 529 } 530 }) 531 .animate( {opacity: 1}, {queue: false, duration: options.inDuration, easing: 'easeOutSine'}); 532 } 533 534 function hideDropdown() { 535 activates.fadeOut(options.outDuration); 536 activates.removeClass('active'); 537 } 538 539 // Hover 540 if (options.hover) { 541 var open = false; 542 origin.unbind('click.' + origin.attr('id')); 543 // Hover handler to show dropdown 544 origin.on('mouseenter', function(e){ // Mouse over 545 if (open === false) { 546 placeDropdown(); 547 open = true; 548 } 549 }); 550 origin.on('mouseleave', function(e){ 551 // If hover on origin then to something other than dropdown content, then close 552 var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element 553 if(!$(toEl).closest('.dropdown-content').is(activates)) { 554 activates.stop(true, true); 555 hideDropdown(); 556 open = false;
vendor: 63,049 bytes, lines 557-1729
557 } 558 }); 559 560 activates.on('mouseleave', function(e){ // Mouse out 561 var toEl = e.toElement || e.relatedTarget; 562 if(!$(toEl).closest('.dropdown-button').is(origin)) { 563 activates.stop(true, true); 564 hideDropdown(); 565 open = false; 566 } 567 }); 568 569 // Click 570 } else { 571 572 // Click handler to show dropdown 573 origin.unbind('click.' + origin.attr('id')); 574 origin.bind('click.'+origin.attr('id'), function(e){ 575 576 if ( origin[0] == e.currentTarget && ($(e.target).closest('.dropdown-content').length === 0) ) { 577 e.preventDefault(); // Prevents button click from moving window 578 placeDropdown(); 579 580 } 581 // If origin is clicked and menu is open, close menu 582 else { 583 if (origin.hasClass('active')) { 584 hideDropdown(); 585 $(document).unbind('click.' + activates.attr('id')); 586 } 587 } 588 // If menu open, add click close handler to document 589 if (activates.hasClass('active')) { 590 $(document).bind('click.'+ activates.attr('id'), function (e) { 591 if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length > 0) ) { 592 hideDropdown(); 593 $(document).unbind('click.' + activates.attr('id')); 594 } 595 }); 596 } 597 }); 598 599 } // End else 600 601 // Listen to open and close event - useful for select component 602 origin.on('open', placeDropdown); 603 origin.on('close', hideDropdown); 604 605 606 }); 607 }; // End dropdown plugin 608 609 $(document).ready(function(){ 610 $('.dropdown-button').dropdown(); 611 }); 612}( jQuery )); 613 614 615 616/* GLOBAL */ 617 618Materialize = {}; 619 620// Unique ID 621Materialize.guid = (function() { 622 function s4() { 623 return Math.floor((1 + Math.random()) * 0x10000) 624 .toString(16) 625 .substring(1); 626 } 627 return function() { 628 return s4() + s4() + '-' + s4() + '-' + s4() + '-' + 629 s4() + '-' + s4() + s4() + s4(); 630 }; 631})(); 632 633Materialize.elementOrParentIsFixed = function(element) { 634 var $element = $(element); 635 var $checkElements = $element.add($element.parents()); 636 var isFixed = false; 637 $checkElements.each(function(){ 638 if ($(this).css("position") === "fixed") { 639 isFixed = true; 640 return false; 641 } 642 }); 643 return isFixed; 644}; 645 646// Velocity has conflicts when loaded with jQuery, this will check for it 647/*var Vel; 648if ($) { 649 Vel = $.Velocity; 650} 651else { 652 Vel = Velocity; 653}*/ 654 655 656/*! VelocityJS.org (1.2.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ 657/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ 658! function (e) { 659 function t(e) { 660 var t = e.length, 661 r = $.type(e); 662 return "function" === r || $.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === r || 0 === t || "number" == typeof t && t > 0 && t - 1 in e 663 } 664 if (!e.jQuery) { 665 var $ = function (e, t) { 666 return new $.fn.init(e, t) 667 }; 668 $.isWindow = function (e) { 669 return null != e && e == e.window 670 }, $.type = function (e) { 671 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? a[o.call(e)] || "object" : typeof e 672 }, $.isArray = Array.isArray || function (e) { 673 return "array" === $.type(e) 674 }, $.isPlainObject = function (e) { 675 var t; 676 if (!e || "object" !== $.type(e) || e.nodeType || $.isWindow(e)) return !1; 677 try { 678 if (e.constructor && !n.call(e, "constructor") && !n.call(e.constructor.prototype, "isPrototypeOf")) return !1 679 } catch (r) { 680 return !1 681 } 682 for (t in e); 683 return void 0 === t || n.call(e, t) 684 }, $.each = function (e, r, a) { 685 var n, o = 0, 686 i = e.length, 687 s = t(e); 688 if (a) { 689 if (s) 690 for (; i > o && (n = r.apply(e[o], a), n !== !1); o++); 691 else 692 for (o in e) 693 if (n = r.apply(e[o], a), n === !1) break 694 } else if (s) 695 for (; i > o && (n = r.call(e[o], o, e[o]), n !== !1); o++); 696 else 697 for (o in e) 698 if (n = r.call(e[o], o, e[o]), n === !1) break; return e 699 }, $.data = function (e, t, a) { 700 if (void 0 === a) { 701 var n = e[$.expando], 702 o = n && r[n]; 703 if (void 0 === t) return o; 704 if (o && t in o) return o[t] 705 } else if (void 0 !== t) { 706 var n = e[$.expando] || (e[$.expando] = ++$.uuid); 707 return r[n] = r[n] || {}, r[n][t] = a, a 708 } 709 }, $.removeData = function (e, t) { 710 var a = e[$.expando], 711 n = a && r[a]; 712 n && $.each(t, function (e, t) { 713 delete n[t] 714 }) 715 }, $.extend = function () { 716 var e, t, r, a, n, o, i = arguments[0] || {}, 717 s = 1, 718 l = arguments.length, 719 u = !1; 720 for ("boolean" == typeof i && (u = i, i = arguments[s] || {}, s++), "object" != typeof i && "function" !== $.type(i) && (i = {}), s === l && (i = this, s--); l > s; s++) 721 if (null != (n = arguments[s])) 722 for (a in n) e = i[a], r = n[a], i !== r && (u && r && ($.isPlainObject(r) || (t = $.isArray(r))) ? (t ? (t = !1, o = e && $.isArray(e) ? e : []) : o = e && $.isPlainObject(e) ? e : {}, i[a] = $.extend(u, o, r)) : void 0 !== r && (i[a] = r)); 723 return i 724 }, $.queue = function (e, r, a) { 725 function n(e, r) { 726 var a = r || []; 727 return null != e && (t(Object(e)) ? ! function (e, t) { 728 for (var r = +t.length, a = 0, n = e.length; r > a;) e[n++] = t[a++]; 729 if (r !== r) 730 for (; void 0 !== t[a];) e[n++] = t[a++]; 731 return e.length = n, e 732 }(a, "string" == typeof e ? [e] : e) : [].push.call(a, e)), a 733 } 734 if (e) { 735 r = (r || "fx") + "queue"; 736 var o = $.data(e, r); 737 return a ? (!o || $.isArray(a) ? o = $.data(e, r, n(a)) : o.push(a), o) : o || [] 738 } 739 }, $.dequeue = function (e, t) { 740 $.each(e.nodeType ? [e] : e, function (e, r) { 741 t = t || "fx"; 742 var a = $.queue(r, t), 743 n = a.shift(); 744 "inprogress" === n && (n = a.shift()), n && ("fx" === t && a.unshift("inprogress"), n.call(r, function () { 745 $.dequeue(r, t) 746 })) 747 }) 748 }, $.fn = $.prototype = { 749 init: function (e) { 750 if (e.nodeType) return this[0] = e, this; 751 throw new Error("Not a DOM node.") 752 }, 753 offset: function () { 754 var t = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { 755 top: 0, 756 left: 0 757 }; 758 return { 759 top: t.top + (e.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), 760 left: t.left + (e.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) 761 } 762 }, 763 position: function () { 764 function e() { 765 for (var e = this.offsetParent || document; e && "html" === !e.nodeType.toLowerCase && "static" === e.style.position;) e = e.offsetParent; 766 return e || document 767 } 768 var t = this[0], 769 e = e.apply(t), 770 r = this.offset(), 771 a = /^(?:body|html)$/i.test(e.nodeName) ? { 772 top: 0, 773 left: 0 774 } : $(e).offset(); 775 return r.top -= parseFloat(t.style.marginTop) || 0, r.left -= parseFloat(t.style.marginLeft) || 0, e.style && (a.top += parseFloat(e.style.borderTopWidth) || 0, a.left += parseFloat(e.style.borderLeftWidth) || 0), { 776 top: r.top - a.top, 777 left: r.left - a.left 778 } 779 } 780 }; 781 var r = {}; 782 $.expando = "velocity" + (new Date).getTime(), $.uuid = 0; 783 for (var a = {}, n = a.hasOwnProperty, o = a.toString, i = "Boolean Number String Function Array Date RegExp Object Error".split(" "), s = 0; s < i.length; s++) a["[object " + i[s] + "]"] = i[s].toLowerCase(); 784 $.fn.init.prototype = $.fn, e.Velocity = { 785 Utilities: $ 786 } 787 } 788}(window), 789function (e) { 790 "object" == typeof module && "object" == typeof module.exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : e() 791}(function () { 792 return function (e, t, r, a) { 793 function n(e) { 794 for (var t = -1, r = e ? e.length : 0, a = []; ++t < r;) { 795 var n = e[t]; 796 n && a.push(n) 797 } 798 return a 799 } 800 801 function o(e) { 802 return g.isWrapped(e) ? e = [].slice.call(e) : g.isNode(e) && (e = [e]), e 803 } 804 805 function i(e) { 806 var t = $.data(e, "velocity"); 807 return null === t ? a : t 808 } 809 810 function s(e) { 811 return function (t) { 812 return Math.round(t * e) * (1 / e) 813 } 814 } 815 816 function l(e, r, a, n) { 817 function o(e, t) { 818 return 1 - 3 * t + 3 * e 819 } 820 821 function i(e, t) { 822 return 3 * t - 6 * e 823 } 824 825 function s(e) { 826 return 3 * e 827 } 828 829 function l(e, t, r) { 830 return ((o(t, r) * e + i(t, r)) * e + s(t)) * e 831 } 832 833 function u(e, t, r) { 834 return 3 * o(t, r) * e * e + 2 * i(t, r) * e + s(t) 835 } 836 837 function c(t, r) { 838 for (var n = 0; m > n; ++n) { 839 var o = u(r, e, a); 840 if (0 === o) return r; 841 var i = l(r, e, a) - t; 842 r -= i / o 843 } 844 return r 845 } 846 847 function p() { 848 for (var t = 0; b > t; ++t) w[t] = l(t * x, e, a) 849 } 850 851 function f(t, r, n) { 852 var o, i, s = 0; 853 do i = r + (n - r) / 2, o = l(i, e, a) - t, o > 0 ? n = i : r = i; while (Math.abs(o) > h && ++s < v); 854 return i 855 } 856 857 function d(t) { 858 for (var r = 0, n = 1, o = b - 1; n != o && w[n] <= t; ++n) r += x; 859 --n; 860 var i = (t - w[n]) / (w[n + 1] - w[n]), 861 s = r + i * x, 862 l = u(s, e, a); 863 return l >= y ? c(t, s) : 0 == l ? s : f(t, r, r + x) 864 } 865 866 function g() { 867 V = !0, (e != r || a != n) && p() 868 } 869 var m = 4, 870 y = .001, 871 h = 1e-7, 872 v = 10, 873 b = 11, 874 x = 1 / (b - 1), 875 S = "Float32Array" in t; 876 if (4 !== arguments.length) return !1; 877 for (var P = 0; 4 > P; ++P) 878 if ("number" != typeof arguments[P] || isNaN(arguments[P]) || !isFinite(arguments[P])) return !1; 879 e = Math.min(e, 1), a = Math.min(a, 1), e = Math.max(e, 0), a = Math.max(a, 0); 880 var w = S ? new Float32Array(b) : new Array(b), 881 V = !1, 882 C = function (t) { 883 return V || g(), e === r && a === n ? t : 0 === t ? 0 : 1 === t ? 1 : l(d(t), r, n) 884 }; 885 C.getControlPoints = function () { 886 return [{ 887 x: e, 888 y: r 889 }, { 890 x: a, 891 y: n 892 }] 893 }; 894 var T = "generateBezier(" + [e, r, a, n] + ")"; 895 return C.toString = function () { 896 return T 897 }, C 898 } 899 900 function u(e, t) { 901 var r = e; 902 return g.isString(e) ? v.Easings[e] || (r = !1) : r = g.isArray(e) && 1 === e.length ? s.apply(null, e) : g.isArray(e) && 2 === e.length ? b.apply(null, e.concat([t])) : g.isArray(e) && 4 === e.length ? l.apply(null, e) : !1, r === !1 && (r = v.Easings[v.defaults.easing] ? v.defaults.easing : h), r 903 } 904 905 function c(e) { 906 if (e) { 907 var t = (new Date).getTime(), 908 r = v.State.calls.length; 909 r > 1e4 && (v.State.calls = n(v.State.calls)); 910 for (var o = 0; r > o; o++) 911 if (v.State.calls[o]) { 912 var s = v.State.calls[o], 913 l = s[0], 914 u = s[2], 915 f = s[3], 916 d = !!f, 917 m = null; 918 f || (f = v.State.calls[o][3] = t - 16); 919 for (var y = Math.min((t - f) / u.duration, 1), h = 0, b = l.length; b > h; h++) { 920 var S = l[h], 921 w = S.element; 922 if (i(w)) { 923 var V = !1; 924 if (u.display !== a && null !== u.display && "none" !== u.display) { 925 if ("flex" === u.display) { 926 var C = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"]; 927 $.each(C, function (e, t) { 928 x.setPropertyValue(w, "display", t) 929 }) 930 } 931 x.setPropertyValue(w, "display", u.display) 932 } 933 u.visibility !== a && "hidden" !== u.visibility && x.setPropertyValue(w, "visibility", u.visibility); 934 for (var T in S) 935 if ("element" !== T) { 936 var k = S[T], 937 A, F = g.isString(k.easing) ? v.Easings[k.easing] : k.easing; 938 if (1 === y) A = k.endValue; 939 else { 940 var E = k.endValue - k.startValue; 941 if (A = k.startValue + E * F(y, u, E), !d && A === k.currentValue) continue 942 } 943 if (k.currentValue = A, "tween" === T) m = A; 944 else { 945 if (x.Hooks.registered[T]) { 946 var j = x.Hooks.getRoot(T), 947 H = i(w).rootPropertyValueCache[j]; 948 H && (k.rootPropertyValue = H) 949 } 950 var N = x.setPropertyValue(w, T, k.currentValue + (0 === parseFloat(A) ? "" : k.unitType), k.rootPropertyValue, k.scrollData); 951 x.Hooks.registered[T] && (i(w).rootPropertyValueCache[j] = x.Normalizations.registered[j] ? x.Normalizations.registered[j]("extract", null, N[1]) : N[1]), "transform" === N[0] && (V = !0) 952 } 953 } 954 u.mobileHA && i(w).transformCache.translate3d === a && (i(w).transformCache.translate3d = "(0px, 0px, 0px)", V = !0), V && x.flushTransformCache(w) 955 } 956 } 957 u.display !== a && "none" !== u.display && (v.State.calls[o][2].display = !1), u.visibility !== a && "hidden" !== u.visibility && (v.State.calls[o][2].visibility = !1), u.progress && u.progress.call(s[1], s[1], y, Math.max(0, f + u.duration - t), f, m), 1 === y && p(o) 958 } 959 } 960 v.State.isTicking && P(c) 961 } 962 963 function p(e, t) { 964 if (!v.State.calls[e]) return !1; 965 for (var r = v.State.calls[e][0], n = v.State.calls[e][1], o = v.State.calls[e][2], s = v.State.calls[e][4], l = !1, u = 0, c = r.length; c > u; u++) { 966 var p = r[u].element; 967 if (t || o.loop || ("none" === o.display && x.setPropertyValue(p, "display", o.display), "hidden" === o.visibility && x.setPropertyValue(p, "visibility", o.visibility)), o.loop !== !0 && ($.queue(p)[1] === a || !/\.velocityQueueEntryFlag/i.test($.queue(p)[1])) && i(p)) { 968 i(p).isAnimating = !1, i(p).rootPropertyValueCache = {}; 969 var f = !1; 970 $.each(x.Lists.transforms3D, function (e, t) { 971 var r = /^scale/.test(t) ? 1 : 0, 972 n = i(p).transformCache[t]; 973 i(p).transformCache[t] !== a && new RegExp("^\\(" + r + "[^.]").test(n) && (f = !0, delete i(p).transformCache[t]) 974 }), o.mobileHA && (f = !0, delete i(p).transformCache.translate3d), f && x.flushTransformCache(p), x.Values.removeClass(p, "velocity-animating") 975 } 976 if (!t && o.complete && !o.loop && u === c - 1) try { 977 o.complete.call(n, n) 978 } catch (d) { 979 setTimeout(function () { 980 throw d 981 }, 1) 982 } 983 s && o.loop !== !0 && s(n), i(p) && o.loop === !0 && !t && ($.each(i(p).tweensContainer, function (e, t) { 984 /^rotate/.test(e) && 360 === parseFloat(t.endValue) && (t.endValue = 0, t.startValue = 360), /^backgroundPosition/.test(e) && 100 === parseFloat(t.endValue) && "%" === t.unitType && (t.endValue = 0, t.startValue = 100) 985 }), v(p, "reverse", { 986 loop: !0, 987 delay: o.delay 988 })), o.queue !== !1 && $.dequeue(p, o.queue) 989 } 990 v.State.calls[e] = !1; 991 for (var g = 0, m = v.State.calls.length; m > g; g++) 992 if (v.State.calls[g] !== !1) { 993 l = !0; 994 break 995 } 996 l === !1 && (v.State.isTicking = !1, delete v.State.calls, v.State.calls = []) 997 } 998 var f = function () { 999 if (r.documentMode) return r.documentMode; 1000 for (var e = 7; e > 4; e--) { 1001 var t = r.createElement("div"); 1002 if (t.innerHTML = "<!--[if IE " + e + "]><span></span><![endif]-->", t.getElementsByTagName("span").length) return t = null, e 1003 } 1004 return a 1005 }(), 1006 d = function () { 1007 var e = 0; 1008 return t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || function (t) { 1009 var r = (new Date).getTime(), 1010 a; 1011 return a = Math.max(0, 16 - (r - e)), e = r + a, setTimeout(function () { 1012 t(r + a) 1013 }, a) 1014 } 1015 }(), 1016 g = { 1017 isString: function (e) { 1018 return "string" == typeof e 1019 }, 1020 isArray: Array.isArray || function (e) { 1021 return "[object Array]" === Object.prototype.toString.call(e) 1022 }, 1023 isFunction: function (e) { 1024 return "[object Function]" === Object.prototype.toString.call(e) 1025 }, 1026 isNode: function (e) { 1027 return e && e.nodeType 1028 }, 1029 isNodeList: function (e) { 1030 return "object" == typeof e && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e)) && e.length !== a && (0 === e.length || "object" == typeof e[0] && e[0].nodeType > 0) 1031 }, 1032 isWrapped: function (e) { 1033 return e && (e.jquery || t.Zepto && t.Zepto.zepto.isZ(e)) 1034 }, 1035 isSVG: function (e) { 1036 return t.SVGElement && e instanceof t.SVGElement 1037 }, 1038 isEmptyObject: function (e) { 1039 for (var t in e) return !1; 1040 return !0 1041 } 1042 }, 1043 $, m = !1; 1044 if (e.fn && e.fn.jquery ? ($ = e, m = !0) : $ = t.Velocity.Utilities, 8 >= f && !m) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity."); 1045 if (7 >= f) return void(jQuery.fn.velocity = jQuery.fn.animate); 1046 var y = 400, 1047 h = "swing", 1048 v = { 1049 State: { 1050 isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), 1051 isAndroid: /Android/i.test(navigator.userAgent), 1052 isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), 1053 isChrome: t.chrome, 1054 isFirefox: /Firefox/i.test(navigator.userAgent), 1055 prefixElement: r.createElement("div"), 1056 prefixMatches: {}, 1057 scrollAnchor: null, 1058 scrollPropertyLeft: null, 1059 scrollPropertyTop: null, 1060 isTicking: !1, 1061 calls: [] 1062 }, 1063 CSS: {}, 1064 Utilities: $, 1065 Redirects: {}, 1066 Easings: {}, 1067 Promise: t.Promise, 1068 defaults: { 1069 queue: "", 1070 duration: y, 1071 easing: h, 1072 begin: a, 1073 complete: a, 1074 progress: a, 1075 display: a, 1076 visibility: a, 1077 loop: !1, 1078 delay: !1, 1079 mobileHA: !0, 1080 _cacheValues: !0 1081 }, 1082 init: function (e) { 1083 $.data(e, "velocity", { 1084 isSVG: g.isSVG(e), 1085 isAnimating: !1, 1086 computedStyle: null, 1087 tweensContainer: null, 1088 rootPropertyValueCache: {}, 1089 transformCache: {} 1090 }) 1091 }, 1092 hook: null, 1093 mock: !1, 1094 version: { 1095 major: 1, 1096 minor: 2, 1097 patch: 2 1098 }, 1099 debug: !1 1100 }; 1101 t.pageYOffset !== a ? (v.State.scrollAnchor = t, v.State.scrollPropertyLeft = "pageXOffset", v.State.scrollPropertyTop = "pageYOffset") : (v.State.scrollAnchor = r.documentElement || r.body.parentNode || r.body, v.State.scrollPropertyLeft = "scrollLeft", v.State.scrollPropertyTop = "scrollTop"); 1102 var b = function () { 1103 function e(e) { 1104 return -e.tension * e.x - e.friction * e.v 1105 } 1106 1107 function t(t, r, a) { 1108 var n = { 1109 x: t.x + a.dx * r, 1110 v: t.v + a.dv * r, 1111 tension: t.tension, 1112 friction: t.friction 1113 }; 1114 return { 1115 dx: n.v, 1116 dv: e(n) 1117 } 1118 } 1119 1120 function r(r, a) { 1121 var n = { 1122 dx: r.v, 1123 dv: e(r) 1124 }, 1125 o = t(r, .5 * a, n), 1126 i = t(r, .5 * a, o), 1127 s = t(r, a, i), 1128 l = 1 / 6 * (n.dx + 2 * (o.dx + i.dx) + s.dx), 1129 u = 1 / 6 * (n.dv + 2 * (o.dv + i.dv) + s.dv); 1130 return r.x = r.x + l * a, r.v = r.v + u * a, r 1131 } 1132 return function a(e, t, n) { 1133 var o = { 1134 x: -1, 1135 v: 0, 1136 tension: null, 1137 friction: null 1138 }, 1139 i = [0], 1140 s = 0, 1141 l = 1e-4, 1142 u = .016, 1143 c, p, f; 1144 for (e = parseFloat(e) || 500, t = parseFloat(t) || 20, n = n || null, o.tension = e, o.friction = t, c = null !== n, c ? (s = a(e, t), p = s / n * u) : p = u;;) 1145 if (f = r(f || o, p), i.push(1 + f.x), s += 16, !(Math.abs(f.x) > l && Math.abs(f.v) > l)) break; 1146 return c ? function (e) { 1147 return i[e * (i.length - 1) | 0] 1148 } : s 1149 } 1150 }(); 1151 v.Easings = { 1152 linear: function (e) { 1153 return e 1154 }, 1155 swing: function (e) { 1156 return .5 - Math.cos(e * Math.PI) / 2 1157 }, 1158 spring: function (e) { 1159 return 1 - Math.cos(4.5 * e * Math.PI) * Math.exp(6 * -e) 1160 } 1161 }, $.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (e, t) { 1162 v.Easings[t[0]] = l.apply(null, t[1]) 1163 }); 1164 var x = v.CSS = { 1165 RegEx: { 1166 isHex: /^#([A-f\d]{3}){1,2}$/i, 1167 valueUnwrap: /^[A-z]+\((.*)\)$/i, 1168 wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, 1169 valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi 1170 }, 1171 Lists: { 1172 colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], 1173 transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], 1174 transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] 1175 }, 1176 Hooks: { 1177 templates: { 1178 textShadow: ["Color X Y Blur", "black 0px 0px 0px"], 1179 boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], 1180 clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], 1181 backgroundPosition: ["X Y", "0% 0%"], 1182 transformOrigin: ["X Y Z", "50% 50% 0px"], 1183 perspectiveOrigin: ["X Y", "50% 50%"] 1184 }, 1185 registered: {}, 1186 register: function () { 1187 for (var e = 0; e < x.Lists.colors.length; e++) { 1188 var t = "color" === x.Lists.colors[e] ? "0 0 0 1" : "255 255 255 1"; 1189 x.Hooks.templates[x.Lists.colors[e]] = ["Red Green Blue Alpha", t] 1190 } 1191 var r, a, n; 1192 if (f) 1193 for (r in x.Hooks.templates) { 1194 a = x.Hooks.templates[r], n = a[0].split(" "); 1195 var o = a[1].match(x.RegEx.valueSplit); 1196 "Color" === n[0] && (n.push(n.shift()), o.push(o.shift()), x.Hooks.templates[r] = [n.join(" "), o.join(" ")]) 1197 } 1198 for (r in x.Hooks.templates) { 1199 a = x.Hooks.templates[r], n = a[0].split(" "); 1200 for (var e in n) { 1201 var i = r + n[e], 1202 s = e; 1203 x.Hooks.registered[i] = [r, s] 1204 } 1205 } 1206 }, 1207 getRoot: function (e) { 1208 var t = x.Hooks.registered[e]; 1209 return t ? t[0] : e 1210 }, 1211 cleanRootPropertyValue: function (e, t) { 1212 return x.RegEx.valueUnwrap.test(t) && (t = t.match(x.RegEx.valueUnwrap)[1]), x.Values.isCSSNullValue(t) && (t = x.Hooks.templates[e][1]), t 1213 }, 1214 extractValue: function (e, t) { 1215 var r = x.Hooks.registered[e]; 1216 if (r) { 1217 var a = r[0], 1218 n = r[1]; 1219 return t = x.Hooks.cleanRootPropertyValue(a, t), t.toString().match(x.RegEx.valueSplit)[n] 1220 } 1221 return t 1222 }, 1223 injectValue: function (e, t, r) { 1224 var a = x.Hooks.registered[e]; 1225 if (a) { 1226 var n = a[0], 1227 o = a[1], 1228 i, s; 1229 return r = x.Hooks.cleanRootPropertyValue(n, r), i = r.toString().match(x.RegEx.valueSplit), i[o] = t, s = i.join(" ") 1230 } 1231 return r 1232 } 1233 }, 1234 Normalizations: { 1235 registered: { 1236 clip: function (e, t, r) { 1237 switch (e) { 1238 case "name": 1239 return "clip"; 1240 case "extract": 1241 var a; 1242 return x.RegEx.wrappedValueAlreadyExtracted.test(r) ? a = r : (a = r.toString().match(x.RegEx.valueUnwrap), a = a ? a[1].replace(/,(\s+)?/g, " ") : r), a; 1243 case "inject": 1244 return "rect(" + r + ")" 1245 } 1246 }, 1247 blur: function (e, t, r) { 1248 switch (e) { 1249 case "name": 1250 return v.State.isFirefox ? "filter" : "-webkit-filter"; 1251 case "extract": 1252 var a = parseFloat(r); 1253 if (!a && 0 !== a) { 1254 var n = r.toString().match(/blur\(([0-9]+[A-z]+)\)/i); 1255 a = n ? n[1] : 0 1256 } 1257 return a; 1258 case "inject": 1259 return parseFloat(r) ? "blur(" + r + ")" : "none" 1260 } 1261 }, 1262 opacity: function (e, t, r) { 1263 if (8 >= f) switch (e) { 1264 case "name": 1265 return "filter"; 1266 case "extract": 1267 var a = r.toString().match(/alpha\(opacity=(.*)\)/i); 1268 return r = a ? a[1] / 100 : 1; 1269 case "inject": 1270 return t.style.zoom = 1, parseFloat(r) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(r), 10) + ")" 1271 } else switch (e) { 1272 case "name": 1273 return "opacity"; 1274 case "extract": 1275 return r; 1276 case "inject": 1277 return r 1278 } 1279 } 1280 }, 1281 register: function () { 1282 9 >= f || v.State.isGingerbread || (x.Lists.transformsBase = x.Lists.transformsBase.concat(x.Lists.transforms3D)); 1283 for (var e = 0; e < x.Lists.transformsBase.length; e++) ! function () { 1284 var t = x.Lists.transformsBase[e]; 1285 x.Normalizations.registered[t] = function (e, r, n) { 1286 switch (e) { 1287 case "name": 1288 return "transform"; 1289 case "extract": 1290 return i(r) === a || i(r).transformCache[t] === a ? /^scale/i.test(t) ? 1 : 0 : i(r).transformCache[t].replace(/[()]/g, ""); 1291 case "inject": 1292 var o = !1; 1293 switch (t.substr(0, t.length - 1)) { 1294 case "translate": 1295 o = !/(%|px|em|rem|vw|vh|\d)$/i.test(n); 1296 break; 1297 case "scal": 1298 case "scale": 1299 v.State.isAndroid && i(r).transformCache[t] === a && 1 > n && (n = 1), o = !/(\d)$/i.test(n); 1300 break; 1301 case "skew": 1302 o = !/(deg|\d)$/i.test(n); 1303 break; 1304 case "rotate": 1305 o = !/(deg|\d)$/i.test(n) 1306 } 1307 return o || (i(r).transformCache[t] = "(" + n + ")"), i(r).transformCache[t] 1308 } 1309 } 1310 }(); 1311 for (var e = 0; e < x.Lists.colors.length; e++) ! function () { 1312 var t = x.Lists.colors[e]; 1313 x.Normalizations.registered[t] = function (e, r, n) { 1314 switch (e) { 1315 case "name": 1316 return t; 1317 case "extract": 1318 var o; 1319 if (x.RegEx.wrappedValueAlreadyExtracted.test(n)) o = n; 1320 else { 1321 var i, s = { 1322 black: "rgb(0, 0, 0)", 1323 blue: "rgb(0, 0, 255)", 1324 gray: "rgb(128, 128, 128)", 1325 green: "rgb(0, 128, 0)", 1326 red: "rgb(255, 0, 0)", 1327 white: "rgb(255, 255, 255)" 1328 }; 1329 /^[A-z]+$/i.test(n) ? i = s[n] !== a ? s[n] : s.black : x.RegEx.isHex.test(n) ? i = "rgb(" + x.Values.hexToRgb(n).join(" ") + ")" : /^rgba?\(/i.test(n) || (i = s.black), o = (i || n).toString().match(x.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " ") 1330 } 1331 return 8 >= f || 3 !== o.split(" ").length || (o += " 1"), o; 1332 case "inject": 1333 return 8 >= f ? 4 === n.split(" ").length && (n = n.split(/\s+/).slice(0, 3).join(" ")) : 3 === n.split(" ").length && (n += " 1"), (8 >= f ? "rgb" : "rgba") + "(" + n.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")" 1334 } 1335 } 1336 }() 1337 } 1338 }, 1339 Names: { 1340 camelCase: function (e) { 1341 return e.replace(/-(\w)/g, function (e, t) { 1342 return t.toUpperCase() 1343 }) 1344 }, 1345 SVGAttribute: function (e) { 1346 var t = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; 1347 return (f || v.State.isAndroid && !v.State.isChrome) && (t += "|transform"), new RegExp("^(" + t + ")$", "i").test(e) 1348 }, 1349 prefixCheck: function (e) { 1350 if (v.State.prefixMatches[e]) return [v.State.prefixMatches[e], !0]; 1351 for (var t = ["", "Webkit", "Moz", "ms", "O"], r = 0, a = t.length; a > r; r++) { 1352 var n; 1353 if (n = 0 === r ? e : t[r] + e.replace(/^\w/, function (e) { 1354 return e.toUpperCase() 1355 }), g.isString(v.State.prefixElement.style[n])) return v.State.prefixMatches[e] = n, [n, !0] 1356 } 1357 return [e, !1] 1358 } 1359 }, 1360 Values: { 1361 hexToRgb: function (e) { 1362 var t = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, 1363 r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, 1364 a; 1365 return e = e.replace(t, function (e, t, r, a) { 1366 return t + t + r + r + a + a 1367 }), a = r.exec(e), a ? [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16)] : [0, 0, 0] 1368 }, 1369 isCSSNullValue: function (e) { 1370 return 0 == e || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e) 1371 }, 1372 getUnitType: function (e) { 1373 return /^(rotate|skew)/i.test(e) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e) ? "" : "px" 1374 }, 1375 getDisplayType: function (e) { 1376 var t = e && e.tagName.toString().toLowerCase(); 1377 return /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t) ? "inline" : /^(li)$/i.test(t) ? "list-item" : /^(tr)$/i.test(t) ? "table-row" : /^(table)$/i.test(t) ? "table" : /^(tbody)$/i.test(t) ? "table-row-group" : "block" 1378 }, 1379 addClass: function (e, t) { 1380 e.classList ? e.classList.add(t) : e.className += (e.className.length ? " " : "") + t 1381 }, 1382 removeClass: function (e, t) { 1383 e.classList ? e.classList.remove(t) : e.className = e.className.toString().replace(new RegExp("(^|\\s)" + t.split(" ").join("|") + "(\\s|$)", "gi"), " ") 1384 } 1385 }, 1386 getPropertyValue: function (e, r, n, o) { 1387 function s(e, r) { 1388 function n() { 1389 u && x.setPropertyValue(e, "display", "none") 1390 } 1391 var l = 0; 1392 if (8 >= f) l = $.css(e, r); 1393 else { 1394 var u = !1; 1395 if (/^(width|height)$/.test(r) && 0 === x.getPropertyValue(e, "display") && (u = !0, x.setPropertyValue(e, "display", x.Values.getDisplayType(e))), !o) { 1396 if ("height" === r && "border-box" !== x.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { 1397 var c = e.offsetHeight - (parseFloat(x.getPropertyValue(e, "borderTopWidth")) || 0) - (parseFloat(x.getPropertyValue(e, "borderBottomWidth")) || 0) - (parseFloat(x.getPropertyValue(e, "paddingTop")) || 0) - (parseFloat(x.getPropertyValue(e, "paddingBottom")) || 0); 1398 return n(), c 1399 } 1400 if ("width" === r && "border-box" !== x.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { 1401 var p = e.offsetWidth - (parseFloat(x.getPropertyValue(e, "borderLeftWidth")) || 0) - (parseFloat(x.getPropertyValue(e, "borderRightWidth")) || 0) - (parseFloat(x.getPropertyValue(e, "paddingLeft")) || 0) - (parseFloat(x.getPropertyValue(e, "paddingRight")) || 0); 1402 return n(), p 1403 } 1404 } 1405 var d; 1406 d = i(e) === a ? t.getComputedStyle(e, null) : i(e).computedStyle ? i(e).computedStyle : i(e).computedStyle = t.getComputedStyle(e, null), "borderColor" === r && (r = "borderTopColor"), l = 9 === f && "filter" === r ? d.getPropertyValue(r) : d[r], ("" === l || null === l) && (l = e.style[r]), n() 1407 } 1408 if ("auto" === l && /^(top|right|bottom|left)$/i.test(r)) { 1409 var g = s(e, "position"); 1410 ("fixed" === g || "absolute" === g && /top|left/i.test(r)) && (l = $(e).position()[r] + "px") 1411 } 1412 return l 1413 } 1414 var l; 1415 if (x.Hooks.registered[r]) { 1416 var u = r, 1417 c = x.Hooks.getRoot(u); 1418 n === a && (n = x.getPropertyValue(e, x.Names.prefixCheck(c)[0])), x.Normalizations.registered[c] && (n = x.Normalizations.registered[c]("extract", e, n)), l = x.Hooks.extractValue(u, n) 1419 } else if (x.Normalizations.registered[r]) { 1420 var p, d; 1421 p = x.Normalizations.registered[r]("name", e), "transform" !== p && (d = s(e, x.Names.prefixCheck(p)[0]), x.Values.isCSSNullValue(d) && x.Hooks.templates[r] && (d = x.Hooks.templates[r][1])), l = x.Normalizations.registered[r]("extract", e, d) 1422 } 1423 if (!/^[\d-]/.test(l)) 1424 if (i(e) && i(e).isSVG && x.Names.SVGAttribute(r)) 1425 if (/^(height|width)$/i.test(r)) try { 1426 l = e.getBBox()[r] 1427 } catch (g) { 1428 l = 0 1429 } else l = e.getAttribute(r); 1430 else l = s(e, x.Names.prefixCheck(r)[0]); 1431 return x.Values.isCSSNullValue(l) && (l = 0), v.debug >= 2 && console.log("Get " + r + ": " + l), l 1432 }, 1433 setPropertyValue: function (e, r, a, n, o) { 1434 var s = r; 1435 if ("scroll" === r) o.container ? o.container["scroll" + o.direction] = a : "Left" === o.direction ? t.scrollTo(a, o.alternateValue) : t.scrollTo(o.alternateValue, a); 1436 else if (x.Normalizations.registered[r] && "transform" === x.Normalizations.registered[r]("name", e)) x.Normalizations.registered[r]("inject", e, a), s = "transform", a = i(e).transformCache[r]; 1437 else { 1438 if (x.Hooks.registered[r]) { 1439 var l = r, 1440 u = x.Hooks.getRoot(r); 1441 n = n || x.getPropertyValue(e, u), a = x.Hooks.injectValue(l, a, n), r = u 1442 } 1443 if (x.Normalizations.registered[r] && (a = x.Normalizations.registered[r]("inject", e, a), r = x.Normalizations.registered[r]("name", e)), s = x.Names.prefixCheck(r)[0], 8 >= f) try { 1444 e.style[s] = a 1445 } catch (c) { 1446 v.debug && console.log("Browser does not support [" + a + "] for [" + s + "]") 1447 } else i(e) && i(e).isSVG && x.Names.SVGAttribute(r) ? e.setAttribute(r, a) : e.style[s] = a; 1448 v.debug >= 2 && console.log("Set " + r + " (" + s + "): " + a) 1449 } 1450 return [s, a] 1451 }, 1452 flushTransformCache: function (e) { 1453 function t(t) { 1454 return parseFloat(x.getPropertyValue(e, t)) 1455 } 1456 var r = ""; 1457 if ((f || v.State.isAndroid && !v.State.isChrome) && i(e).isSVG) { 1458 var a = { 1459 translate: [t("translateX"), t("translateY")], 1460 skewX: [t("skewX")], 1461 skewY: [t("skewY")], 1462 scale: 1 !== t("scale") ? [t("scale"), t("scale")] : [t("scaleX"), t("scaleY")], 1463 rotate: [t("rotateZ"), 0, 0] 1464 }; 1465 $.each(i(e).transformCache, function (e) { 1466 /^translate/i.test(e) ? e = "translate" : /^scale/i.test(e) ? e = "scale" : /^rotate/i.test(e) && (e = "rotate"), a[e] && (r += e + "(" + a[e].join(" ") + ") ", delete a[e]) 1467 }) 1468 } else { 1469 var n, o; 1470 $.each(i(e).transformCache, function (t) { 1471 return n = i(e).transformCache[t], "transformPerspective" === t ? (o = n, !0) : (9 === f && "rotateZ" === t && (t = "rotate"), void(r += t + n + " ")) 1472 }), o && (r = "perspective" + o + " " + r) 1473 } 1474 x.setPropertyValue(e, "transform", r) 1475 } 1476 }; 1477 x.Hooks.register(), x.Normalizations.register(), v.hook = function (e, t, r) { 1478 var n = a; 1479 return e = o(e), $.each(e, function (e, o) { 1480 if (i(o) === a && v.init(o), r === a) n === a && (n = v.CSS.getPropertyValue(o, t)); 1481 else { 1482 var s = v.CSS.setPropertyValue(o, t, r); 1483 "transform" === s[0] && v.CSS.flushTransformCache(o), n = s 1484 } 1485 }), n 1486 }; 1487 var S = function () { 1488 function e() { 1489 return l ? T.promise || null : f 1490 } 1491 1492 function n() { 1493 function e(e) { 1494 function p(e, t) { 1495 var r = a, 1496 i = a, 1497 s = a; 1498 return g.isArray(e) ? (r = e[0], !g.isArray(e[1]) && /^[\d-]/.test(e[1]) || g.isFunction(e[1]) || x.RegEx.isHex.test(e[1]) ? s = e[1] : (g.isString(e[1]) && !x.RegEx.isHex.test(e[1]) || g.isArray(e[1])) && (i = t ? e[1] : u(e[1], o.duration), e[2] !== a && (s = e[2]))) : r = e, t || (i = i || o.easing), g.isFunction(r) && (r = r.call(n, w, P)), g.isFunction(s) && (s = s.call(n, w, P)), [r || 0, i, s] 1499 } 1500 1501 function f(e, t) { 1502 var r, a; 1503 return a = (t || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (e) { 1504 return r = e, "" 1505 }), r || (r = x.Values.getUnitType(e)), [a, r] 1506 } 1507 1508 function d() { 1509 var e = { 1510 myParent: n.parentNode || r.body, 1511 position: x.getPropertyValue(n, "position"), 1512 fontSize: x.getPropertyValue(n, "fontSize") 1513 }, 1514 a = e.position === N.lastPosition && e.myParent === N.lastParent, 1515 o = e.fontSize === N.lastFontSize; 1516 N.lastParent = e.myParent, N.lastPosition = e.position, N.lastFontSize = e.fontSize; 1517 var s = 100, 1518 l = {}; 1519 if (o && a) l.emToPx = N.lastEmToPx, l.percentToPxWidth = N.lastPercentToPxWidth, l.percentToPxHeight = N.lastPercentToPxHeight; 1520 else { 1521 var u = i(n).isSVG ? r.createElementNS("http://www.w3.org/2000/svg", "rect") : r.createElement("div"); 1522 v.init(u), e.myParent.appendChild(u), $.each(["overflow", "overflowX", "overflowY"], function (e, t) { 1523 v.CSS.setPropertyValue(u, t, "hidden") 1524 }), v.CSS.setPropertyValue(u, "position", e.position), v.CSS.setPropertyValue(u, "fontSize", e.fontSize), v.CSS.setPropertyValue(u, "boxSizing", "content-box"), $.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (e, t) { 1525 v.CSS.setPropertyValue(u, t, s + "%") 1526 }), v.CSS.setPropertyValue(u, "paddingLeft", s + "em"), l.percentToPxWidth = N.lastPercentToPxWidth = (parseFloat(x.getPropertyValue(u, "width", null, !0)) || 1) / s, l.percentToPxHeight = N.lastPercentToPxHeight = (parseFloat(x.getPropertyValue(u, "height", null, !0)) || 1) / s, l.emToPx = N.lastEmToPx = (parseFloat(x.getPropertyValue(u, "paddingLeft")) || 1) / s, e.myParent.removeChild(u) 1527 } 1528 return null === N.remToPx && (N.remToPx = parseFloat(x.getPropertyValue(r.body, "fontSize")) || 16), null === N.vwToPx && (N.vwToPx = parseFloat(t.innerWidth) / 100, N.vhToPx = parseFloat(t.innerHeight) / 100), l.remToPx = N.remToPx, l.vwToPx = N.vwToPx, l.vhToPx = N.vhToPx, v.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(l), n), l 1529 } 1530 if (o.begin && 0 === w) try { 1531 o.begin.call(m, m) 1532 } catch (y) { 1533 setTimeout(function () { 1534 throw y 1535 }, 1) 1536 } 1537 if ("scroll" === k) { 1538 var S = /^x$/i.test(o.axis) ? "Left" : "Top", 1539 V = parseFloat(o.offset) || 0, 1540 C, A, F; 1541 o.container ? g.isWrapped(o.container) || g.isNode(o.container) ? (o.container = o.container[0] || o.container, C = o.container["scroll" + S], F = C + $(n).position()[S.toLowerCase()] + V) : o.container = null : (C = v.State.scrollAnchor[v.State["scrollProperty" + S]], A = v.State.scrollAnchor[v.State["scrollProperty" + ("Left" === S ? "Top" : "Left")]], F = $(n).offset()[S.toLowerCase()] + V), s = { 1542 scroll: { 1543 rootPropertyValue: !1, 1544 startValue: C, 1545 currentValue: C, 1546 endValue: F, 1547 unitType: "", 1548 easing: o.easing, 1549 scrollData: { 1550 container: o.container, 1551 direction: S, 1552 alternateValue: A 1553 } 1554 }, 1555 element: n 1556 }, v.debug && console.log("tweensContainer (scroll): ", s.scroll, n) 1557 } else if ("reverse" === k) { 1558 if (!i(n).tweensContainer) return void $.dequeue(n, o.queue); 1559 "none" === i(n).opts.display && (i(n).opts.display = "auto"), "hidden" === i(n).opts.visibility && (i(n).opts.visibility = "visible"), i(n).opts.loop = !1, i(n).opts.begin = null, i(n).opts.complete = null, b.easing || delete o.easing, b.duration || delete o.duration, o = $.extend({}, i(n).opts, o); 1560 var E = $.extend(!0, {}, i(n).tweensContainer); 1561 for (var j in E) 1562 if ("element" !== j) { 1563 var H = E[j].startValue; 1564 E[j].startValue = E[j].currentValue = E[j].endValue, E[j].endValue = H, g.isEmptyObject(b) || (E[j].easing = o.easing), v.debug && console.log("reverse tweensContainer (" + j + "): " + JSON.stringify(E[j]), n) 1565 } 1566 s = E 1567 } else if ("start" === k) { 1568 var E; 1569 i(n).tweensContainer && i(n).isAnimating === !0 && (E = i(n).tweensContainer), $.each(h, function (e, t) { 1570 if (RegExp("^" + x.Lists.colors.join("$|^") + "$").test(e)) { 1571 var r = p(t, !0), 1572 n = r[0], 1573 o = r[1], 1574 i = r[2]; 1575 if (x.RegEx.isHex.test(n)) { 1576 for (var s = ["Red", "Green", "Blue"], l = x.Values.hexToRgb(n), u = i ? x.Values.hexToRgb(i) : a, c = 0; c < s.length; c++) { 1577 var f = [l[c]]; 1578 o && f.push(o), u !== a && f.push(u[c]), h[e + s[c]] = f 1579 } 1580 delete h[e] 1581 } 1582 } 1583 }); 1584 for (var R in h) { 1585 var O = p(h[R]), 1586 z = O[0], 1587 q = O[1], 1588 M = O[2]; 1589 R = x.Names.camelCase(R); 1590 var I = x.Hooks.getRoot(R), 1591 B = !1; 1592 if (i(n).isSVG || "tween" === I || x.Names.prefixCheck(I)[1] !== !1 || x.Normalizations.registered[I] !== a) { 1593 (o.display !== a && null !== o.display && "none" !== o.display || o.visibility !== a && "hidden" !== o.visibility) && /opacity|filter/.test(R) && !M && 0 !== z && (M = 0), o._cacheValues && E && E[R] ? (M === a && (M = E[R].endValue + E[R].unitType), B = i(n).rootPropertyValueCache[I]) : x.Hooks.registered[R] ? M === a ? (B = x.getPropertyValue(n, I), M = x.getPropertyValue(n, R, B)) : B = x.Hooks.templates[I][1] : M === a && (M = x.getPropertyValue(n, R)); 1594 var W, G, D, X = !1; 1595 if (W = f(R, M), M = W[0], D = W[1], W = f(R, z), z = W[0].replace(/^([+-\/*])=/, function (e, t) { 1596 return X = t, "" 1597 }), G = W[1], M = parseFloat(M) || 0, z = parseFloat(z) || 0, "%" === G && (/^(fontSize|lineHeight)$/.test(R) ? (z /= 100, G = "em") : /^scale/.test(R) ? (z /= 100, G = "") : /(Red|Green|Blue)$/i.test(R) && (z = z / 100 * 255, G = "")), /[\/*]/.test(X)) G = D; 1598 else if (D !== G && 0 !== M) 1599 if (0 === z) G = D; 1600 else { 1601 l = l || d(); 1602 var Y = /margin|padding|left|right|width|text|word|letter/i.test(R) || /X$/.test(R) || "x" === R ? "x" : "y"; 1603 switch (D) { 1604 case "%": 1605 M *= "x" === Y ? l.percentToPxWidth : l.percentToPxHeight; 1606 break; 1607 case "px": 1608 break; 1609 default: 1610 M *= l[D + "ToPx"] 1611 } 1612 switch (G) { 1613 case "%": 1614 M *= 1 / ("x" === Y ? l.percentToPxWidth : l.percentToPxHeight); 1615 break; 1616 case "px": 1617 break; 1618 default: 1619 M *= 1 / l[G + "ToPx"] 1620 } 1621 } 1622 switch (X) { 1623 case "+": 1624 z = M + z; 1625 break; 1626 case "-": 1627 z = M - z; 1628 break; 1629 case "*": 1630 z = M * z; 1631 break; 1632 case "/": 1633 z = M / z 1634 } 1635 s[R] = { 1636 rootPropertyValue: B, 1637 startValue: M, 1638 currentValue: M, 1639 endValue: z, 1640 unitType: G, 1641 easing: q 1642 }, v.debug && console.log("tweensContainer (" + R + "): " + JSON.stringify(s[R]), n) 1643 } else v.debug && console.log("Skipping [" + I + "] due to a lack of browser support.") 1644 } 1645 s.element = n 1646 } 1647 s.element && (x.Values.addClass(n, "velocity-animating"), L.push(s), "" === o.queue && (i(n).tweensContainer = s, i(n).opts = o), i(n).isAnimating = !0, w === P - 1 ? (v.State.calls.push([L, m, o, null, T.resolver]), v.State.isTicking === !1 && (v.State.isTicking = !0, c())) : w++) 1648 } 1649 var n = this, 1650 o = $.extend({}, v.defaults, b), 1651 s = {}, 1652 l; 1653 switch (i(n) === a && v.init(n), parseFloat(o.delay) && o.queue !== !1 && $.queue(n, o.queue, function (e) { 1654 v.velocityQueueEntryFlag = !0, i(n).delayTimer = { 1655 setTimeout: setTimeout(e, parseFloat(o.delay)), 1656 next: e 1657 } 1658 }), o.duration.toString().toLowerCase()) { 1659 case "fast": 1660 o.duration = 200; 1661 break; 1662 case "normal": 1663 o.duration = y; 1664 break; 1665 case "slow": 1666 o.duration = 600; 1667 break; 1668 default: 1669 o.duration = parseFloat(o.duration) || 1 1670 } 1671 v.mock !== !1 && (v.mock === !0 ? o.duration = o.delay = 1 : (o.duration *= parseFloat(v.mock) || 1, o.delay *= parseFloat(v.mock) || 1)), o.easing = u(o.easing, o.duration), o.begin && !g.isFunction(o.begin) && (o.begin = null), o.progress && !g.isFunction(o.progress) && (o.progress = null), o.complete && !g.isFunction(o.complete) && (o.complete = null), o.display !== a && null !== o.display && (o.display = o.display.toString().toLowerCase(), "auto" === o.display && (o.display = v.CSS.Values.getDisplayType(n))), o.visibility !== a && null !== o.visibility && (o.visibility = o.visibility.toString().toLowerCase()), o.mobileHA = o.mobileHA && v.State.isMobile && !v.State.isGingerbread, o.queue === !1 ? o.delay ? setTimeout(e, o.delay) : e() : $.queue(n, o.queue, function (t, r) { 1672 return r === !0 ? (T.promise && T.resolver(m), !0) : (v.velocityQueueEntryFlag = !0, void e(t)) 1673 }), "" !== o.queue && "fx" !== o.queue || "inprogress" === $.queue(n)[0] || $.dequeue(n) 1674 } 1675 var s = arguments[0] && (arguments[0].p || $.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || g.isString(arguments[0].properties)), 1676 l, f, d, m, h, b; 1677 if (g.isWrapped(this) ? (l = !1, d = 0, m = this, f = this) : (l = !0, d = 1, m = s ? arguments[0].elements || arguments[0].e : arguments[0]), m = o(m)) { 1678 s ? (h = arguments[0].properties || arguments[0].p, b = arguments[0].options || arguments[0].o) : (h = arguments[d], b = arguments[d + 1]); 1679 var P = m.length, 1680 w = 0; 1681 if (!/^(stop|finish)$/i.test(h) && !$.isPlainObject(b)) { 1682 var V = d + 1; 1683 b = {}; 1684 for (var C = V; C < arguments.length; C++) g.isArray(arguments[C]) || !/^(fast|normal|slow)$/i.test(arguments[C]) && !/^\d/.test(arguments[C]) ? g.isString(arguments[C]) || g.isArray(arguments[C]) ? b.easing = arguments[C] : g.isFunction(arguments[C]) && (b.complete = arguments[C]) : b.duration = arguments[C] 1685 } 1686 var T = { 1687 promise: null, 1688 resolver: null, 1689 rejecter: null 1690 }; 1691 l && v.Promise && (T.promise = new v.Promise(function (e, t) { 1692 T.resolver = e, T.rejecter = t 1693 })); 1694 var k; 1695 switch (h) { 1696 case "scroll": 1697 k = "scroll"; 1698 break; 1699 case "reverse": 1700 k = "reverse"; 1701 break; 1702 case "finish": 1703 case "stop": 1704 $.each(m, function (e, t) { 1705 i(t) && i(t).delayTimer && (clearTimeout(i(t).delayTimer.setTimeout), i(t).delayTimer.next && i(t).delayTimer.next(), delete i(t).delayTimer) 1706 }); 1707 var A = []; 1708 return $.each(v.State.calls, function (e, t) { 1709 t && $.each(t[1], function (r, n) { 1710 var o = b === a ? "" : b; 1711 return o === !0 || t[2].queue === o || b === a && t[2].queue === !1 ? void $.each(m, function (r, a) { 1712 a === n && ((b === !0 || g.isString(b)) && ($.each($.queue(a, g.isString(b) ? b : ""), function (e, t) { 1713 g.isFunction(t) && t(null, !0) 1714 }), $.queue(a, g.isString(b) ? b : "", [])), "stop" === h ? (i(a) && i(a).tweensContainer && o !== !1 && $.each(i(a).tweensContainer, function (e, t) { 1715 t.endValue = t.currentValue 1716 }), A.push(e)) : "finish" === h && (t[2].duration = 1)) 1717 }) : !0 1718 }) 1719 }), "stop" === h && ($.each(A, function (e, t) { 1720 p(t, !0) 1721 }), T.promise && T.resolver(m)), e(); 1722 default: 1723 if (!$.isPlainObject(h) || g.isEmptyObject(h)) { 1724 if (g.isString(h) && v.Redirects[h]) { 1725 var F = $.extend({}, b), 1726 E = F.duration, 1727 j = F.delay || 0; 1728 return F.backwards === !0 && (m = $.extend(!0, [], m).reverse()), $.each(m, function (e, t) { 1729 parseFloat(F.stagger) ? F.delay = j + parseFloat(F.stagger) * e : g.isFunction(F.stagger) && (F.delay
1729= j + F.stagger.call(t, e, P)), F.drag && (F.duration = parseFloat(E) || (/^(callout|transition)/.test(h) ? 1e3 : y), F.duration = Math.max(F.duration * (F.backwards ? 1 - e / P : (e + 1) / P), .75 * F.duration, 200)), v.Redirects[h].call(t, t, F || {}, e, P, m, T.promise ? T : a) 1730 }), e() 1731 } 1732 var H = "Velocity: First argument (" + h + ") was not a property map, a known action, or a registered redirect. Aborting."; 1733 return T.promise ? T.rejecter(new Error(H)) : console.log(H), e() 1734 } 1735 k = "start" 1736 } 1737 var N = { 1738 lastParent: null, 1739 lastPosition: null, 1740 lastFontSize: null, 1741 lastPercentToPxWidth: null, 1742 lastPercentToPxHeight: null, 1743 lastEmToPx: null, 1744 remToPx: null, 1745 vwToPx: null, 1746 vhToPx: null 1747 }, 1748 L = []; 1749 $.each(m, function (e, t) { 1750 g.isNode(t) && n.call(t) 1751 }); 1752 var F = $.extend({}, v.defaults, b), 1753 R; 1754 if (F.loop = parseInt(F.loop), R = 2 * F.loop - 1, F.loop) 1755 for (var O = 0; R > O; O++) { 1756 var z = { 1757 delay: F.delay, 1758 progress: F.progress 1759 }; 1760 O === R - 1 && (z.display = F.display, z.visibility = F.visibility, z.complete = F.complete), S(m, "reverse", z) 1761 } 1762 return e() 1763 } 1764 }; 1765 v = $.extend(S, v), v.animate = S; 1766 var P = t.requestAnimationFrame || d; 1767 return v.State.isMobile || r.hidden === a || r.addEventListener("visibilitychange", function () { 1768 r.hidden ? (P = function (e) { 1769 return setTimeout(function () { 1770 e(!0) 1771 }, 16) 1772 }, c()) : P = t.requestAnimationFrame || d 1773 }), e.Velocity = v, e !== t && (e.fn.velocity = S, e.fn.velocity.defaults = v.defaults), $.each(["Down", "Up"], function (e, t) { 1774 v.Redirects["slide" + t] = function (e, r, n, o, i, s) { 1775 var l = $.extend({}, r), 1776 u = l.begin, 1777 c = l.complete, 1778 p = { 1779 height: "", 1780 marginTop: "", 1781 marginBottom: "", 1782 paddingTop: "", 1783 paddingBottom: "" 1784 }, 1785 f = {}; 1786 l.display === a && (l.display = "Down" === t ? "inline" === v.CSS.Values.getDisplayType(e) ? "inline-block" : "block" : "none"), l.begin = function () { 1787 u && u.call(i, i); 1788 for (var r in p) { 1789 f[r] = e.style[r]; 1790 var a = v.CSS.getPropertyValue(e, r); 1791 p[r] = "Down" === t ? [a, 0] : [0, a] 1792 } 1793 f.overflow = e.style.overflow, e.style.overflow = "hidden" 1794 }, l.complete = function () { 1795 for (var t in f) e.style[t] = f[t]; 1796 c && c.call(i, i), s && s.resolver(i) 1797 }, v(e, p, l) 1798 } 1799 }), $.each(["In", "Out"], function (e, t) { 1800 v.Redirects["fade" + t] = function (e, r, n, o, i, s) { 1801 var l = $.extend({}, r), 1802 u = { 1803 opacity: "In" === t ? 1 : 0 1804 }, 1805 c = l.complete; 1806 l.complete = n !== o - 1 ? l.begin = null : function () { 1807 c && c.call(i, i), s && s.resolver(i) 1808 }, l.display === a && (l.display = "In" === t ? "auto" : "none"), v(this, u, l) 1809 } 1810 }), v 1811 }(window.jQuery || window.Zepto || window, window, document) 1812}); 1813 1814 1815 1816/* Buttons */ 1817 1818(function ($) { 1819 $(document).ready(function () { 1820 1821 // jQuery reverse 1822 $.fn.reverse = [].reverse; 1823 1824 $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn', function (e) { 1825 var $this = $(this); 1826 openFABMenu($this); 1827 1828 }); 1829 1830 $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn', function (e) { 1831 var $this = $(this); 1832 closeFABMenu($this); 1833 }); 1834 1835 }); 1836 1837 $.fn.extend({ 1838 openFAB: function () { 1839 var $this = $(this); 1840 openFABMenu($this); 1841 }, 1842 closeFAB: function () { 1843 closeFABMenu($this); 1844 } 1845 }); 1846 1847 1848 var openFABMenu = function (btn) { 1849 $this = btn; 1850 if ($this.hasClass('active') === false) { 1851 $this.addClass('active'); 1852 $this.find('ul .btn-floating').velocity({ 1853 scaleY: ".4", 1854 scaleX: ".4", 1855 translateY: "40px" 1856 }, { 1857 duration: 0 1858 }); 1859 1860 var time = 0; 1861 $this.find('ul .btn-floating').reverse().each(function () { 1862 $(this).velocity({ 1863 opacity: "1", 1864 scaleX: "1", 1865 scaleY: "1", 1866 translateY: "0" 1867 }, {
1868 duration: 80, 1869 delay: time 1870 }); 1871 time += 40; 1872 }); 1873 } 1874 }; 1875 1876 var closeFABMenu = function (btn) { 1877 $this = btn; 1878 $this.removeClass('active'); 1879 var time = 0; 1880 $this.find('ul .btn-floating').velocity("stop", true); 1881 $this.find('ul .btn-floating').velocity({ 1882 opacity: "0", 1883 scaleX: ".4", 1884 scaleY: ".4", 1885 translateY: "40px" 1886 }, { 1887 duration: 80 1888 }); 1889 }; 1890 1891 1892}(jQuery)); 1893 1894 1895 1896/*! 1897 * Waves v0.6.4 1898 * http://fian.my.id/Waves 1899 * 1900 * Copyright 2014 Alfiana E. Sibuea and other contributors 1901 * Released under the MIT license 1902 * https://github.com/fians/Waves/blob/master/LICENSE 1903 */ 1904 1905; 1906(function (window) { 1907 'use strict'; 1908 1909 var Waves = Waves || {}; 1910 var $$ = document.querySelectorAll.bind(document); 1911 1912 // Find exact position of element 1913 function isWindow(obj) { 1914 return obj !== null && obj === obj.window; 1915 } 1916 1917 function getWindow(elem) { 1918 return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; 1919 } 1920 1921 function offset(elem) { 1922 var docElem, win, 1923 box = { 1924 top: 0, 1925 left: 0 1926 }, 1927 doc = elem && elem.ownerDocument; 1928 1929 docElem = doc.documentElement; 1930 1931 if (typeof elem.getBoundingClientRect !== typeof undefined) { 1932 box = elem.getBoundingClientRect(); 1933 } 1934 win = getWindow(doc); 1935 return { 1936 top: box.top + win.pageYOffset - docElem.clientTop, 1937 left: box.left + win.pageXOffset - docElem.clientLeft 1938 }; 1939 } 1940 1941 function convertStyle(obj) { 1942 var style = ''; 1943 1944 for (var a in obj) { 1945 if (obj.hasOwnProperty(a)) { 1946 style += (a + ':' + obj[a] + ';'); 1947 } 1948 } 1949 1950 return style; 1951 } 1952 1953 var Effect = { 1954 1955 // Effect delay 1956 duration: 750, 1957 1958 show: function (e, element) { 1959 1960 // Disable right click 1961 if (e.button === 2) { 1962 return false; 1963 } 1964 1965 var el = element || this; 1966 1967 // Create ripple 1968 var ripple = document.createElement('div'); 1969 ripple.className = 'waves-ripple'; 1970 el.appendChild(ripple); 1971 1972 // Get click coordinate and element witdh 1973 var pos = offset(el); 1974 var relativeY = (e.pageY - pos.top); 1975 var relativeX = (e.pageX - pos.left); 1976 var scale = 'scale(' + ((el.clientWidth / 100) * 10) + ')'; 1977 1978 // Support for touch devices 1979 if ('touches' in e) { 1980 relativeY = (e.touches[0].pageY - pos.top); 1981 relativeX = (e.touches[0].pageX - pos.left); 1982 } 1983 1984 // Attach data to element 1985 ripple.setAttribute('data-hold', Date.now()); 1986 ripple.setAttribute('data-scale', scale); 1987 ripple.setAttribute('data-x', relativeX); 1988 ripple.setAttribute('data-y', relativeY); 1989 1990 // Set ripple position 1991 var rippleStyle = { 1992 'top': relativeY + 'px', 1993 'left': relativeX + 'px' 1994 }; 1995 1996 ripple.className = ripple.className + ' waves-notransition'; 1997 ripple.setAttribute('style', convertStyle(rippleStyle)); 1998 ripple.className = ripple.className.replace('waves-notransition', ''); 1999 2000 // Scale the ripple 2001 rippleStyle['-webkit-transform'] = scale; 2002 rippleStyle['-moz-transform'] = scale; 2003 rippleStyle['-ms-transform'] = scale;
vendor: 5,186 bytes, lines 2004-2137
2004 rippleStyle['-o-transform'] = scale; 2005 rippleStyle.transform = scale; 2006 rippleStyle.opacity = '1'; 2007 2008 rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; 2009 rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; 2010 rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; 2011 rippleStyle['transition-duration'] = Effect.duration + 'ms'; 2012 2013 rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; 2014 rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; 2015 rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; 2016 rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; 2017 2018 ripple.setAttribute('style', convertStyle(rippleStyle)); 2019 }, 2020 2021 hide: function (e) { 2022 TouchHandler.touchup(e); 2023 2024 var el = this; 2025 var width = el.clientWidth * 1.4; 2026 2027 // Get first ripple 2028 var ripple = null; 2029 var ripples = el.getElementsByClassName('waves-ripple'); 2030 if (ripples.length > 0) { 2031 ripple = ripples[ripples.length - 1]; 2032 } else { 2033 return false; 2034 } 2035 2036 var relativeX = ripple.getAttribute('data-x'); 2037 var relativeY = ripple.getAttribute('data-y'); 2038 var scale = ripple.getAttribute('data-scale'); 2039 2040 // Get delay beetween mousedown and mouse leave 2041 var diff = Date.now() - Number(ripple.getAttribute('data-hold')); 2042 var delay = 350 - diff; 2043 2044 if (delay < 0) { 2045 delay = 0; 2046 } 2047 2048 // Fade out ripple after delay 2049 setTimeout(function () { 2050 var style = { 2051 'top': relativeY + 'px', 2052 'left': relativeX + 'px', 2053 'opacity': '0', 2054 2055 // Duration 2056 '-webkit-transition-duration': Effect.duration + 'ms', 2057 '-moz-transition-duration': Effect.duration + 'ms', 2058 '-o-transition-duration': Effect.duration + 'ms', 2059 'transition-duration': Effect.duration + 'ms', 2060 '-webkit-transform': scale, 2061 '-moz-transform': scale, 2062 '-ms-transform': scale, 2063 '-o-transform': scale, 2064 'transform': scale, 2065 }; 2066 2067 ripple.setAttribute('style', convertStyle(style)); 2068 2069 setTimeout(function () { 2070 try { 2071 el.removeChild(ripple); 2072 } catch (e) { 2073 return false; 2074 } 2075 }, Effect.duration); 2076 }, delay); 2077 }, 2078 2079 // Little hack to make <input> can perform waves effect 2080 wrapInput: function (elements) { 2081 for (var a = 0; a < elements.length; a++) { 2082 var el = elements[a]; 2083 2084 if (el.tagName.toLowerCase() === 'input') { 2085 var parent = el.parentNode; 2086 2087 // If input already have parent just pass through 2088 if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { 2089 continue; 2090 } 2091 2092 // Put element class and style to the specified parent 2093 var wrapper = document.createElement('i'); 2094 wrapper.className = el.className + ' waves-input-wrapper'; 2095 2096 var elementStyle = el.getAttribute('style'); 2097 2098 if (!elementStyle) { 2099 elementStyle = ''; 2100 } 2101 2102 wrapper.setAttribute('style', elementStyle); 2103 2104 el.className = 'waves-button-input'; 2105 el.removeAttribute('style'); 2106 2107 // Put element as child 2108 parent.replaceChild(wrapper, el); 2109 wrapper.appendChild(el); 2110 } 2111 } 2112 } 2113 }; 2114 2115 2116 /** 2117 * Disable mousedown event for 500ms during and after touch 2118 */ 2119 var TouchHandler = { 2120 /* uses an integer rather than bool so there's no issues with 2121 * needing to clear timeouts if another touch event occurred 2122 * within the 500ms. Cannot mouseup between touchstart and 2123 * touchend, nor in the 500ms after touchend. */ 2124 touches: 0, 2125 allowEvent: function (e) { 2126 var allow = true; 2127 2128 if (e.type === 'touchstart') { 2129 TouchHandler.touches += 1; //push 2130 } else if (e.type === 'touchend' || e.type === 'touchcancel') { 2131 setTimeout(function () { 2132 if (TouchHandler.touches > 0) { 2133 TouchHandler.touches -= 1; //pop after 500ms 2134 } 2135 }, 500); 2136 } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { 2137 allow = false;
2138 } 2139 2140 return allow; 2141 }, 2142 touchup: function (e) { 2143 TouchHandler.allowEvent(e); 2144 } 2145 }; 2146 2147 2148 /** 2149 * Delegated click handler for .waves-effect element. 2150 * returns null when .waves-effect element not in "click tree" 2151 */ 2152 function getWavesEffectElement(e) { 2153 if (TouchHandler.allowEvent(e) === false) { 2154 return null; 2155 } 2156 2157 var element = null; 2158 var target = e.target || e.srcElement; 2159 2160 while (target.parentElement !== null) { 2161 if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { 2162 element = target; 2163 break; 2164 } else if (target.classList.contains('waves-effect')) { 2165 element = target; 2166 break; 2167 } 2168 target = target.parentElement; 2169 } 2170 2171 return element; 2172 } 2173 2174 /** 2175 * Bubble the click and show effect if .waves-effect elem was found 2176 */ 2177 function showEffect(e) { 2178 var element = getWavesEffectElement(e); 2179 2180 if (element !== null) {
vendor: 1,372 bytes, lines 2181-2219
2181 Effect.show(e, element); 2182 2183 if ('ontouchstart' in window) { 2184 element.addEventListener('touchend', Effect.hide, false); 2185 element.addEventListener('touchcancel', Effect.hide, false); 2186 } 2187 2188 element.addEventListener('mouseup', Effect.hide, false); 2189 element.addEventListener('mouseleave', Effect.hide, false); 2190 } 2191 } 2192 2193 Waves.displayEffect = function (options) { 2194 options = options || {}; 2195 2196 if ('duration' in options) { 2197 Effect.duration = options.duration; 2198 } 2199 2200 //Wrap input inside <i> tag 2201 Effect.wrapInput($$('.waves-effect')); 2202 2203 if ('ontouchstart' in window) { 2204 document.body.addEventListener('touchstart', showEffect, false); 2205 } 2206 2207 document.body.addEventListener('mousedown', showEffect, false); 2208 }; 2209 2210 /** 2211 * Attach Waves to an input element (or any element which doesn't 2212 * bubble mouseup/mousedown events). 2213 * Intended to be used with dynamically loaded forms/inputs, or 2214 * where the user doesn't want a delegated click handler. 2215 */ 2216 Waves.attach = function (element) { 2217 //FUTURE: automatically add waves classes and allow users 2218 // to specify them with an options param? Eg. light/classic/button 2219 if (element.tagName.toLowerCase() === 'input') {
2220 Effect.wrapInput([element]); 2221 element = element.parentElement; 2222 } 2223 2224 if ('ontouchstart' in window) { 2225 element.addEventListener('touchstart', showEffect, false); 2226 } 2227 2228 element.addEventListener('mousedown', showEffect, false); 2229 }; 2230 2231 window.Waves = Waves; 2232 2233 document.addEventListener('DOMContentLoaded', function () { 2234 Waves.displayEffect(); 2235 }, false); 2236 2237})(window);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.